Пример #1
0
    def test_type_enforcement(self):
        mm = ManagedHashMap('test_domain',
                            'test_key1',
                            'test_name',
                            'test_description',
                            TEST_ZK_HOSTS,
                            TEST_AWS_KEYFILE,
                            TEST_S3_BUCKET,
                            key_type=str,
                            value_type=int)
        self.assertTrue(mm.key_type is str)
        self.assertTrue(mm.value_type is int)
        mm.set_map({})
        self.assertEqual([], mm.get_keys())
        self.assertEqual(1, mm.set("foo", "123"))
        self.assertEqual(1, mm.set("bar", 456))
        self.assertEqual(1, mm.set(789, 789))
        self.assertEqual(set(["foo", "bar", "789"]), set(mm.get_keys()))
        self.assertEqual(123, mm.get("foo"))
        self.assertEqual(456, mm.get("bar"))
        self.assertEqual(789, mm.get("789"))

        # operations with invalid values
        self.assertRaises(ValueError, mm.set, "abc", "xyz")
        many_items = {"aaa": "111", "bbb": "bla"}
        self.assertRaises(ValueError, mm.set_many, many_items)
        self.assertRaises(ValueError, mm.set_map, many_items)
        self.assertEqual(set(["foo", "bar", "789"]), set(
            mm.get_keys()))  # invalid operations do not change data

        many_items = {"aaa": "111", "bbb": 222}  # valid new dict
        mm.set_map(many_items)
        self.assertEqual(set(["aaa", "bbb"]), set(mm.get_keys()))

        # test remove
        mm = ManagedHashMap('test_domain',
                            'test_key2',
                            'test_name',
                            'test_description',
                            TEST_ZK_HOSTS,
                            TEST_AWS_KEYFILE,
                            TEST_S3_BUCKET,
                            key_type=int,
                            value_type=str)
        mm.set_map({111: "aaa", 222: "bbb", "333": "ccc"})
        self.assertEqual(set([111, 222, 333]), set(mm.get_keys()))
        self.assertRaises(ValueError, mm.remove, "xxx")
        self.assertEqual(set([111, 222, 333]), set(mm.get_keys()))
        self.assertEqual(
            1, mm.remove("111"))  # given key in string is able to convert
        self.assertEqual(set([222, 333]), set(mm.get_keys()))
Пример #2
0
    def setUp(self):
        self.mock_zk_config_manager = mock.patch(
            "kingpin.manageddata.managed_datastructures.ZKConfigManager",
            mock_zk_config_manager.MockZkConfigManager)
        self.mock_zk_config_manager.start()

        self.managed_map = ManagedHashMap('test_domain', 'test_key',
                                          'test_name', 'test_description',
                                          TEST_ZK_HOSTS, TEST_AWS_KEYFILE,
                                          TEST_S3_BUCKET)
Пример #3
0
    def test_singleton_metaclass(self):
        """Check ManagedDataStructure would return singleton instance for unique identifier of
        (list_domain, list_key)."""
        test_md = ManagedList(list_domain="test_singleton_domain",
                              list_key="test_key1",
                              list_name="",
                              list_description="",
                              zk_hosts=TEST_ZK_HOSTS,
                              aws_keyfile=TEST_AWS_KEYFILE,
                              s3_bucket=TEST_S3_BUCKET)
        test_md2 = ManagedList(list_domain="test_singleton_domain",
                               list_key="test_key1",
                               list_name="",
                               list_description="",
                               zk_hosts=TEST_ZK_HOSTS,
                               aws_keyfile=TEST_AWS_KEYFILE,
                               s3_bucket=TEST_S3_BUCKET)
        test_md3 = ManagedList(list_domain="test_singleton_domain",
                               list_key="test_key2",
                               list_name="",
                               list_description="",
                               zk_hosts=TEST_ZK_HOSTS,
                               aws_keyfile=TEST_AWS_KEYFILE,
                               s3_bucket=TEST_S3_BUCKET)
        test_md4 = ManagedList(list_domain="test_singleton_domain2",
                               list_key="test_key1",
                               list_name="",
                               list_description="",
                               zk_hosts=TEST_ZK_HOSTS,
                               aws_keyfile=TEST_AWS_KEYFILE,
                               s3_bucket=TEST_S3_BUCKET)
        self.assertEqual(test_md, test_md2)
        self.assertFalse(test_md == test_md3)
        self.assertFalse(test_md == test_md4)

        # Instance corresponding to the unique identifier of (list_domain, list_key) can only be
        # one type.
        with self.assertRaises(Exception):
            ManagedHashMap(list_domain="test_singleton_domain",
                           list_key="test_key1",
                           list_name="",
                           list_description="",
                           zk_hosts=TEST_ZK_HOSTS,
                           aws_keyfile=TEST_AWS_KEYFILE,
                           s3_bucket=TEST_S3_BUCKET)