diff --git a/DAS/configuration.py b/DAS/configuration.py index c840366..2ff9d68 100644 --- a/DAS/configuration.py +++ b/DAS/configuration.py @@ -1,6 +1,6 @@ #!/bin/python3 -import configparser +import configparser, logging, sys class Configuration: """This class stores all the configuration parameters for the given run.""" @@ -11,39 +11,75 @@ class Configuration: config = configparser.RawConfigParser() config.read(fileName) - self.nvStart = int(config.get("Simulation Space", "numberValidatorStart")) - self.nvStop = int(config.get("Simulation Space", "numberValidatorStop")) - self.nvStep = int(config.get("Simulation Space", "numberValidatorStep")) + try: + self.nvStart = int(config.get("Simulation Space", "numberValidatorStart")) + self.nvStop = int(config.get("Simulation Space", "numberValidatorStop")) + self.nvStep = int(config.get("Simulation Space", "numberValidatorStep")) - self.blockSizeStart = int(config.get("Simulation Space", "blockSizeStart")) - self.blockSizeStop = int(config.get("Simulation Space", "blockSizeStop")) - self.blockSizeStep = int(config.get("Simulation Space", "blockSizeStep")) + self.blockSizeStart = int(config.get("Simulation Space", "blockSizeStart")) + self.blockSizeStop = int(config.get("Simulation Space", "blockSizeStop")) + self.blockSizeStep = int(config.get("Simulation Space", "blockSizeStep")) - self.netDegreeStart = int(config.get("Simulation Space", "netDegreeStart")) - self.netDegreeStop = int(config.get("Simulation Space", "netDegreeStop")) - self.netDegreeStep = int(config.get("Simulation Space", "netDegreeStep")) + self.netDegreeStart = int(config.get("Simulation Space", "netDegreeStart")) + self.netDegreeStop = int(config.get("Simulation Space", "netDegreeStop")) + self.netDegreeStep = int(config.get("Simulation Space", "netDegreeStep")) - self.failureRateStart = int(config.get("Simulation Space", "failureRateStart")) - self.failureRateStop = int(config.get("Simulation Space", "failureRateStop")) - self.failureRateStep = int(config.get("Simulation Space", "failureRateStep")) + self.failureRateStart = int(config.get("Simulation Space", "failureRateStart")) + self.failureRateStop = int(config.get("Simulation Space", "failureRateStop")) + self.failureRateStep = int(config.get("Simulation Space", "failureRateStep")) - self.chiStart = int(config.get("Simulation Space", "chiStart")) - self.chiStop = int(config.get("Simulation Space", "chiStop")) - self.chiStep = int(config.get("Simulation Space", "chiStep")) + self.chiStart = int(config.get("Simulation Space", "chiStart")) + self.chiStop = int(config.get("Simulation Space", "chiStop")) + self.chiStep = int(config.get("Simulation Space", "chiStep")) + except: + sys.exit("Configuration Error: It seems some of the [Simulation Space] parameters are missing. Cannot continue :( ") - self.numberRuns = int(config.get("Advanced", "numberRuns")) - self.deterministic = config.get("Advanced", "deterministic") - self.dumpXML = config.get("Advanced", "dumpXML") - if self.nvStop < (self.blockSizeStart*4): - print("ERROR: The number of validators cannot be lower than the block size * 4") - exit(1) - if self.chiStart < 1: - print("Chi has to be greater than 0") - exit(1) + + try: + self.numberRuns = int(config.get("Advanced", "numberRuns")) + self.deterministic = config.get("Advanced", "deterministic") + self.dumpXML = config.get("Advanced", "dumpXML") + self.logLevel = config.get("Advanced", "logLevel") + self.visualization = config.get("Advanced", "visualization") + except: + sys.exit("Configuration Error: It seems some of the [Advanced] parameters are missing. Cannot continue :( ") + self.test() + + def test(self): + + print("Testing configuration...") + if self.logLevel == "INFO": + self.logLevel = logging.INFO + elif self.logLevel == "DEBUG": + self.logLevel = logging.DEBUG + else: + self.logLevel = logging.INFO + + if self.nvStart >= self.nvStop: + sys.exit("Configuration Error: numberValidatorStart has to be smaller than numberValidatorStop") + + if self.failureRateStart >= self.failureRateStop: + sys.exit("Configuration Error: failureRateStart has to be smaller than failureRateStop") + + if self.blockSizeStart >= self.blockSizeStop: + sys.exit("Configuration Error: blockSizeStart has to be smaller than blockSizeStop") + + if self.netDegreeStart >= self.netDegreeStop: + sys.exit("Configuration Error: netDegreeStart has to be smaller than netDegreeStop") + + if self.chiStart >= self.chiStop: + sys.exit("Configuration Error: chiStart has to be smaller than chiStop") + + + if self.nvStart < self.blockSizeStop: + sys.exit("Configuration Error: numberValidatorStart hast to be larger than blockSizeStop.") + + if self.chiStart < 2: + sys.exit("Configuration Error: Chi has to be greater than 1.") + if self.chiStop > self.blockSizeStart: - print("Chi (%d) has to be smaller or equal to block the size (%d)" % (self.chiStop, self.blockSizeStart)) - exit(1) + sys.exit("Configuration Error: Chi (%d) has to be smaller or equal to block the size (%d)" % (self.chiStop, self.blockSizeStart)) diff --git a/DAS/simulator.py b/DAS/simulator.py index 267fa82..b0902d9 100644 --- a/DAS/simulator.py +++ b/DAS/simulator.py @@ -11,14 +11,14 @@ from DAS.validator import * class Simulator: """This class implements the main DAS simulator.""" - def __init__(self, shape): + def __init__(self, shape, config): """It initializes the simulation with a set of parameters (shape).""" self.shape = shape self.format = {"entity": "Simulator"} self.result = Result(self.shape) self.validators = [] self.logger = [] - self.logLevel = logging.INFO + self.logLevel = config.logLevel self.proposerID = 0 self.glob = [] diff --git a/config.ini b/config.ini index 052f754..12bd749 100644 --- a/config.ini +++ b/config.ini @@ -14,7 +14,7 @@ blockSizeStep = 16 netDegreeStart = 6 netDegreeStop = 8 -netDegreeStep = 1 +netDegreeStep = 2 chiStart = 4 chiStop = 8 @@ -26,3 +26,5 @@ chiStep = 2 deterministic = 0 numberRuns = 2 dumpXML = 1 +visualization = 1 +logLevel = INFO diff --git a/study.py b/study.py index 25e8735..0df9365 100644 --- a/study.py +++ b/study.py @@ -11,7 +11,7 @@ def study(): config = Configuration(sys.argv[1]) shape = Shape(0, 0, 0, 0, 0, 0) - sim = Simulator(shape) + sim = Simulator(shape, config) sim.initLogger() results = [] simCnt = 0