do not use simpy. just use asyncio
This commit is contained in:
parent
9a46622b37
commit
e4ff39be0f
|
@ -5,7 +5,6 @@ from dataclasses import dataclass
|
|||
import dacite
|
||||
import yaml
|
||||
from pysphinx.sphinx import X25519PrivateKey
|
||||
from simpy.core import SimTime
|
||||
|
||||
from mixnet.config import NodeConfig
|
||||
|
||||
|
@ -33,14 +32,13 @@ class Config:
|
|||
|
||||
@dataclass
|
||||
class SimulationConfig:
|
||||
running_time: SimTime
|
||||
duration_sec: int
|
||||
|
||||
def validate(self):
|
||||
# SimTime supports float but better to use int for time accuracy
|
||||
assert isinstance(self.running_time, int) and self.running_time > 0
|
||||
assert self.duration_sec > 0
|
||||
|
||||
def description(self):
|
||||
return f"running_time: {self.running_time}"
|
||||
return f"running_secs: {self.duration_sec}"
|
||||
|
||||
|
||||
@dataclass
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
simulation:
|
||||
# The simulation uses a virtual time (integer). Please see README for more details.
|
||||
running_time: 300
|
||||
duration_sec: 10
|
||||
|
||||
mixnet:
|
||||
num_nodes: 100
|
||||
transmission_rate_per_sec: 10
|
||||
num_nodes: 5
|
||||
transmission_rate_per_sec: 1
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import argparse
|
||||
import asyncio
|
||||
|
||||
from mixnet.sim.config import Config
|
||||
from mixnet.sim.simulation import Simulation
|
||||
|
@ -15,6 +16,6 @@ if __name__ == "__main__":
|
|||
|
||||
config = Config.load(args.config)
|
||||
sim = Simulation(config)
|
||||
sim.run()
|
||||
asyncio.run(sim.run())
|
||||
|
||||
print("Simulation complete!")
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import asyncio
|
||||
import random
|
||||
|
||||
import simpy
|
||||
|
||||
from mixnet.config import MixMembership, NodeInfo
|
||||
from mixnet.node import Node
|
||||
from mixnet.sim.config import Config
|
||||
|
@ -11,8 +10,8 @@ class Simulation:
|
|||
def __init__(self, config: Config):
|
||||
random.seed()
|
||||
self.config = config
|
||||
self.env = simpy.Environment()
|
||||
|
||||
async def run(self):
|
||||
# Initialize mixnet nodes and establish connections
|
||||
node_configs = self.config.mixnet.node_configs()
|
||||
membership = MixMembership(
|
||||
|
@ -22,5 +21,4 @@ class Simulation:
|
|||
for i, node in enumerate(nodes):
|
||||
node.connect(nodes[(i + 1) % len(nodes)])
|
||||
|
||||
def run(self):
|
||||
self.env.run(until=self.config.simulation.running_time)
|
||||
await asyncio.sleep(self.config.simulation.duration_sec)
|
||||
|
|
Loading…
Reference in New Issue