예제 #1
0
def testValidateDataValidSigsConflictingData():
    consense = consensing.Consense()

    response1 = builder.DideryResponseBuilder(
        builder.SignedHistoryBuilder()).withPort(8000)
    response2 = builder.DideryResponseBuilder(builder.SignedHistoryBuilder())
    response3 = builder.DideryResponseBuilder(
        builder.SignedHistoryBuilder().withRotation().withRotation()).withPort(
            8081)

    data = {
        "http://localhost:8000/history": response1.build(),
        "http://localhost:8080/history": response2.build(),
        "http://localhost:8081/history": response3.build()
    }

    consense.validateData(data)

    history1 = response1.historyBuilder
    history3 = response3.historyBuilder

    assert consense.valid_data == {
        history1.signerSig: history1.build().data,
        history3.rotationSig: history3.build().data
    }
    assert history1.signerSig in consense.valid_match_counts
    assert consense.valid_match_counts[history1.signerSig] == 2
    assert history3.rotationSig in consense.valid_match_counts
    assert consense.valid_match_counts[history3.rotationSig] == 1
예제 #2
0
def testValidateDataWithTimeOut():
    consense = consensing.Consense()

    response1 = builder.DideryResponseBuilder(
        builder.SignedHistoryBuilder().withEmptyData()).withPort(
            8000).withStatus(0)
    response2 = builder.DideryResponseBuilder(builder.SignedHistoryBuilder())

    data = {
        "http://localhost:8000/history": response1.build(),
        "http://localhost:8080/history": response2.build()
    }

    consense.validateData(data)

    history2 = response2.historyBuilder

    assert consense.valid_data == {history2.signerSig: history2.build().data}
    assert consense.valid_match_counts == {history2.signerSig: 1}
예제 #3
0
def testConsenseIncompleteMajority():
    consense = consensing.Consense()

    response1 = builder.DideryResponseBuilder(
        builder.SignedHistoryBuilder().withInvalidSignerSignature()).withPort(
            8000)
    response2 = builder.DideryResponseBuilder(
        builder.SignedHistoryBuilder().withRotation())
    response3 = builder.DideryResponseBuilder(
        builder.SignedHistoryBuilder().withRotation().withRotation()).withPort(
            8081)

    data = {
        "http://localhost:8000/history": response1.build(),
        "http://localhost:8080/history": response2.build(),
        "http://localhost:8081/history": response3.build()
    }

    assert consense.consense(data)[0] is None
예제 #4
0
def testValidateDataInvalidSigsIncompleteMajority():
    consense = consensing.Consense()

    response1 = builder.DideryResponseBuilder(
        builder.SignedHistoryBuilder().withInvalidSignerSignature()).withPort(
            8000)
    response2 = builder.DideryResponseBuilder(builder.SignedHistoryBuilder())

    data = {
        "http://localhost:8000/history": response1.build(),
        "http://localhost:8080/history": response2.build()
    }

    consense.validateData(data)

    history2 = response2.historyBuilder
    assert consense.valid_data == {
        history2.signerSig: builder.SignedHistoryBuilder().build().data
    }
    assert consense.valid_match_counts == {history2.signerSig: 1}
예제 #5
0
def test50_50Split():
    consense = consensing.Consense()

    response1 = builder.DideryResponseBuilder(
        builder.SignedHistoryBuilder()).withPort(8000)
    response2 = builder.DideryResponseBuilder(builder.SignedHistoryBuilder())
    response3 = builder.DideryResponseBuilder(
        builder.SignedHistoryBuilder().withRotation().withRotation()).withPort(
            8081)
    response4 = builder.DideryResponseBuilder(
        builder.SignedHistoryBuilder().withRotation().withRotation()).withPort(
            8001)

    data = {
        "http://localhost:8000/history": response1.build(),
        "http://localhost:8080/history": response2.build(),
        "http://localhost:8081/history": response3.build(),
        "http://localhost:8001/history": response4.build()
    }

    assert consense.consense(data)[0] is None
예제 #6
0
def testConsenseAllEqual():
    consense = consensing.Consense()

    response1 = builder.DideryResponseBuilder(
        builder.SignedHistoryBuilder().withRotation()).withPort(8000)

    data = {
        "http://localhost:8000/history": response1.withPort(8000).build(),
        "http://localhost:8080/history": response1.withPort(8080).build(),
        "http://localhost:8081/history": response1.withPort(8081).build()
    }

    signature = response1.historyBuilder.rotationSig

    assert consense.consense(data)[0] == response1.historyBuilder.build().data
    assert signature in consense.valid_data
    assert signature in consense.valid_match_counts
    assert consense.valid_match_counts[signature] == 3