예제 #1
0
 def test_duplicate(self):
     i = IntroducerService()
     self.failUnlessEqual(len(i.get_announcements()), 0)
     self.failUnlessEqual(len(i.get_subscribers()), 0)
     furl1 = "pb://[email protected]:36106,127.0.0.1:36106/gydnpigj2ja2qr2srq4ikjwnl7xfgbra"
     furl2 = "pb://[email protected]:36111,127.0.0.1:36106/ttwwoogj2ja2qr2srq4ikjwnl7xfgbra"
     ann1 = (furl1, "storage", "RIStorage", "nick1", "ver23", "ver0")
     ann1b = (furl1, "storage", "RIStorage", "nick1", "ver24", "ver0")
     ann2 = (furl2, "storage", "RIStorage", "nick2", "ver30", "ver0")
     i.remote_publish(ann1)
     self.failUnlessEqual(len(i.get_announcements()), 1)
     self.failUnlessEqual(len(i.get_subscribers()), 0)
     i.remote_publish(ann2)
     self.failUnlessEqual(len(i.get_announcements()), 2)
     self.failUnlessEqual(len(i.get_subscribers()), 0)
     i.remote_publish(ann1b)
     self.failUnlessEqual(len(i.get_announcements()), 2)
     self.failUnlessEqual(len(i.get_subscribers()), 0)
예제 #2
0
 def test_duplicate(self):
     i = IntroducerService()
     self.failUnlessEqual(len(i.get_announcements()), 0)
     self.failUnlessEqual(len(i.get_subscribers()), 0)
     furl1 = "pb://[email protected]:36106,127.0.0.1:36106/gydnpigj2ja2qr2srq4ikjwnl7xfgbra"
     furl2 = "pb://[email protected]:36111,127.0.0.1:36106/ttwwoogj2ja2qr2srq4ikjwnl7xfgbra"
     ann1 = (furl1, "storage", "RIStorage", "nick1", "ver23", "ver0")
     ann1b = (furl1, "storage", "RIStorage", "nick1", "ver24", "ver0")
     ann2 = (furl2, "storage", "RIStorage", "nick2", "ver30", "ver0")
     i.remote_publish(ann1)
     self.failUnlessEqual(len(i.get_announcements()), 1)
     self.failUnlessEqual(len(i.get_subscribers()), 0)
     i.remote_publish(ann2)
     self.failUnlessEqual(len(i.get_announcements()), 2)
     self.failUnlessEqual(len(i.get_subscribers()), 0)
     i.remote_publish(ann1b)
     self.failUnlessEqual(len(i.get_announcements()), 2)
     self.failUnlessEqual(len(i.get_subscribers()), 0)
예제 #3
0
    def test_client_v1(self):
        introducer = IntroducerService()
        subscriber = FakeRemoteReference()
        introducer.remote_subscribe(subscriber, "storage")
        # the v1 subscribe interface had no subscriber_info: that was usually
        # sent in a separate stub_client pseudo-announcement
        subs = introducer.get_subscribers()
        self.failUnlessEqual(len(subs), 1)
        s0 = subs[0]
        self.failUnlessEqual(s0.nickname, u"?") # not known yet
        self.failUnlessEqual(s0.service_name, "storage")

        # now submit the stub_client announcement
        furl1 = "pb://[email protected]:0/swissnum"
        ann = (furl1, "stub_client", "RIStubClient",
               (NICKNAME % u"v1").encode("utf-8"), "my_version", "oldest")
        introducer.remote_publish(ann)
        # the server should correlate the two
        subs = introducer.get_subscribers()
        self.failUnlessEqual(len(subs), 1)
        s0 = subs[0]
        self.failUnlessEqual(s0.service_name, "storage")
        # v1 announcements do not contain app-versions
        self.failUnlessEqual(s0.app_versions, {})
        self.failUnlessEqual(s0.nickname, NICKNAME % u"v1")
        self.failUnlessEqual(s0.version, "my_version")

        # a subscription that arrives after the stub_client announcement
        # should be correlated too
        subscriber2 = FakeRemoteReference()
        introducer.remote_subscribe(subscriber2, "thing2")

        subs = introducer.get_subscribers()
        self.failUnlessEqual(len(subs), 2)
        s0 = [s for s in subs if s.service_name == "thing2"][0]
        # v1 announcements do not contain app-versions
        self.failUnlessEqual(s0.app_versions, {})
        self.failUnlessEqual(s0.nickname, NICKNAME % u"v1")
        self.failUnlessEqual(s0.version, "my_version")
예제 #4
0
    def test_client_v1(self):
        introducer = IntroducerService()
        subscriber = FakeRemoteReference()
        introducer.remote_subscribe(subscriber, "storage")
        # the v1 subscribe interface had no subscriber_info: that was usually
        # sent in a separate stub_client pseudo-announcement
        subs = introducer.get_subscribers()
        self.failUnlessEqual(len(subs), 1)
        s0 = subs[0]
        self.failUnlessEqual(s0.nickname, u"?")  # not known yet
        self.failUnlessEqual(s0.service_name, "storage")

        # now submit the stub_client announcement
        furl1 = "pb://[email protected]:0/swissnum"
        ann = (furl1, "stub_client", "RIStubClient",
               (NICKNAME % u"v1").encode("utf-8"), "my_version", "oldest")
        introducer.remote_publish(ann)
        # the server should correlate the two
        subs = introducer.get_subscribers()
        self.failUnlessEqual(len(subs), 1)
        s0 = subs[0]
        self.failUnlessEqual(s0.service_name, "storage")
        # v1 announcements do not contain app-versions
        self.failUnlessEqual(s0.app_versions, {})
        self.failUnlessEqual(s0.nickname, NICKNAME % u"v1")
        self.failUnlessEqual(s0.version, "my_version")

        # a subscription that arrives after the stub_client announcement
        # should be correlated too
        subscriber2 = FakeRemoteReference()
        introducer.remote_subscribe(subscriber2, "thing2")

        subs = introducer.get_subscribers()
        self.failUnlessEqual(len(subs), 2)
        s0 = [s for s in subs if s.service_name == "thing2"][0]
        # v1 announcements do not contain app-versions
        self.failUnlessEqual(s0.app_versions, {})
        self.failUnlessEqual(s0.nickname, NICKNAME % u"v1")
        self.failUnlessEqual(s0.version, "my_version")
예제 #5
0
 def test_client_v2(self):
     introducer = IntroducerService()
     tub = introducer_furl = None
     client_v2 = IntroducerClient(tub, introducer_furl, NICKNAME % u"v2",
                                  "my_version", "oldest",
                                  fakeseq, FilePath(self.mktemp()))
     #furl1 = "pb://[email protected]:0/swissnum"
     #ann_s = make_ann_t(client_v2, furl1, None, 10)
     #introducer.remote_publish_v2(ann_s, Referenceable())
     subscriber = FakeRemoteReference()
     introducer.remote_subscribe_v2(subscriber, "storage",
                                    client_v2._my_subscriber_info)
     subs = introducer.get_subscribers()
     self.failUnlessEqual(len(subs), 1)
     s0 = subs[0]
     self.failUnlessEqual(s0.service_name, "storage")
     self.failUnlessEqual(s0.nickname, NICKNAME % u"v2")
     self.failUnlessEqual(s0.version, "my_version")
예제 #6
0
 def test_client_v2(self):
     introducer = IntroducerService()
     tub = introducer_furl = None
     app_versions = {"whizzy": "fizzy"}
     client_v2 = IntroducerClient(tub, introducer_furl, NICKNAME % u"v2",
                                  "my_version", "oldest", app_versions)
     #furl1 = "pb://[email protected]:0/swissnum"
     #ann_s = make_ann_t(client_v2, furl1, None)
     #introducer.remote_publish_v2(ann_s, Referenceable())
     subscriber = FakeRemoteReference()
     introducer.remote_subscribe_v2(subscriber, "storage",
                                    client_v2._my_subscriber_info)
     subs = introducer.get_subscribers()
     self.failUnlessEqual(len(subs), 1)
     s0 = subs[0]
     self.failUnlessEqual(s0.service_name, "storage")
     self.failUnlessEqual(s0.app_versions, app_versions)
     self.failUnlessEqual(s0.nickname, NICKNAME % u"v2")
     self.failUnlessEqual(s0.version, "my_version")