Admin Panel

import logging
from amitools.vamos.trace import *
from amitools.vamos.label import *
from amitools.vamos.machine import *
from amitools.vamos.astructs import NodeStruct, LibraryStruct
from amitools.vamos.log import log_mem_int


def setup_tmem():
  machine = MockMachine()
  mem = machine.get_mem()
  lm = machine.get_label_mgr()
  tm = TraceManager(machine)
  lm.add_label(LabelRange("range", 0x100, 0x100))
  lm.add_label(LabelStruct("node", 0x200, NodeStruct))
  lm.add_label(LabelLib("fake.library", 0x320, 0x20,
                        LibraryStruct.get_size(), LibraryStruct))
  return TraceMemory(mem, tm)


def trace_mem_rw_test(caplog):
  caplog.set_level(logging.INFO)
  log_mem_int.setLevel(logging.INFO)
  tmem = setup_tmem()
  tmem.w8(0, 42)
  assert tmem.r8(0) == 42
  tmem.w16(2, 4711)
  assert tmem.r16(2) == 4711
  tmem.w32(4, 0xdeadbeef)
  assert tmem.r32(4) == 0xdeadbeef
  tmem.write(2, 8, 0xcafebabe)
  assert tmem.read(2, 8) == 0xcafebabe
  lvl = logging.INFO
  assert caplog.record_tuples == [
      ('mem_int', lvl, 'W(1): 000000: 2a                [??] '),
      ('mem_int', lvl, 'R(1): 000000: 2a                [??] '),
      ('mem_int', lvl, 'W(2): 000002: 1267              [??] '),
      ('mem_int', lvl, 'R(2): 000002: 1267              [??] '),
      ('mem_int', lvl, 'W(4): 000004: deadbeef          [??] '),
      ('mem_int', lvl, 'R(4): 000004: deadbeef          [??] '),
      ('mem_int', lvl, 'W(4): 000008: cafebabe          [??] '),
      ('mem_int', lvl, 'R(4): 000008: cafebabe          [??] ')
  ]


def trace_mem_rws_test(caplog):
  caplog.set_level(logging.INFO)
  log_mem_int.setLevel(logging.INFO)
  tmem = setup_tmem()
  tmem.w8s(0, -42)
  assert tmem.r8s(0) == -42
  tmem.w16s(2, -4711)
  assert tmem.r16s(2) == -4711
  tmem.w32s(4, -0x1eadbeef)
  assert tmem.r32s(4) == -0x1eadbeef
  tmem.writes(2, 8, -0x2afebabe)
  assert tmem.reads(2, 8) == -0x2afebabe
  lvl = logging.INFO
  assert caplog.record_tuples == [
      ('mem_int', lvl, 'W(1): 000000: -2a                [??] '),
      ('mem_int', lvl, 'R(1): 000000: -2a                [??] '),
      ('mem_int', lvl, 'W(2): 000002: -1267              [??] '),
      ('mem_int', lvl, 'R(2): 000002: -1267              [??] '),
      ('mem_int', lvl, 'W(4): 000004: -1eadbeef          [??] '),
      ('mem_int', lvl, 'R(4): 000004: -1eadbeef          [??] '),
      ('mem_int', lvl, 'W(4): 000008: -2afebabe          [??] '),
      ('mem_int', lvl, 'R(4): 000008: -2afebabe          [??] ')
  ]