Exemple #1
0
    def test_LocalObjectStoreInsideCheckout_Ignored(self):
        self.client.writeFile("firstFile", "123456")
        self.client.checkin("yuvu")
        os.unlink(self.client.abspath("firstFile"))

        client = osmosiswrapper.Client(self.server)
        try:
            client.objectStores = [
                client.abspath("var/lib/osmosis/objectstore")
            ] + client.objectStores
            client.writeFile("willberemoved", "garbage")
            client.checkout('yuvu',
                            removeUnknownFiles=True,
                            ignore=client.abspath("var/lib/osmosis"),
                            putIfMissing=True)
            self.assertGreater(client.fileCount(), 1)
            self.assertEquals(client.readFile("firstFile"), "123456")
            self.assertFalse(os.path.exists(client.abspath("willberemoved")))

            client2 = osmosiswrapper.Client(self.server)
            try:
                client2.objectStores = [client.objectStores[0]]
                client.checkout("yuvu")
            finally:
                client2.clean()
        finally:
            client.clean()
Exemple #2
0
 def test_HandshakeFails_NormalErrorMessage(self):
     server = fakeservers.FakeServerHangsUp()
     client = osmosiswrapper.Client(server)
     try:
         message = client.failedCheckin("yuvu")
         self.assertIn("handshake", message.lower())
     finally:
         self.client.clean()
Exemple #3
0
    def test_checkoutWithBackupServer_PutIfMissing(self):
        self.client.writeFile("aFile", "123456")
        self.client.checkin("yuvu")

        server2 = osmosiswrapper.Server()
        client = osmosiswrapper.Client(server2, self.server)
        try:
            client.checkout("yuvu", putIfMissing=True)
            self.assertEquals(client.listLabels(), ["yuvu"])
            client2 = osmosiswrapper.Client(server2)
            try:
                client2.checkout("yuvu")
            finally:
                client2.clean()
        finally:
            client.clean()
            server2.exit()
Exemple #4
0
 def test_CheckoutTwoRepositories_NearestHasADefectiveCopy(self):
     self.client.writeFile("aFile", "123456")
     self.client.checkin("yuvu")
     serverNear = osmosiswrapper.Server()
     client = osmosiswrapper.Client(serverNear, self.server)
     client.checkout("yuvu", putIfMissing=True)
     serverNear.injectMalformedObject("123456", "defective")
     os.unlink(os.path.join(client.path(), "aFile"))
     client.checkout("yuvu", putIfMissing=True)
     self.assertEquals(client.fileCount(), 1)
     self.assertEquals(client.readFile("aFile"), "123456")
Exemple #5
0
 def test_CheckoutContinuesWhenOneOfTheObjectStoresFailsDuringGetOp(self):
     self.client.writeFile("aFile", "123456")
     self.client.checkin("yuvu")
     badServer = fakeservers.FakeServerCloseAfterGetOp(self.client)
     client = osmosiswrapper.Client(badServer, self.server)
     client.setTCPTimeout(1000)
     try:
         client.checkout("yuvu")
         self.assertEquals(client.readFile("aFile"), "123456")
     finally:
         client.clean()
Exemple #6
0
    def test_checkoutWithBackupServerThatIsNotReallyUsed(self):
        self.client.writeFile("aFile", "123456")
        self.client.checkin("yuvu")

        server2 = osmosiswrapper.Server()
        client = osmosiswrapper.Client(self.server, server2)
        try:
            client.checkout("yuvu")
        finally:
            client.clean()
            server2.exit()
Exemple #7
0
 def test_CheckoutOverHttp(self):
     self.client.writeFile("aFile", "123456")
     self.client.checkin("yuvu")
     server = httpserver.HttpServer(self.server.path)
     try:
         client = osmosiswrapper.Client(server)
         client.objectStores = [server.url()]
         client.checkout("yuvu")
         self.assertEquals(client.fileCount(), 1)
         self.assertEquals(client.readFile("aFile"), "123456")
     finally:
         server.stop()
Exemple #8
0
    def test_RestoreInADifferentDirectory(self):
        self.client.writeFile("theFile", "theContents")
        os.chmod(self.client.abspath("theFile"), 0741)
        self.client.checkin("yuvu")

        client = osmosiswrapper.Client(self.server)
        try:
            client.checkout("yuvu")
            self.assertEquals(client.readFile("theFile"), "theContents")
            self.assertEquals(os.stat(client.abspath("theFile")).st_mode & 0777, 0741)
        finally:
            client.clean()
Exemple #9
0
    def test_BugFix_TwoServers_LabelWithMoreCharactersExists(self):
        self.client.writeFile("aFile", "123456")
        self.client.checkin("yuvu")
        self.client.checkin("yuv")

        server2 = osmosiswrapper.Server()
        client = osmosiswrapper.Client(server2, self.server)
        try:
            client.checkout("yuvu", putIfMissing=True)
            client.checkout("yuv", putIfMissing=True)
        finally:
            client.clean()
            server2.exit()
Exemple #10
0
    def test_BugFix_PutIfMissing_WhenDirListObjectAlreadyExist(self):
        self.client.writeFile("aFile", "123456")
        self.client.checkin("yuvu")

        server2 = osmosiswrapper.Server()
        client = osmosiswrapper.Client(server2, self.server)
        try:
            client.checkout("yuvu", putIfMissing=True)
            self.assertEquals(client.listLabels(), ["yuvu"])
            client.eraseLabel("yuvu")
            client.checkout("yuvu", putIfMissing=True)
        finally:
            client.clean()
            server2.exit()
Exemple #11
0
 def test_ReceiveTimeout(self):
     TIMEOUT_SEC = 1
     badServer = fakeservers.FakeServerNotSending()
     client = osmosiswrapper.Client(badServer)
     timeoutInMilliseconds = TIMEOUT_SEC * 1000
     client.setTCPTimeout(timeoutInMilliseconds)
     try:
         client.listLabels("yuvu")
     except subprocess.CalledProcessError as ex:
         self.assertIn("Timeout while reading", ex.output)
     else:
         self.assertFalse(
             True,
             "Did not timeout when connecting to non-existing objectstore")
     self.assertLess(client.lastCommandDuration, TIMEOUT_SEC + 0.1)
Exemple #12
0
 def test_ConnectTimeout(self):
     TIMEOUT_SEC = 0.1
     badServer = fakeservers.FakeServerConnectTimeout()
     client = osmosiswrapper.Client(badServer)
     timeoutInMilliseconds = TIMEOUT_SEC * 1000
     client.setTCPTimeout(timeoutInMilliseconds)
     try:
         client.listLabels("yuvu")
     except subprocess.CalledProcessError as ex:
         self.assertIn(ex.message, "Could not connect")
     else:
         self.assertFalse(
             True,
             "Did not timeout when connecting to non-existing objectstore")
     self.assertLess(client.lastCommandDuration, TIMEOUT_SEC + 0.03)
Exemple #13
0
    def test_checkinAndCheckoutWithANonRemoteObjectStore(self):
        self.client.writeFile("aFile", "123456")
        self.client.checkin("yuvu")

        client = osmosiswrapper.Client(self.server)
        try:
            client.objectStores = [self.server.path]
            client.checkout('yuvu')
            self.assertEquals(client.fileCount(), 1)
            self.assertEquals(client.readFile("aFile"), "123456")
            client.writeFile("aFile", "something else")
            client.checkin('pash')
        finally:
            client.clean()

        self.client.checkout('pash')
        self.assertEquals(self.client.fileCount(), 1)
        self.assertEquals(self.client.readFile("aFile"), "something else")
Exemple #14
0
    def test_TransferBetweenObjectStores(self):
        self.client.writeFile("firstFile", "123456")
        self.client.checkin("yuvu")
        os.unlink(self.client.abspath("firstFile"))

        server = osmosiswrapper.Server()
        try:
            self.client.transfer("yuvu", server)
            client = osmosiswrapper.Client(server)
            try:
                client.checkout("yuvu")
                self.assertEquals(client.fileCount(), 1)
                self.assertEquals(client.readFile("firstFile"), "123456")
            finally:
                client.clean()
        except:
            logging.error("Destination server log:\n%(log)s", dict(log=server.readLog()))
            raise
        finally:
            server.exit()
Exemple #15
0
    def test_ChainTouchVSNoChainTouch(self):
        self.client.writeFile("aFile", "123456")
        self.client.checkin("yuvu")
        eventsBefore = self.server.labelLog()

        server2 = osmosiswrapper.Server()
        client = osmosiswrapper.Client(server2, self.server)
        try:
            client.checkout("yuvu", noChainTouch=True, putIfMissing=True)
            eventsAfter = self.server.labelLog()
            self.assertLess(len(eventsBefore), len(eventsAfter))

            client.checkout("yuvu", noChainTouch=True)
            eventsAfter2 = self.server.labelLog()
            self.assertEquals(eventsAfter2, eventsAfter)

            client.checkout("yuvu")
            eventsAfter3 = self.server.labelLog()
            self.assertLess(len(eventsAfter2), len(eventsAfter3))
        finally:
            client.clean()
            server2.exit()
Exemple #16
0
 def setUp(self):
     self.server = osmosiswrapper.Server()
     self.client = osmosiswrapper.Client(self.server)
     self.localObjectStore = tempfile.mkdtemp()
Exemple #17
0
 def setUp(self):
     self.server = osmosiswrapper.Server()
     self.client = osmosiswrapper.Client(self.server)
     self.broadcastServer = osmosiswrapper.BroadcastServer(
         rootPath=self.server.path)
     self.client.setBroadcastServerPort(port=self.broadcastServer.port())
Exemple #18
0
 def setUp(self):
     self.server = osmosiswrapper.Server()
     self.client = osmosiswrapper.Client(self.server)