def setup(self): """Setup the networks. Setup only does stuff if there are no networks, this is so it only runs once at the start of the experiment. It first calls the same function in the super (see experiments.py in dallinger). Then it adds a source to each network. """ if not self.networks(): super(MafiaExperiment, self).setup() for net in self.networks(): Source(network=net)
def test_models(self): """#################### #### Test Network #### ####################""" print("") print("Testing models: Network", end="\r") sys.stdout.flush() # create test network: net = models.Network() self.db.add(net) self.db.commit() net = models.Network.query.one() # create a participant participant = models.Participant(worker_id=str(1), hit_id=str(1), assignment_id=str(1), mode="test") self.db.add(participant) self.db.commit() # create some nodes node = models.Node(network=net) agent = Agent(network=net, participant=participant) source = Source(network=net) # create vectors source.connect(direction="to", whom=agent) agent.connect(direction="both", whom=node) # create some infos info = models.Info(origin=agent, contents="ethwth") gene = Gene(origin=source, contents="hkhkhkh") # conditionally transmit and transform source.transmit(what=models.Info) agent.receive() agent.transmit(what=Gene) models.Transformation(info_in=gene, info_out=info) # Test attributes assert net.id == 1 assert isinstance(net.creation_time, datetime) assert net.property1 is None assert net.property2 is None assert net.property3 is None assert net.property4 is None assert net.property5 is None assert net.failed is False assert net.time_of_death is None assert net.type == "network" assert isinstance(net.max_size, int) assert net.max_size == 1e6 assert isinstance(net.full, bool) assert net.full is False assert isinstance(net.role, unicode) assert net.role == "default" # test __repr__() assert repr( net ) == "<Network-1-network with 3 nodes, 3 vectors, 2 infos, 1 transmissions and 1 transformations>" # test __json__() assert net.__json__() == { "id": 1, "type": "network", "max_size": 1e6, "full": False, "role": "default", "creation_time": net.creation_time, "failed": False, "time_of_death": None, "property1": None, "property2": None, "property3": None, "property4": None, "property5": None } # test nodes() for n in [node, agent, source]: assert n in net.nodes() assert net.nodes(type=Agent) == [agent] assert net.nodes(failed=True) == [] for n in [node, agent, source]: assert n in net.nodes(failed="all") assert net.nodes(participant_id=1) == [agent] # test size() assert net.size() == 3 assert net.size(type=Source) == 1 assert net.size(type=Agent) == 1 assert net.size(failed=True) == 0 assert net.size(failed="all") == 3 # test infos() assert len(net.infos(failed="all")) == 2 assert len(net.infos(type=models.Info, failed="all")) == 2 assert len(net.infos(type=Gene, failed="all")) == 1 assert len(net.infos(type=Gene)) == 1 assert len(net.infos(failed=True)) == 0 # test Network.transmissions() assert len(net.transmissions(failed="all")) == 1 assert len(net.transmissions(failed=True)) == 0 assert len(net.transmissions(failed=False)) == 1 assert len(net.transmissions(status="pending", failed="all")) == 0 assert len(net.transmissions(status="received", failed="all")) == 1 # test Network.transformations() assert len(net.transformations(failed="all")) == 1 assert len(net.transformations(failed="all", type=Mutation)) == 0 assert len( net.transformations(failed="all", type=models.Transformation)) == 1 for t in net.transformations(failed="all"): assert type(t.node) == Agent # test latest_transmission_recipient assert net.latest_transmission_recipient() == agent # test Network.vectors() assert len(net.vectors(failed="all")) == 3 assert len(net.vectors(failed=False)) == 3 assert len(net.vectors(failed=True)) == 0 # test fail() net.fail() assert net.nodes() == [] assert len(net.nodes(failed=True)) == 3 assert len(net.nodes(failed="all")) == 3 assert net.infos() == [] assert net.transmissions() == [] assert net.vectors() == [] assert net.transformations() == [] print("Testing models: Network passed!") sys.stdout.flush()