mirror of https://github.com/vacp2p/research.git
status.json
This commit is contained in:
parent
57fd3cc076
commit
395eb3ef57
|
@ -0,0 +1,27 @@
|
||||||
|
{
|
||||||
|
"status": {
|
||||||
|
"prng_seed": 1,
|
||||||
|
"oprefix": "analysis_output",
|
||||||
|
"benchmark": false,
|
||||||
|
"explore": false,
|
||||||
|
"per_node": false,
|
||||||
|
"runs" : {
|
||||||
|
"run-0": {
|
||||||
|
"num_nodes" : 75,
|
||||||
|
"fanout" : 3,
|
||||||
|
"network_type" : "newmanwattsstrogatz",
|
||||||
|
"community_size" : XXX
|
||||||
|
"TODO" : ["get message sizes as fn of community size",
|
||||||
|
"permit multiple communities"],
|
||||||
|
"messages" : {
|
||||||
|
"MEMBERSHIP_UPDATE_MESSAGE" : {"fixedsize": XXX, "varsize" = XXX, "mgspsec" : XXX},
|
||||||
|
"COMMUNITY_DESCRIPTION" : {"size" : XXX, "msgpsec" : XXX},
|
||||||
|
"UNKNOWN": {"size" : XXX, "msgpsec" : XXX},
|
||||||
|
"BACKUP" : {"size" : XXX, "msgpsec" : XXX},
|
||||||
|
"COMMUNITY_REQUEST_TO_JOIN_RESPONSE" : {"size" : XXX, "msgpsec" : XXX},
|
||||||
|
"SYNC_PROFILE_PICTURE" : {"size" : XXX, "msgpsec" : XXX}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -91,10 +91,10 @@ class IOFormats:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Config holds the data for the individual runs. Every analysis instance is a Config instance
|
# WakuConfig holds the data for the individual runs. Every analysis instance is a Config instance
|
||||||
class Config:
|
class WakuConfig:
|
||||||
|
|
||||||
# We need 12 params to fully instantiate Config. Set the defaults for the missing
|
# We need 12 params to fully instantiate Libp2pConfig. Set the defaults for the missing
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
num_nodes=4, fanout=6,
|
num_nodes=4, fanout=6,
|
||||||
network_type=networkType.REGULAR.value,
|
network_type=networkType.REGULAR.value,
|
||||||
|
@ -217,11 +217,11 @@ class Config:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Analysis performs the runs. It creates a Config object and runs the analysis on it
|
# LibP2P Analysis performs the runs. It creates a Config object and runs the analysis on it
|
||||||
class Analysis(Config):
|
class WakuAnalysis(WakuConfig):
|
||||||
# accept variable number of parameters with missing values set to defaults
|
# accept variable number of parameters with missing values set to defaults
|
||||||
def __init__(self, **kwargs):
|
def __init__(self, **kwargs):
|
||||||
Config.__init__(self, **kwargs)
|
WakuConfig.__init__(self, **kwargs)
|
||||||
|
|
||||||
def pretty_print_usage(self, load_fn, num_nodes):
|
def pretty_print_usage(self, load_fn, num_nodes):
|
||||||
load = load_fn(num_nodes)
|
load = load_fn(num_nodes)
|
||||||
|
@ -573,7 +573,7 @@ def wakurtosis(ctx: typer.Context, config_file: Path,
|
||||||
|
|
||||||
messages = {}
|
messages = {}
|
||||||
messages["topic1"] = {"size" : msg_size, "msgpsec" : msgpsec}
|
messages["topic1"] = {"size" : msg_size, "msgpsec" : msgpsec}
|
||||||
analysis = Analysis(**{ "num_nodes" : num_nodes,
|
analysis = WakuAnalysis(**{ "num_nodes" : num_nodes,
|
||||||
"fanout" : fanout,
|
"fanout" : fanout,
|
||||||
"messages" : messages,
|
"messages" : messages,
|
||||||
"network_type" : network_type,
|
"network_type" : network_type,
|
||||||
|
@ -595,7 +595,7 @@ def batch(ctx: typer.Context, batch_file: Path):
|
||||||
if not per_node:
|
if not per_node:
|
||||||
for k, v in run["messages"].items():
|
for k, v in run["messages"].items():
|
||||||
run["messages"][k]["msgpsec"] = run["messages"][k]["msgpsec"] / run["num_nodes"]
|
run["messages"][k]["msgpsec"] = run["messages"][k]["msgpsec"] / run["num_nodes"]
|
||||||
analysis = Analysis(**run)
|
analysis = WakuAnalysis(**run)
|
||||||
analysis.run(explore=explore)
|
analysis.run(explore=explore)
|
||||||
print(f'batch: done')
|
print(f'batch: done')
|
||||||
|
|
||||||
|
@ -633,7 +633,7 @@ def cli(ctx: typer.Context,
|
||||||
explore : bool = typer.Option(True,
|
explore : bool = typer.Option(True,
|
||||||
help="Explore or not to explore")):
|
help="Explore or not to explore")):
|
||||||
|
|
||||||
analysis = Analysis(**{ "num_nodes" : num_nodes,
|
analysis = WakuAnalysis(**{ "num_nodes" : num_nodes,
|
||||||
"fanout" : fanout,
|
"fanout" : fanout,
|
||||||
"network_type" : network_type.value,
|
"network_type" : network_type.value,
|
||||||
"messages" : messages,
|
"messages" : messages,
|
||||||
|
@ -649,6 +649,25 @@ def cli(ctx: typer.Context,
|
||||||
analysis.run(explore=explore)
|
analysis.run(explore=explore)
|
||||||
print("cli: done")
|
print("cli: done")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@app.command()
|
||||||
|
def status(ctx: typer.Context, status_config: Path):
|
||||||
|
status_json = _sanity_check(status_config, [ Keys.STATUS ], Keys.JSON)
|
||||||
|
explore = batch_json[Keys.BATCH][Keys.EXPLORE]
|
||||||
|
per_node = batch_json[Keys.BATCH][Keys.PER_NODE]
|
||||||
|
runs = batch_json[Keys.BATCH][Keys.RUNS]
|
||||||
|
for r in runs:
|
||||||
|
run = runs[r]
|
||||||
|
run["per_hop_delay"] = 0.010
|
||||||
|
if not per_node:
|
||||||
|
for k, v in run["messages"].items():
|
||||||
|
run["messages"][k]["msgpsec"] = run["messages"][k]["msgpsec"] / run["num_nodes"]
|
||||||
|
analysis = WakuAnalysis(**run)
|
||||||
|
analysis.run(explore=explore)
|
||||||
|
print(f'batch: done')
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
app()
|
app()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue