from zeno.test.client.conftest import passThroughReqAcked1

from zeno.client.client import Client
from zeno.test.malicious_behaviors_client import genDoesntSendRequestToSomeNodes

nodeCount = 4
clientFault = genDoesntSendRequestToSomeNodes(skipCount=3)
reqAcked1 = passThroughReqAcked1


# noinspection PyIncorrectDocstring
def testReplyWhenRequestSentToLessThanFPlusOneNodes(looper, nodeSet,
                                                    fClient: Client, replied1):
    """
    In a system with no faulty nodes, even if the client sends the request to
     one node it will get replies from all the nodes.
    """
    pass
import pytest
from zeno.test.client.conftest import passThroughReqAcked1
from zeno.test.helper import whitelistNode
from zeno.test.malicious_behaviors_node import makeNodeFaulty, changesRequest

from zeno.test.malicious_behaviors_client import genDoesntSendRequestToSomeNodes

nodeCount = 4
faultyNodes = 1
clientFault = genDoesntSendRequestToSomeNodes("GammaC", "DeltaC")
reqAcked1 = passThroughReqAcked1

whitelist = ['for InvalidSignature', 'discarding message']


@pytest.fixture(scope="module")
def nodeChangesRequest(nodeSet):
    alpha = nodeSet.Alpha

    # Alpha should not be blacklisted for Invalid Signature by all other nodes
    # for node in nodeSet:
    #     if node != alpha:
    #         node.whitelistNode(alpha.name, 100)
    whitelistNode(alpha.name,
                  [node for node in nodeSet if node != alpha],
                  100)
    makeNodeFaulty(alpha, changesRequest,)


# noinspection PyIncorrectDocstring,PyUnusedLocal,PyShadowingNames
def testReplyUnaffectedByFaultyNode(looper, nodeSet, nodeChangesRequest,
from zeno.test.client.conftest import passThroughReqAcked1

from zeno.client.client import Client
from zeno.test.malicious_behaviors_client import genDoesntSendRequestToSomeNodes

nodeCount = 4
clientFault = genDoesntSendRequestToSomeNodes("AlphaC")
reqAcked1 = passThroughReqAcked1


def testReplyWhenRequestSentToMoreThanFPlusOneNodes(looper, nodeSet,
                                                    fClient: Client, replied1):
    pass