예제 #1
0
    def test_is_stale(self):
        """
        Test the staleness of a version.
        """
        v1 = Version(self.replica)
        self.assertFalse(v1.is_stale())

        self.sim.env.now = 42
        v2 = v1.nextv(random.choice([r for r in self.sim.replicas if r != self.replica]))
        self.assertTrue(v1.is_stale())
        self.assertFalse(v2.is_stale())
예제 #2
0
    def test_forked_version_string(self):
        """
        Test the compressability of a forked version string.
        """
        version = Version(self.replica)

        for idx in xrange(5):
            version = version.nextv(self.replica)

        # Now we split
        version_a = version.nextv(self.replica)
        version_b = version.nextv(self.replica)

        for idx in xrange(3):
            version_a = version_a.nextv(self.replica)

        for idx in xrange(9):
            version_b = version_b.nextv(self.replica)

        self.assertEqual(str(version_a), '')
        self.assertEqual(str(version_b), '')
예제 #3
0
    def test_version_string(self):
        """
        Test that the version string is compressed.
        """
        version = Version(self.replica)

        self.assertEqual(str(version), "root->1")

        for idx in xrange(100):
            version = version.nextv(self.replica)

        self.assertEqual(str(version), "100->101")
예제 #4
0
    def test_is_stale(self):
        """
        Test the staleness of a version.
        """
        v1 = Version(self.replica)
        self.assertFalse(v1.is_stale())

        self.sim.env.now = 42
        v2 = v1.nextv(
            random.choice([r for r in self.sim.replicas if r != self.replica]))
        self.assertTrue(v1.is_stale())
        self.assertFalse(v2.is_stale())
예제 #5
0
    def test_forked_version_string(self):
        """
        Test the compressability of a forked version string.
        """
        version = Version(self.replica)

        for idx in xrange(5):
            version = version.nextv(self.replica)

        # Now we split
        version_a = version.nextv(self.replica)
        version_b = version.nextv(self.replica)

        for idx in xrange(3):
            version_a = version_a.nextv(self.replica)

        for idx in xrange(9):
            version_b = version_b.nextv(self.replica)

        self.assertEqual(str(version_a), '')
        self.assertEqual(str(version_b), '')
예제 #6
0
    def test_version_string(self):
        """
        Test that the version string is compressed.
        """
        version = Version(self.replica)

        self.assertEqual(str(version), "root->1")

        for idx in xrange(100):
            version = version.nextv(self.replica)

        self.assertEqual(str(version), "100->101")
예제 #7
0
    def test_version_comparison(self):
        """
        Test version comparison based on fork
        """

        v1 = Version(self.replica)
        v2 = v1.nextv(self.replica)

        self.assertLess(v1, v2)
        self.assertLessEqual(v1, v2)
        self.assertLessEqual(v2, v2)
        self.assertEqual(v1, v1)
        self.assertNotEqual(v1, v2)
        self.assertGreater(v2, v1)
        self.assertGreaterEqual(v2, v1)
        self.assertGreaterEqual(v2, v2)
예제 #8
0
    def test_version_comparison(self):
        """
        Test version comparison based on fork
        """

        v1 = Version(self.replica)
        v2 = v1.nextv(self.replica)

        self.assertLess(v1, v2)
        self.assertLessEqual(v1, v2)
        self.assertLessEqual(v2, v2)
        self.assertEqual(v1, v1)
        self.assertNotEqual(v1, v2)
        self.assertGreater(v2, v1)
        self.assertGreaterEqual(v2, v1)
        self.assertGreaterEqual(v2, v2)
예제 #9
0
    def test_nextv(self):
        """
        Test getting the next version of an object.
        """
        v1 = Version(self.replica)
        self.sim.env.now = 42
        v2 = v1.nextv(random.choice([r for r in self.sim.replicas if r != self.replica]))

        self.assertIsInstance(v2, Version)
        self.assertEqual(v2.parent, v1)
        self.assertEqual(v1.level, v2.level)
        self.assertFalse(v2.committed)
        self.assertGreater(v2.version, v1.version)
        self.assertGreater(v2.created, v1.created)
        self.assertGreater(v2.updated, v1.created)
        self.assertNotEqual(v2.writer, v1.writer)

        self.assertEqual(v1.counter, v2.counter)
예제 #10
0
    def test_nextv(self):
        """
        Test getting the next version of an object.
        """
        v1 = Version(self.replica)
        self.sim.env.now = 42
        v2 = v1.nextv(
            random.choice([r for r in self.sim.replicas if r != self.replica]))

        self.assertIsInstance(v2, Version)
        self.assertEqual(v2.parent, v1)
        self.assertEqual(v1.level, v2.level)
        self.assertFalse(v2.committed)
        self.assertGreater(v2.version, v1.version)
        self.assertGreater(v2.created, v1.created)
        self.assertGreater(v2.updated, v1.created)
        self.assertNotEqual(v2.writer, v1.writer)

        self.assertEqual(v1.counter, v2.counter)