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()
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()
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()
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")
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()
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()
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()
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()
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()
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()
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)
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)
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")
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()
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()
def setUp(self): self.server = osmosiswrapper.Server() self.client = osmosiswrapper.Client(self.server) self.localObjectStore = tempfile.mkdtemp()
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())
def setUp(self): self.server = osmosiswrapper.Server() self.client = osmosiswrapper.Client(self.server)