def test_sticky(self): s = struct.Set() # create sticky contianer on two stores with s.create("foo", [self.store1, self.store2]) as dummy: # create document on first store with Connector().create("test.format.foo", "test.ignore", [self.store1]) as w: w.commit() doc = w.getDoc() rev = w.getRev() watch1 = self.watchDoc(doc, connector.Watch.EVENT_REPLICATED) watch2 = self.watchRev(rev, connector.Watch.EVENT_REPLICATED) # add to sticky container s['dummy'] = struct.DocLink(doc) s.save() # wait for sticky replicatin to happen self.assertTrue(watch1.waitForWatch()) self.assertTrue(watch2.waitForWatch()) # check doc (with rev) to exist on all stores l = Connector().lookup_doc(doc) self.assertEqual(l.revs(), [rev]) self.assertEqual(len(l.stores(rev)), 2) self.assertTrue(self.store1 in l.stores(rev)) self.assertTrue(self.store2 in l.stores(rev)) l = Connector().lookup_rev(rev) self.assertEqual(len(l), 2) self.assertTrue(self.store1 in l) self.assertTrue(self.store2 in l)
def test_sticky(self): s = struct.Set() # create sticky contianer on two stores with s.create("foo", [self.store1, self.store2]) as dummy: # create document on first store with Connector().create("test.format.foo", "test.ignore", [self.store1]) as w: w.commit() doc = w.getDoc() rev = w.getRev() watch1 = self.watchDoc(doc, connector.Watch.EVENT_REPLICATED) watch2 = self.watchRev(rev, connector.Watch.EVENT_REPLICATED) # add to sticky container s['dummy'] = struct.DocLink(doc) s.save() # wait for sticky replicatin to happen self.assertTrue(watch1.waitForWatch()) self.assertTrue(watch2.waitForWatch()) # check doc (with rev) to exist on all stores l = Connector().lookup_doc(doc) self.assertEqual(l.revs(), [rev]) self.assertEqual(len(l.stores(rev)), 2) self.assertTrue(self.store1 in l.stores(rev)) self.assertTrue(self.store2 in l.stores(rev)) l = Connector().lookup_rev(rev) self.assertEqual(len(l), 2) self.assertTrue(self.store1 in l) self.assertTrue(self.store2 in l)
def performSync(self, doc, strategy): watch = self.watchDoc(doc, connector.Watch.EVENT_MODIFIED) self.startSync(strategy, self.store1, self.store2) while True: watch.reset() self.assertTrue(watch.waitForWatch()) l = Connector().lookup_doc(doc) if len(l.revs()) == 1: break self.assertEqual(len(l.stores()), 2) self.assertTrue(self.store1 in l.stores()) self.assertTrue(self.store2 in l.stores()) return l
def performSync(self, doc, strategy): watch = self.watchDoc(doc, connector.Watch.EVENT_MODIFIED) self.startSync(strategy, self.store1, self.store2) while True: watch.reset() self.assertTrue(watch.waitForWatch()) l = Connector().lookup_doc(doc) if len(l.revs()) == 1: break self.assertEqual(len(l.stores()), 2) self.assertTrue(self.store1 in l.stores()) self.assertTrue(self.store2 in l.stores()) return l
def __init__(self, uuid, isDoc, parent=None): super(PropertiesDialog, self).__init__(parent) mainLayout = QtGui.QVBoxLayout() mainLayout.setSizeConstraint(QtGui.QLayout.SetFixedSize) if isDoc: self.doc = uuid info = Connector().lookup_doc(uuid) mainLayout.addWidget(DocumentTab(info.stores(), "document")) self.revs = info.revs() else: self.doc = None mainLayout.addWidget( DocumentTab(Connector().lookup_rev(uuid), "revision")) self.revs = [uuid] if len(self.revs) == 0: QtGui.QMessageBox.warning( self, 'Missing document', 'The requested document was not found on any store.') sys.exit(1) tabWidget = QtGui.QTabWidget() self.annoTab = AnnotationTab(self.revs, isDoc and (len(self.revs) == 1)) QtCore.QObject.connect(self.annoTab, QtCore.SIGNAL("changed()"), self.__changed) tabWidget.addTab(self.annoTab, "Annotation") tabWidget.addTab(HistoryTab(self.revs), "History") if isDoc: tabWidget.addTab(RevisionTab(self.revs), "Revisions") else: tabWidget.addTab(RevisionTab(self.revs), "Revision") mainLayout.addWidget(tabWidget) if isDoc and (len(self.revs) == 1): self.buttonBox = QtGui.QDialogButtonBox( QtGui.QDialogButtonBox.Save | QtGui.QDialogButtonBox.Close) self.buttonBox.button( QtGui.QDialogButtonBox.Save).setEnabled(False) self.buttonBox.accepted.connect(self.__save) self.buttonBox.rejected.connect(self.reject) else: self.buttonBox = QtGui.QDialogButtonBox(QtGui.QDialogButtonBox.Ok) self.buttonBox.accepted.connect(self.accept) mainLayout.addWidget(self.buttonBox) self.setLayout(mainLayout) self.setWindowTitle("Properties of %s" % (self.annoTab.getTitle()))
def __init__(self, uuid, isDoc, parent=None): super(PropertiesDialog, self).__init__(parent) mainLayout = QtGui.QVBoxLayout() mainLayout.setSizeConstraint(QtGui.QLayout.SetFixedSize) if isDoc: self.doc = uuid info = Connector().lookup_doc(uuid) mainLayout.addWidget(DocumentTab(info.stores(), "document")) self.revs = info.revs() else: self.doc = None mainLayout.addWidget(DocumentTab(Connector().lookup_rev(uuid), "revision")) self.revs = [uuid] if len(self.revs) == 0: QtGui.QMessageBox.warning(self, "Missing document", "The requested document was not found on any store.") sys.exit(1) tabWidget = QtGui.QTabWidget() self.annoTab = AnnotationTab(self.revs, isDoc and (len(self.revs) == 1)) QtCore.QObject.connect(self.annoTab, QtCore.SIGNAL("changed()"), self.__changed) tabWidget.addTab(self.annoTab, "Annotation") tabWidget.addTab(HistoryTab(self.revs), "History") if isDoc: tabWidget.addTab(RevisionTab(self.revs), "Revisions") else: tabWidget.addTab(RevisionTab(self.revs), "Revision") mainLayout.addWidget(tabWidget) if isDoc and (len(self.revs) == 1): self.buttonBox = QtGui.QDialogButtonBox(QtGui.QDialogButtonBox.Save | QtGui.QDialogButtonBox.Close) self.buttonBox.button(QtGui.QDialogButtonBox.Save).setEnabled(False) self.buttonBox.accepted.connect(self.__save) self.buttonBox.rejected.connect(self.reject) else: self.buttonBox = QtGui.QDialogButtonBox(QtGui.QDialogButtonBox.Ok) self.buttonBox.accepted.connect(self.accept) mainLayout.addWidget(self.buttonBox) self.setLayout(mainLayout) self.setWindowTitle("Properties of %s" % (self.annoTab.getTitle()))