コード例 #1
0
ファイル: tests.py プロジェクト: tkaemming/dht
def test_replicated_cluster():
    """
    Test cluster replication.
    """
    replicas = 3
    node = SimpleNode()
    cluster = ReplicatedCluster((node,), replica_count=replicas)
    assert cluster.read_durability == 2
    assert cluster.write_durability == 2

    cluster.read_durability = 1
    assert cluster.read_durability == 1

    try:
        cluster.read_durability = 0
        assert False
    except ValueError:
        assert True

    try:
        cluster.read_durability = 100
        assert False
    except ValueError:
        assert True

    cluster.read_durability = None
    assert cluster.read_durability == quorum(cluster.replica_count)

    cluster.write_durability = 0
    assert cluster.write_durability == 0

    cluster.write_durability = 1
    assert cluster.write_durability == 1

    try:
        cluster.write_durability = 100
        assert False
    except ValueError:
        assert True

    cluster.write_durability = None
    assert cluster.write_durability == quorum(cluster.replica_count)

    cluster['hello'] = 'world'
    assert len(node) == replicas

    del cluster['hello']
    assert len(node) == 0

    with cluster(read_durability=replicas):
        assert cluster.read_durability == replicas

    assert cluster.read_durability == quorum(replicas)

    with cluster(write_durability=replicas):
        assert cluster.write_durability == replicas

    assert cluster.write_durability == quorum(replicas)
コード例 #2
0
ファイル: replication.py プロジェクト: tkaemming/dht
 def get_write_durability(self):
     value = getattr(self, '_write_durability', None)
     if value is not None:
         return value
     else:
         return quorum(self.replica_count)
コード例 #3
0
ファイル: replication.py プロジェクト: tkaemming/dht
 def get_read_durability(self):
     return getattr(self, '_read_durability', None) or quorum(self.replica_count)