Exemplo n.º 1
0
    def setUp(self):
        super(TestLinkProps02Occupied, self).setUp()

        alpha_beta = model.LinkProps(self.endpoint_alpha,
                                     self.endpoint_beta,
                                     props={
                                         'cost': '32',
                                         'name': 'alpha-beta'
                                     })
        alpha_gamma = model.LinkProps(self.endpoint_alpha,
                                      self.endpoint_gamma,
                                      props={
                                          'cost': '96',
                                          'name': 'alpha-gamma'
                                      })
        beta_gamma = model.LinkProps(self.endpoint_beta,
                                     self.endpoint_gamma,
                                     props={
                                         'cost': '64',
                                         'name': 'beta-gamma'
                                     })

        self._put(alpha_beta)
        self._put(alpha_gamma)
        self._put(beta_gamma)
Exemplo n.º 2
0
    def test_drop_multi(self):
        any_endpoint = model.NetworkEndpoint(None, None)
        lookup_mask = model.LinkProps(self.endpoint_alpha, any_endpoint)
        self._drop(lookup_mask)

        self._ensure_missing(
            model.LinkProps(self.endpoint_alpha, self.endpoint_beta),
            model.LinkProps(self.endpoint_alpha, self.endpoint_gamma))
        self._ensure_exists(
            model.LinkProps(self.endpoint_beta, self.endpoint_gamma))
Exemplo n.º 3
0
    def test_put(self):
        link_props = model.LinkProps(self.endpoint_beta,
                                     self.endpoint_gamma,
                                     props={
                                         'cost': 5,
                                         'custom': 'test'
                                     })

        # to make time_create and time_modify different
        link_props.time_create = model.TimeProperty.new_from_java_timestamp(
            link_props.time_create.as_java_timestamp() - 100)

        # to make a difference in time fields, if incorrect values(not from
        # passed object) are used
        time.sleep(0.001)

        self._put(link_props)

        with self.open_neo4j_session() as tx:
            persistent = link_props_utils.read(tx, link_props)
            self.assertEquals(link_props, persistent)

        response = self._get_kafka_response()
        self.assertEqual(message_utils.MI_LINK_PROPS_RESPONSE,
                         response['clazz'])
        self.assertIsNone(response['error'])

        encoded_link_props = share.link_props_request(link_props)
        encoded_link_props = json.loads(json.dumps(encoded_link_props))
        self.assertEqual(encoded_link_props, response['link_props'])
Exemplo n.º 4
0
    def test_drop_reject(self):
        any_endpoint = model.NetworkEndpoint(None, None)
        lookup_mask = model.LinkProps(any_endpoint, any_endpoint)
        self._drop(lookup_mask)

        self._ensure_exists(
            model.LinkProps(self.endpoint_alpha, self.endpoint_beta),
            model.LinkProps(self.endpoint_alpha, self.endpoint_gamma),
            model.LinkProps(self.endpoint_beta, self.endpoint_gamma))

        response = self.take_response(
            expect_class=message_utils.MT_INFO_CHUNKED)
        self.assertIsNotNone(response)
        self.assertEqual(message_utils.MI_LINK_PROPS_RESPONSE,
                         response['clazz'])
        self.assertIsNone(response['link_props'])
        self.assertIsNotNone(response['error'])
Exemplo n.º 5
0
    def test_put_incomplete(self):
        link_props = model.LinkProps(self.endpoint_beta, self.endpoint_gamma)
        link_props.source = model.NetworkEndpoint(self.endpoint_alpha.dpid,
                                                  None)
        self._put(link_props)

        response = self._get_kafka_response()
        self.assertEqual(message_utils.MI_LINK_PROPS_RESPONSE,
                         response['clazz'])
        self.assertIsNotNone(response['error'])
        self.assertIsNone(response['link_props'])
Exemplo n.º 6
0
    def test_put_protected_field(self):
        link_props = model.LinkProps(self.endpoint_beta,
                                     self.endpoint_alpha,
                                     props={'latency': -2})
        self._put(link_props)

        response = self._get_kafka_response()
        self.assertEqual(message_utils.MI_LINK_PROPS_RESPONSE,
                         response['clazz'])
        self.assertIsNone(response['link_props'])
        self.assertIsNotNone(response['error'])
Exemplo n.º 7
0
    def test_drop(self):
        lookup_mask = model.LinkProps(self.endpoint_alpha, self.endpoint_beta)

        with self.open_neo4j_session() as tx:
            isl_db = isl_utils.fetch(
                tx,
                model.InterSwitchLink(self.endpoint_alpha, self.endpoint_beta))
            tx.graph.pull(isl_db)
            self.assertEqual('alpha-beta', isl_db['name'])

        self._drop(lookup_mask)

        self._ensure_missing(lookup_mask)
        self._ensure_exists(
            model.LinkProps(self.endpoint_alpha, self.endpoint_gamma),
            model.LinkProps(self.endpoint_beta, self.endpoint_gamma))

        with self.open_neo4j_session() as tx:
            isl_db = isl_utils.fetch(
                tx,
                model.InterSwitchLink(self.endpoint_alpha, self.endpoint_beta))
            tx.graph.pull(isl_db)
            self.assertNotIn('name', isl_db)
Exemplo n.º 8
0
    def test_update(self):
        link_props = model.LinkProps(self.endpoint_alpha,
                                     self.endpoint_beta,
                                     props={
                                         'cost': 1,
                                         'extra': 'new'
                                     })
        self._put(link_props)

        self._ensure_props_match(link_props, {
            'cost': 1,
            'extra': 'new',
            'name': 'alpha-beta'
        })
Exemplo n.º 9
0
    def test_put_and_propagate(self):
        unique_value = str(uuid.uuid4())
        link_props = model.LinkProps(self.endpoint_alpha,
                                     self.endpoint_beta,
                                     props={'test': unique_value})
        self._put(link_props)

        with self.open_neo4j_session() as tx:
            persistent = link_props_utils.read(tx, link_props)
            self.assertEqual(link_props, persistent)

            isl_db = isl_utils.fetch(
                tx, model.InterSwitchLink.new_from_link_props(link_props))
            tx.graph.pull(isl_db)
            self.assertEqual(unique_value, isl_db['test'])
Exemplo n.º 10
0
    def test_update(self):
        link_props = model.LinkProps(self.endpoint_alpha,
                                     self.endpoint_beta,
                                     props={
                                         'cost': 1,
                                         'extra': 'new'
                                     })
        self._put(link_props)

        with self.open_neo4j_session() as tx:
            persistent = link_props_utils.read(tx, link_props)
            self.assertEqual({
                'cost': 1,
                'extra': 'new',
                'name': 'alpha-beta'
            }, persistent.props)
Exemplo n.º 11
0
    def test_cypher_injection(self):
        py2neo_version = pkg_resources.require('py2neo')[0].parsed_version
        if pkg_resources.parse_version('4.1.2') <= py2neo_version:
            raise unittest.SkipTest(
                'Starting from py2neo-4.1.2 special symbols are alloved in '
                'field names, it breaks this test scenario.')

        link_props = model.LinkProps(self.endpoint_alpha,
                                     self.endpoint_beta,
                                     props={'`cost': 1})
        self._put(link_props)

        self._ensure_props_match(link_props, {
            'cost': 32,
            'name': 'alpha-beta'
        })