Exemplo n.º 1
0
    def test_client_only_listens(self):
        rc = self.create_rc()
        client_heartbeat_seconds = 8

        cluster_config = ("""
        <hazelcast xmlns="http://www.hazelcast.com/schema/config"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.hazelcast.com/schema/config
           http://www.hazelcast.com/schema/config/hazelcast-config-4.0.xsd">
            <properties>
                <property name="hazelcast.client.max.no.heartbeat.seconds">%s</property>
            </properties>
        </hazelcast>""" % client_heartbeat_seconds)
        cluster = self.create_cluster(rc, cluster_config)
        cluster.start_member()

        client1 = HazelcastClient(cluster_name=cluster.id,
                                  heartbeat_interval=1)

        def lifecycle_event_collector():
            events = []

            def event_collector(e):
                print(e)
                if e == LifecycleState.DISCONNECTED:
                    events.append(e)

            event_collector.events = events
            return event_collector

        collector = lifecycle_event_collector()
        client1.lifecycle_service.add_listener(collector)

        client2 = HazelcastClient(cluster_name=cluster.id)

        key = "topic-name"
        topic = client1.get_topic(key)

        def message_listener(_):
            pass

        topic.add_listener(message_listener)

        topic2 = client2.get_topic(key)
        begin = get_current_timestamp()

        while (get_current_timestamp() - begin) < 2 * client_heartbeat_seconds:
            topic2.publish("message")
            time.sleep(0.5)

        self.assertEqual(0, len(collector.events))
        client1.shutdown()
        client2.shutdown()
        rc.exit()
Exemplo n.º 2
0
    def test_client_only_listens(self):
        rc = self.create_rc()
        client_heartbeat_seconds = 8

        cluster_config = """<hazelcast xsi:schemaLocation="http://www.hazelcast.com/schema/config hazelcast-config-3.10.xsd"
           xmlns="http://www.hazelcast.com/schema/config"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <properties>
                <property name="hazelcast.client.max.no.heartbeat.seconds">{}</property>
            </properties>
        </hazelcast>""".format(client_heartbeat_seconds)
        cluster = self.create_cluster(rc, cluster_config)
        member = cluster.start_member()

        client_config = ClientConfig()
        client_config.set_property(ClientProperties.HEARTBEAT_INTERVAL.name,
                                   1000)

        client1 = HazelcastClient(client_config)

        def lifecycle_event_collector():
            events = []

            def event_collector(e):
                if e == LIFECYCLE_STATE_DISCONNECTED:
                    events.append(e)

            event_collector.events = events
            return event_collector

        collector = lifecycle_event_collector()
        client1.lifecycle.add_listener(collector)
        client2 = HazelcastClient()

        key = "topic-name"
        topic = client1.get_topic(key)

        def message_listener(e):
            pass

        topic.add_listener(message_listener)

        client2topic = client2.get_topic(key)
        begin = time.time()

        while (time.time() - begin) < 2 * client_heartbeat_seconds:
            client2topic.publish("message")
            time.sleep(0.5)

        self.assertEqual(0, len(collector.events))
        client1.shutdown()
        client2.shutdown()
        rc.exit()