use the INSTR environment variable instead of PREFIX

This commit is contained in:
2025-04-29 15:58:32 +02:00
parent d4b111ce6d
commit d81105551d
13 changed files with 202 additions and 184 deletions

View File

@ -5,7 +5,7 @@ on error break
require counterbox
epicsEnvSet("STREAM_PROTOCOL_PATH","./db")
epicsEnvSet("PREFIX","SQ:TEST")
epicsEnvSet("INSTR","SQ:TEST:")
epicsEnvSet("NAME","CB_TEST")
epicsEnvSet("SET_SIM_MODE","") # Run Counterbox Simulation Instead of Actual Box

View File

@ -40,53 +40,53 @@ def get_piped_output(proc):
return stdqueue, errqueue
def getState(prefix, name):
result = run(['caget', f'{prefix}:{name}:STATUS'], stdout=PIPE)
def getState(instr, name):
result = run(['caget', f'{instr}{name}:STATUS'], stdout=PIPE)
state = result.stdout.decode('ascii').rstrip().split()[1]
print(f'Currently in state {state}')
return state
def getCount(prefix, name, ch):
result = run(['caget', f'{prefix}:{name}:M{ch}'], stdout=PIPE)
def getCount(instr, name, ch):
result = run(['caget', f'{instr}{name}:M{ch}'], stdout=PIPE)
count = int(result.stdout.decode('ascii').rstrip().split()[1])
print(f'M{ch} == {count}')
return count
def presetTime(prefix, name, time):
def presetTime(instr, name, time):
print(f'Starting count for {time} seconds')
run(['caput', f'{prefix}:{name}:PRESET-TIME', f'{time}'])
run(['caput', f'{instr}{name}:PRESET-TIME', f'{time}'])
def presetCount(prefix, name, count):
def presetCount(instr, name, count):
print(f'Starting count until channel 1 reaches {count}')
run(['caput', f'{prefix}:{name}:PRESET-COUNT', f'{count}'])
run(['caput', f'{instr}{name}:PRESET-COUNT', f'{count}'])
def testCanCount(prefix, name):
def testCanCount(instr, name):
# Check in Idle State
assert getState(prefix, name) == 'Idle', 'Not in valid state'
assert getState(instr, name) == 'Idle', 'Not in valid state'
# Start Time Based Count and Check that Status Changes
assert getCount(prefix, name, 1) == 0, "Erroneous nonzero starting count value"
presetTime(prefix, name, 5)
assert getCount(instr, name, 1) == 0, "Erroneous nonzero starting count value"
presetTime(instr, name, 5)
time.sleep(1)
assert getState(prefix, name) == 'Counting', 'Didn\'t start counting'
assert getState(instr, name) == 'Counting', 'Didn\'t start counting'
time.sleep(5)
assert getState(prefix, name) == 'Idle', 'Didn\'t finish counting'
assert getCount(prefix, name, 1) > 0, 'No events were counted'
assert getState(instr, name) == 'Idle', 'Didn\'t finish counting'
assert getCount(instr, name, 1) > 0, 'No events were counted'
# Start Monitor Based Count and Check that Status Changes
presetAmount = 100
presetCount(prefix, name, presetAmount)
presetCount(instr, name, presetAmount)
time.sleep(1)
assert getState(prefix, name) == 'Counting', 'Didn\'t start counting'
assert getCount(prefix, name, 1) < presetAmount
while getState(prefix, name) != 'Idle':
assert getState(instr, name) == 'Counting', 'Didn\'t start counting'
assert getCount(instr, name, 1) < presetAmount
while getState(instr, name) != 'Idle':
time.sleep(1)
assert getCount(prefix, name, 1) == presetAmount, 'Counted events not equal to preset'
assert getCount(prefix, name, 2) > 0
assert getCount(instr, name, 1) == presetAmount, 'Counted events not equal to preset'
assert getCount(instr, name, 2) > 0
def test(prefix, name):
def test(instr, name):
# TODO pass prefix and name to script
# TODO pass instr and name to script
proc = Popen([f'{os.environ["PARENT_PATH"]}/ioc.sh'], stdout=PIPE, stderr=PIPE, shell=False)
try:
@ -104,7 +104,7 @@ def test(prefix, name):
print("IOC Initialisation Complete")
print("Starting Tests")
testCanCount(prefix, name)
testCanCount(instr, name)
print("Success")
proc.kill()
@ -123,7 +123,7 @@ if __name__ == '__main__':
print("Starting Test")
# Test V2
if test('SQ:TEST', 'CB_TEST'):
if test('SQ:TEST:', 'CB_TEST'):
exit(0)
else:
exit(1)