From eeb673710013f7fc14d7dcc5a1c1789604ede0bb Mon Sep 17 00:00:00 2001 From: Mark Williams Date: Wed, 10 Jan 2024 13:49:01 +0000 Subject: [PATCH 1/4] LIMS-697: Use more specific PVs for puck names --- api/config_sample.php | 7 +++---- api/src/Controllers/AssignController.php | 16 ++++++++-------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/api/config_sample.php b/api/config_sample.php index 1267f8fe3..29cf04bae 100644 --- a/api/config_sample.php +++ b/api/config_sample.php @@ -374,10 +374,9 @@ ), ); - # Map of beamlinename to pv prefix - $bl_pv_map = array( - 'i02' => 'BL02I', - 'i03' => 'BL03I', + # Map of beamlinename to puck name pv + $bl_puck_names = array( + 'i03' => "BL03I-MO-ROBOT-01:PUCK_%'02d_NAME" ); # Dials server values diff --git a/api/src/Controllers/AssignController.php b/api/src/Controllers/AssignController.php index 30bcbc79a..967168c0d 100644 --- a/api/src/Controllers/AssignController.php +++ b/api/src/Controllers/AssignController.php @@ -103,22 +103,21 @@ function getBeamlineVisits($visit = null) # BL03I-MO-ROBOT-01:PUCK_01_NAME function getPuckNames() { - global $bl_pv_map; + global $bl_puck_names; session_write_close(); if (!$this->has_arg('prop')) $this->_error('No proposal specified'); if (!$this->has_arg('bl')) $this->_error('No beamline specified'); - if (!array_key_exists($this->arg('bl'), $bl_pv_map)) + if (!array_key_exists($this->arg('bl'), $bl_puck_names)) $this->_error('No such beamline'); - $pv_prefix = $bl_pv_map[$this->arg('bl')]; + $pv_names = $bl_puck_names[$this->arg('bl')]; $pvs = array(); for ($i = 1; $i < 38; $i++) { - $id = $i < 10 ? '0' . $i : $i; - array_push($pvs, $pv_prefix . '-MO-ROBOT-01:PUCK_' . $id . '_NAME'); + array_push($pvs, sprintf($pv_names, $i)); } $rows = $this->assignData->getContainerBarcodesForProposal($this->proposalid); @@ -132,7 +131,8 @@ function getPuckNames() $vals = $this->pv(array_values($pvs), true, true); foreach ($vals as $k => $v) { - if (preg_match('/PUCK_(\d+)_NAME/', $k, $mat)) + $zero_id = array_search($k, $pvs); + if ($zero_id !== false) { if (is_array($v) && sizeof($v)) { @@ -140,10 +140,10 @@ function getPuckNames() } else $val = ''; - array_push($return, array('id' => intval($mat[1]), 'name' => $val)); + array_push($return, array('id' => $zero_id+1, 'name' => $val)); } } $this->_output($return); } -} \ No newline at end of file +} From 21b0aba090bb45d3491054f17f60f214d30c0947 Mon Sep 17 00:00:00 2001 From: Mark Williams Date: Wed, 10 Jan 2024 14:37:51 +0000 Subject: [PATCH 2/4] LIMS-697: Fix unit tests --- api/tests/Controllers/AssignControllerTest.php | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/api/tests/Controllers/AssignControllerTest.php b/api/tests/Controllers/AssignControllerTest.php index 8c0426f39..420fefd1b 100644 --- a/api/tests/Controllers/AssignControllerTest.php +++ b/api/tests/Controllers/AssignControllerTest.php @@ -48,10 +48,9 @@ protected function setUp(): void global $ip2bl; $ip2bl = array(103 => 'i03'); - global $bl_pv_map; - $bl_pv_map = array( - 'i02' => 'BL02I', - 'i03' => 'BL03I', + global $bl_puck_names; + $bl_puck_names = array( + 'i03' => "BL03I-MO-ROBOT-01:PUCK_%'02d_NAME", ); global $bl_pv_env; $bl_pv_env = 'EPICS_CA_ADDR_LIST_TEST=666.45.678.9'; From 0d77590a7968f87ea672399c28fa32dce95c6998 Mon Sep 17 00:00:00 2001 From: Mark Williams Date: Wed, 10 Jan 2024 14:47:08 +0000 Subject: [PATCH 3/4] LIMS-697: Fix unit tests --- api/tests/Controllers/AssignControllerTest.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/api/tests/Controllers/AssignControllerTest.php b/api/tests/Controllers/AssignControllerTest.php index 420fefd1b..9a1f04883 100644 --- a/api/tests/Controllers/AssignControllerTest.php +++ b/api/tests/Controllers/AssignControllerTest.php @@ -240,7 +240,7 @@ public function testGetPuckNamesWithPropAndValidBlSingleValReturnsData(): void $this->assignController->args['prop'] = 3; $this->assignController->args['bl'] = 'i03'; $this->assignController->proposalid = 3; - $this->assignController->shouldReceive('pv')->times(1)->andReturn(array('PUCK_1_NAME' => 'puck1', 'PUCK_12_NAME' => 'puck12')); + $this->assignController->shouldReceive('pv')->times(1)->andReturn(array('BL03I-MO-ROBOT-01:PUCK_01_NAME' => 'puck1', 'BL03I-MO-ROBOT-01:PUCK_12_NAME' => 'puck12')); $this->dataLayerStub->expects($this->exactly(1))->method('getContainerBarcodesForProposal')->with(3)->willReturn(array(['BARCODE' => 1230, 'BL' => 'test03'])); $this->assignController->getPuckNames(); @@ -253,7 +253,7 @@ public function testGetPuckNamesWithPropAndValidBlArrayWithNoDataValReturnsObfus $this->assignController->args['prop'] = 3; $this->assignController->args['bl'] = 'i03'; $this->assignController->proposalid = 3; - $this->assignController->shouldReceive('pv')->times(1)->andReturn(array('PUCK_1_NAME' => array(11), 'PUCK_12_NAME' => array(12))); + $this->assignController->shouldReceive('pv')->times(1)->andReturn(array('BL03I-MO-ROBOT-01:PUCK_01_NAME' => array(11), 'BL03I-MO-ROBOT-01:PUCK_12_NAME' => array(12))); $this->dataLayerStub->expects($this->exactly(1))->method('getContainerBarcodesForProposal')->with(3)->willReturn(array(['BARCODE' => 1230, 'BL' => 'test03'])); $this->assignController->getPuckNames(); @@ -266,7 +266,7 @@ public function testGetPuckNamesWithPropAndValidBlArrayWithMatchingDataValReturn $this->assignController->args['prop'] = 3; $this->assignController->args['bl'] = 'i03'; $this->assignController->proposalid = 3; - $this->assignController->shouldReceive('pv')->times(1)->andReturn(array('PUCK_1_NAME' => array(11), 'PUCK_12_NAME' => array(1230))); + $this->assignController->shouldReceive('pv')->times(1)->andReturn(array('BL03I-MO-ROBOT-01:PUCK_01_NAME' => array(11), 'BL03I-MO-ROBOT-01:PUCK_12_NAME' => array(1230))); $this->dataLayerStub->expects($this->exactly(1))->method('getContainerBarcodesForProposal')->with(3)->willReturn(array(['BARCODE' => 1230, 'BL' => 'test03'])); $this->assignController->getPuckNames(); @@ -280,7 +280,7 @@ public function testGetPuckNamesWithPropAndValidBlArrayForStaffMemberReturnsReal $this->assignController->args['bl'] = 'i03'; $this->assignController->proposalid = 3; $this->assignController->staff = true; - $this->assignController->shouldReceive('pv')->times(1)->andReturn(array('PUCK_1_NAME' => array(11), 'PUCK_12_NAME' => array(1231))); + $this->assignController->shouldReceive('pv')->times(1)->andReturn(array('BL03I-MO-ROBOT-01:PUCK_01_NAME' => array(11), 'BL03I-MO-ROBOT-01:PUCK_12_NAME' => array(1231))); $this->dataLayerStub->expects($this->exactly(1))->method('getContainerBarcodesForProposal')->with(3)->willReturn(array(['BARCODE' => 1230, 'BL' => 'test03'])); $this->assignController->getPuckNames(); From f19f8b5c571d36fd47e6f9f1223ea3a3e3eb81db Mon Sep 17 00:00:00 2001 From: Mark Williams Date: Wed, 10 Jan 2024 17:39:16 +0000 Subject: [PATCH 4/4] LIMS-697: Simplify example PV --- api/config_sample.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/config_sample.php b/api/config_sample.php index 29cf04bae..8d45bc798 100644 --- a/api/config_sample.php +++ b/api/config_sample.php @@ -376,7 +376,7 @@ # Map of beamlinename to puck name pv $bl_puck_names = array( - 'i03' => "BL03I-MO-ROBOT-01:PUCK_%'02d_NAME" + 'i03' => "BL03I-MO-ROBOT-01:PUCK_%02d_NAME" ); # Dials server values