def test_update_properties_remove_property_leaves_protected(self): devname = "sys/tg_test/2" dev = find_device(self.dbdict, devname)[0] dev["properties"]["polled_attr"] = ["a", "b"] orig_dev = find_device(self.dbdict, devname)[0] added, removed = update_properties(self.db, devname, orig_dev["properties"], dev["properties"]) self.assertDictEqual(added, {}) self.assertDictEqual(removed, {})
def test_update_properties_replace_property(self): devname = "sys/tg_test/2" dev = find_device(self.data, devname)[0] dev["properties"]["bepa"] = ["573"] orig_dev = find_device(self.dbdict, devname)[0] added, removed = update_properties(self.db, devname, orig_dev["properties"], dev["properties"]) self.assertIn("bepa", added) self.assertListEqual( self.db.calls, [('put_device_property', ('sys/tg_test/2', {'bepa': ['573']}), {})])
def test_update_properties_dont_add_bad_attribute_propertyx(self): "Check that we don't allow unknown attribute properties" devname = "sys/tg_test/2" label = "This is a test" dev = find_device(self.data, devname)[0] dev["attribute_properties"]["ampliz"].update({"fish": [label]}) orig_dev = find_device(self.dbdict, devname)[0] with self.assertRaises(KeyError): update_properties(self.db, devname, orig_dev["attribute_properties"], dev["attribute_properties"], attribute=True)
def test_update_properties_add_property(self): devname = "sys/tg_test/2" dev = find_device(self.data, devname)[0] dev["properties"]["flepp"] = ["56"] orig_dev = find_device(self.dbdict, devname)[0] added, removed = update_properties(self.db, devname, orig_dev["properties"], dev["properties"]) self.assertDictEqual(added, {"flepp": ["56"]}) self.assertDictEqual(removed, {}) self.assertListEqual( self.db.calls, [('put_device_property', ('sys/tg_test/2', {'flepp': ['56']}), {})])
def test_update_properties_add_attribute_property(self): devname = "sys/tg_test/2" label = "This is a test" dev = find_device(self.data, devname)[0] dev["attribute_properties"]["someAttr"] = {"label": [label]} orig_dev = find_device(self.dbdict, devname)[0] added, removed = update_properties(self.db, devname, orig_dev["attribute_properties"], dev["attribute_properties"], attribute=True) self.assertDictEqual(added, {"someAttr": {"label": [label]}}) self.assertDictEqual(removed, {}) self.assertEqual(len(self.db.calls), 1) self.assertListEqual( self.db.calls, [('put_device_attribute_property', ('sys/tg_test/2', {'someAttr': {'label': [label]}}), {})])
def test_update_server_removes_protected_property_if_empty(self): dev = find_device(self.dbdict, "sys/tg_test/2")[0] dev["properties"]["polled_attr"] = ["SomeAttr", "1000"] dev = find_device(self.data, "sys/tg_test/2")[0] dev["properties"]["polled_attr"] = [] update_server(self.db, "test", self.data["servers"]["TangoTest"]["test"], self.dbdict["servers"]["TangoTest"]["test"], difactory=Mock) self.assertEqual(len(self.db.calls), 1) dbcall, args, kwargs = self.db.calls[0] self.assertEqual(dbcall, "delete_device_property") self.assertEqual(args[0], "sys/tg_test/2") self.assertTrue(len(args[1]) == 1) self.assertTrue("polled_attr" in args[1]) # can be list or dict
def test_update_properties_add_more_attribute_properties(self): """Test adding more attribute properties to an attribute that has some already""" devname = "sys/tg_test/2" label = "This is a test" dev = find_device(self.data, devname)[0] dev["attribute_properties"]["ampliz"].update({"label": [label], "unit": ["hejsan"]}) orig_dev = find_device(self.dbdict, devname)[0] added, removed = update_properties(self.db, devname, orig_dev["attribute_properties"], dev["attribute_properties"], attribute=True) self.assertDictEqual(added, {"ampliz": {"label": [label]}}) self.assertDictEqual(removed, {}) self.assertEqual(len(self.db.calls), 1) self.assertListEqual( self.db.calls, [('put_device_attribute_property', ('sys/tg_test/2', {'ampliz': {'label': [label]}}), {})])
def test_update_server_doesnt_remove_protected_property(self): dev = find_device(self.dbdict, "sys/tg_test/2")[0] dev["properties"]["polled_attr"] = ["SomeAttr", "1000"] update_server(self.db, "test", self.data["servers"]["TangoTest"]["test"], self.dbdict["servers"]["TangoTest"]["test"], difactory=Mock) self.assertEqual(len(self.db.calls), 0)
def test_update_server_ignore_property_case(self): "Test that property names can be case insensitive" dev = find_device(self.data, "sys/tg_test/2", caseless=True)[0] dev["properties"]["BEpA"] = ["45"] update_server(self.db, "test", self.data["servers"]["TangoTest"]["test"], self.dbdict["servers"]["TangoTest"]["test"], ignore_case=True, difactory=Mock) self.assertEqual(len(self.db.calls), 0)
def test_update_server_add_property(self): dev = find_device(self.data, "sys/tg_test/2")[0] dev["properties"]["flepp"] = ["56"] update_server(self.db, "test", self.data["servers"]["TangoTest"]["test"], self.dbdict["servers"]["TangoTest"]["test"], difactory=Mock) self.assertListEqual( self.db.calls, [('put_device_property', ('sys/tg_test/2', {'flepp': ['56']}), {})])
def test_update_server_ignore_device_case(self): "Test that device names can be case insensitive" dev = find_device(self.data, "SYS/TG_TESt/2", caseless=True)[0] dev["properties"]["flepp"] = ["56"] update_server(self.db, "test", self.data["servers"]["TangoTest"]["test"], self.dbdict["servers"]["TangoTest"]["test"], ignore_case=True, difactory=Mock) self.assertListEqual( self.db.calls, [('put_device_property', ('sys/tg_test/2', {'flepp': ['56']}), {})])
def test_update_server_remove_property(self): dev = find_device(self.data, "sys/tg_test/2")[0] del dev["properties"]["bepa"] update_server(self.db, "test", self.data["servers"]["TangoTest"]["test"], self.dbdict["servers"]["TangoTest"]["test"], difactory=Mock) self.assertEqual(len(self.db.calls), 1) dbcall, args, kwargs = self.db.calls[0] self.assertEqual(dbcall, "delete_device_property") self.assertEqual(args[0], "sys/tg_test/2") self.assertTrue(len(args[1]) == 1) self.assertTrue("bepa" in args[1]) # can be list or dict
def get_device_property(dev, props): data, _ = find_device(dbdata, dev) return dict((p, data["properties"][p]) for p in props)
def get_device_property_list(dev, pattern): data, _ = find_device(dbdata, dev) return data["properties"].keys()
def get_device_info(dev): _, (srv, inst, clss, _) = find_device(dbdata, dev) return MagicMock(ds_full_name="%s/%s" % (srv, inst), name=dev, class_name=clss)