mirror of
https://github.com/status-im/libp2p-test-plans.git
synced 2025-01-23 21:31:16 +00:00
progress
This commit is contained in:
parent
bc1e743e14
commit
7a920466af
@ -1,7 +1,8 @@
|
||||
ARG NimVersion="latest"
|
||||
FROM nimlang/nim:${NimVersion}-alpine as builder
|
||||
FROM nimlang/nim:${NimVersion}-ubuntu as builder
|
||||
|
||||
RUN nimble install -y "https://github.com/status-im/testground-nim-sdk@#c282ff68c08ef85a7ca011e077e3e69eb1a6edec"
|
||||
RUN nimble install -y "https://github.com/status-im/testground-nim-sdk@#872753fe083c470ecce8e3a90091cf8dee7840ac"
|
||||
RUN apt update && apt install -y iproute2
|
||||
|
||||
#ARG Libp2pVersion="#fc5a5731"
|
||||
#RUN nimble install -y "libp2p@${Libp2pVersion}"
|
||||
|
@ -1,8 +1,8 @@
|
||||
import serialization, json_serialization, stew/endians2, stew/byteutils
|
||||
import serialization, json_serialization, stew/endians2, stew/byteutils, tables
|
||||
import libp2p, testground_sdk, libp2p/protocols/pubsub/rpc/messages
|
||||
import libp2p/muxers/mplex/lpchannel
|
||||
import libp2p/muxers/mplex/lpchannel, libp2p/protocols/ping
|
||||
import chronos
|
||||
import sequtils, hashes, metrics
|
||||
import sequtils, hashes, math, metrics
|
||||
from times import getTime, toUnix, fromUnix, `-`, initTime, `$`, inMilliseconds
|
||||
|
||||
type
|
||||
@ -10,14 +10,55 @@ type
|
||||
id {.serializedFieldName: "ID".}: string
|
||||
addrs {.serializedFieldName: "Addrs".}: seq[string]
|
||||
|
||||
|
||||
const
|
||||
distrib = @[4881,2355,817,598,558,544,463,382,337,268,220,218,193,138,137,116,113,83,82,70,53,49,48,48,47,40,34,34,28,24,24,22,21,21,20]
|
||||
distribCumSummed = cumsummed(distrib)
|
||||
pings = [
|
||||
[44.36658060200671,121.7103606965175,134.160985074627,112.3105820895522,230.9519076923077,106.3745739484395,123.7739104477611,158.0198834586466,54.2242902155887,183.0823283582089,231.8411467661692,114.449052238806,125.9023100000001,114.0991007462686,202.4451940298507,183.3467552238806,137.3342089552238,125.6080696517413,239.7308208955223,139.6294701492538,145.8509538461538,143.9053880597016,136.5220525,180.7054029850746,134.9174029850745,140.505552238806,163.2895895522389,249.7635323383084,148.8084726368161,247.1051194029851,153.0760149253732,241.257776119403,133.6655373134329,217.2259950248756,147.3099552238806],
|
||||
[122.8982014925373,17.12488888888889,38.40466666666667,19.12664583333333,167.6928333333333,26.80013636363635,29.38204166666667,242.4292083333333,127.7717592592593,280.7611666666667,288.8396111111112,37.51733333333333,25.17225000000001,20.422,242.8361666666667,80.01413333333332,31.03925000000001,40.51005555555555,215.2760416666667,43.18975,43.42841666666666,56.32766666666667,34.07397222222222,258.7553333333333,31.47316666666666,32.88675,58.92154166666666,154.54825,222.3336111111111,220.4501666666667,41.46116666666667,272.043,23.89066666666666,299.7903888888889,33.914],
|
||||
[135.0690895522388,38.40683333333334,0.056,32.035,186.24,38.709,44.7015,228.18475,141.0047777777778,266.377,282.091,49.882,38.08866666666666,34.53400000000001,268.835,49.90219999999999,34.70399999999999,59.312,221.42325,17.998,14.646,69.145,50.84366666666667,290.107,40.5445,19.525,82.61425,170.8151666666667,229.812,210.277,56.569,281.965,32.82,316.02,52.251],
|
||||
[112.0202388059701,19.1664375,31.715875,5.550156250000001,188.044,13.78580681818182,27.13596875,241.54290625,120.2377777777778,278.41025,286.6839791666667,25.7328125,25.601,9.804343750000001,229.35775,77.6232,32.73068749999999,36.45912499999999,215.43496875,34.35212499999999,34.9195625,47.23974999999999,33.02910416666666,270.369875,30.8835625,31.802375,59.83525,149.6137291666666,206.148375,205.9345,43.033125,218.913375,30.383875,292.1350833333333,38.46725],
|
||||
[229.4295076923076,165.5463333333333,185.086,188.429625,0.047,171.7168181818182,248.09225,80.64725,225.7717777777778,104.888,126.0795,221.902,160.3976666666667,189.142,33.555,155.0268,190.0085,167.964,253.179,179.18,186.1015,195.894,206.6623333333333,53.903,180.7605,186.1115,251.7645,55.58433333333333,384.0573333333334,29.411,268.426,12.427,184.694,120.617,185.802],
|
||||
[105.8019131614654,26.37874242424243,37.82790909090909,13.83636363636363,172.1511818181818,8.899107438016527,27.91397727272728,239.1267272727273,112.2637448979592,264.1875454545454,282.1421969696971,16.51018181818182,27.40336363636364,16.46447727272728,245.0097272727272,82.00910909090906,41.1844090909091,36.0469393939394,221.4708863636364,40.01254545454545,43.06654545454545,52.26354545454546,39.51713636363635,260.1740909090909,36.74204545454545,41.90254545454544,64.72025000000001,159.6466818181819,203.2413333333333,209.3953636363636,55.87090909090909,253.3187272727273,34.60109090909091,283.3238484848486,51.6419090909091],
|
||||
[121.6173917910448,31.25816666666667,51.89425,25.82078125,244.50875,23.78474999999999,23.856375,263.1041875,125.0092777777778,274.7875,305.8799999999999,41.106875,35.75025,23.45575,232.483,88.81245,46.722125,42.35675,220.5390625,55.2885,59.083125,61.58999999999999,44.636875,285.497,50.68549999999999,64.35325,71.5005,160.7583333333333,221.6285833333334,235.111,59.85325,279.74825,49.694,291.1969166666667,53.378],
|
||||
[157.4741466165414,243.057875,227.8435,242.0025625,80.75675000000001,239.8611363636363,258.7430000000001,9.477375,156.5749166666667,73.99225000000001,156.0927916666667,239.12525,241.4717083333333,238.432,56.33925,170.26725,263.615375,239.9341666666667,121.69225,241.2215,212.184125,271.827,268.0859583333332,47.28125,240.016875,253.777,300.425125,158.2034166666667,295.8528333333333,103.5955,271.12925,85.61199999999999,240.6115,201.1833333333333,270.7735],
|
||||
[53.64870978441122,127.3707222222222,140.9534444444444,120.4545277777778,225.2274444444444,112.2730510204081,122.7986666666667,156.4016388888889,41.87303703703704,183.4547777777778,233.9759433962265,119.5576666666667,129.831537037037,118.8290571428572,208.0603333333333,188.3183777777778,137.8493333333333,135.6171851851851,227.5549722222222,139.9407222222222,145.7182222222222,148.9203333333334,142.5076851851852,209.011,140.1657777777778,143.9815555555556,170.7914166666667,258.0705925925926,168.8373703703704,262.2673333333333,159.187,243.5984444444445,131.3744444444444,224.8884444444444,157.3653333333333],
|
||||
[181.0367611940299,285.1171666666667,266.471,278.831,104.742,264.2763636363637,286.474,72.22624999999999,183.5967777777778,0.028,283.7178333333333,277.331,278.8556666666667,273.0955,180.569,195.301,287.1335,272.757,149.50275,265.7765,278.281,292.024,295.9256666666666,64.47199999999999,296.905,296.155,293.7295,285.1138333333333,326.5256666666667,204.293,315.302,209.518,282.744,290.919,312.059],
|
||||
[231.7279477611938,289.4140833333333,282.0616666666667,286.8461874999999,126.3153333333333,282.7740303030303,304.692375,156.399,233.526962264151,284.139,28.62105882352941,287.7373333333333,279.0852777777778,285.999375,152.5205,320.4940333333333,309.4675833333333,273.8232777777778,301.4283333333333,311.0408333333333,298.1948333333333,313.1405,295.8770833333334,258.9805,313.5571666666667,310.1943333333333,327.4525416666667,236.8533055555556,334.0666666666666,251.0745,325.0421666666667,143.4386666666667,291.1776666666667,46.73444444444445,315.873],
|
||||
[114.1986641791045,36.68233333333333,48.821,25.7189375,221.367,17.02486363636364,35.953875,238.87325,119.8636666666667,277.03,287.841,2.00825,38.812,25.5225,270.997,93.10130000000001,54.2555,40.6185,227.55925,46.89575,61.66325,61.848,47.69141666666668,269.93,45.12824999999999,47.48275,78.143125,165.2374166666667,206.4993333333333,261.7965,61.4765,282.398,39.13,289.0028333333333,56.816],
|
||||
[125.6252824999999,25.38577777777778,37.62949999999999,25.848875,162.6756666666666,27.86845454545455,25.97325,241.4505,129.9219074074074,279.1861666666667,279.2375000000001,39.57008333333334,12.31402777777778,24.031375,284.7633333333333,83.95413333333335,30.58316666666667,33.46461111111111,225.4943333333333,42.2835,43.88825,54.54883333333333,26.05155555555556,266.0738333333334,34.34408333333334,45.27424999999999,58.50404166666667,151.3307777777778,231.0468888888889,180.3175,46.94966666666667,300.0258333333333,23.5525,296.5062222222223,45.50283333333334],
|
||||
[114.0338768656717,20.41433333333334,34.37,9.905937499999999,189.548,16.41184090909091,21.5503125,238.490125,119.2853714285714,273.237,286.0769583333333,24.858125,24.08445833333333,8.923499999999999,234.78825,79.15899999999999,30.193,33.1165,218.553125,36.691875,41.446,48.0705,34.82483333333334,258.17175,33.35825,40.90575,58.295625,164.9848333333333,212.134,191.994,48.03825,258.91425,36.21525,284.9784166666666,40.26675],
|
||||
[202.8883134328359,249.4823333333333,267.489,229.33725,33.657,245.3716363636364,231.3195,56.35925,208.3373333333333,180.746,152.7178333333333,271.332,284.6386666666667,234.6645,0.043,171.5068,238.934,282.695,95.49825000000001,217.9135,277.719,296.194,256.7985,27.385,235.8345,299.767,279.94475,89.51316666666668,362.089,64.437,289.176,45.089,267.075,250.354,253.173],
|
||||
[182.1542388059703,78.6388,49.9564,78.18759999999999,154.9856,82.46725454545457,93.48395000000001,169.8175000000001,188.4760222222222,195.3484,320.9855666666667,94.62660000000001,83.38336666666667,78.69305000000001,171.5252,42.74196000000001,95.5574,103.0065333333334,158.97575,54.2138,68.32629999999999,110.8096,101.2212,294.7738000000001,92.4149,63.41369999999999,131.57305,224.9386333333333,268.6172666666666,226.542,52.8302,171.6876,88.09100000000001,357.9033333333333,98.53879999999999],
|
||||
[138.1772164179105,30.10225,34.668,32.79125,189.843,41.57295454545455,45.27575,263.536125,138.0536666666667,286.971,309.3375,53.86325,30.68575,30.0115,238.9785,95.21379999999999,8.536250000000001,51.03533333333334,225.837625,50.0305,45.01775,70.084,43.19766666666666,300.422,39.50275,44.69775,65.30475,162.9131666666667,256.4633333333333,202.606,64.6695,252.842,20.9145,305.7738333333334,41.474],
|
||||
[124.71892039801,40.45094444444445,59.36833333333333,36.71179166666666,167.729,35.7741212121212,32.3195,239.8371666666667,135.935925925926,272.8166666666667,273.6978333333333,40.35116666666667,33.18472222222223,32.97291666666667,282.4993333333333,103.1076,50.99866666666667,6.969222222222221,271.4029166666667,61.31133333333333,60.65916666666666,24.523,46.68066666666666,268.0813333333334,50.23283333333333,59.18733333333333,81.70575000000002,165.6832777777778,229.6753333333334,202.2033333333333,64.48333333333333,291.1133333333333,43.387,293.5243333333333,60.14666666666667],
|
||||
[254.3431593406593,262.6815238095238,194.30825,238.0438947368421,255.50475,284.1357931034482,267.3809090909091,218.3186666666666,253.4891481481481,357.3926666666666,308.5653333333333,268.7653333333333,263.287875,284.8490909090909,144.5286666666667,248.1335384615385,225.494,255.28575,176.9831666666666,297.333,263.5228333333333,198.745,246.1892666666667,104.4255,283.6594,235.83975,252.7685454545455,244.56375,331.4858571428572,245.3646666666666,216.8653333333333,259.1805000000001,351.25,263.1912222222222,291.985],
|
||||
[138.5762611940299,40.33599999999999,17.8455,34.7674375,179.7995,40.64327272727273,44.61125,241.533375,140.2666666666667,266.7725,311.1775833333333,47.3855,42.14758333333334,36.7275,218.1955,54.32640000000001,49.95425,61.439,245.359125,4.1975,31.44425,68.069,60.319,304.7905,52.071,21.13975,74.7135,171.09675,234.4883333333333,212.276,55.431,242.03,47.182,317.625,58.171],
|
||||
[144.0743538461538,41.76833333333332,14.949,36.6263125,185.596,44.26163636363636,52.031875,214.58275,148.1995,278.2415,298.9989166666667,59.91025,42.94358333333334,42.378,280.175,69.3085,46.34800000000001,60.12333333333333,222.826375,29.32125,3.9775,72.9675,54.87991666666667,301.6215,23.00625,32.96275,81.29412499999999,164.1974166666667,240.6605,214.219,40.1405,294.1355,27.4255,322.2943333333334,39.73399999999999],
|
||||
[141.5894029850746,53.469,68.59399999999999,47.12125,195.906,52.33799999999999,65.655,271.7954999999999,149.2637777777778,291.902,312.5866666666667,61.718,54.42099999999999,47.96850000000001,296.08,110.9664,70.4045,24.541,253.23625,67.77549999999999,75.113,0.1,70.22783333333332,297.946,64.642,73.4735,94.15375,178.881,235.6853333333333,219.042,81.283,304.449,69.779,329.0296666666666,78.827],
|
||||
[136.2947150000001,31.74147222222222,48.51183333333334,32.32689583333333,205.3368333333333,38.53557575757578,33.76833333333333,267.3577916666667,142.4139814814815,295.967,294.8322222222222,46.91625000000001,24.96622222222222,34.05641666666666,255.0668333333333,99.5971,42.16441666666667,46.28566666666667,235.599625,59.26291666666667,53.17491666666668,70.18883333333333,17.68072222222222,294.3946666666666,47.34358333333333,49.47799999999999,60.50229166666667,164.8728611111111,225.9619444444444,211.766,60.54933333333333,264.4338333333333,32.84733333333334,305.693,52.88583333333334],
|
||||
[180.2908059701493,248.9636666666667,290.045,270.68575,53.852,260.8370909090909,281.06375,47.20699999999999,209.2035555555555,64.449,259.2868333333333,270.5435,266.2838333333333,258.14225,27.364,294.6744,300.5715,268.205,82.92574999999999,304.587,300.2695,297.924,294.9118333333333,0.034,277.8145,294.348,330.52075,128.7038333333333,323.3486666666666,81.736,284.868,76.325,245.781,205.6016666666667,309.629],
|
||||
[135.6290671641791,32.83275,40.841,31.03206249999999,181.023,37.15736363636364,45.173875,239.89875,140.5319444444445,296.959,313.5480833333334,45.898,33.99583333333333,33.556125,235.2915,92.37260000000001,39.5545,50.255,231.576875,52.1015,24.0195,64.72800000000001,48.02241666666666,277.892,2.70225,35.65975,72.29575,170.0513333333333,234.4701666666667,201.4695,24.513,287.943,37.099,312.329,43.0135],
|
||||
[140.4737835820896,31.362,18.8245,31.6785625,186.437,41.86459090909091,60.81575,253.7485,144.1644444444445,296.2245,310.16775,47.145,45.18808333333333,40.819875,299.7,63.48010000000001,44.817,59.33083333333333,230.062375,20.903,31.40275,73.55500000000001,51.11533333333334,294.353,35.612,4.95975,68.7445,168.5761666666667,237.3283333333333,225.1885,53.6265,327.709,44.4325,306.9275,64.6555],
|
||||
[163.174776119403,56.80483333333333,81.70650000000001,59.91215625,251.87125,65.53040909090909,70.61781250000001,300.636875,171.3212777777778,293.72975,327.6765,76.49824999999998,58.59654166666667,58.2273125,279.7262500000001,131.263,65.434375,81.86066666666667,255.5264375000001,74.792,81.76624999999999,94.47675000000001,61.65237499999999,330.673,72.41575,68.79887500000001,9.122124999999999,201.3844583333333,243.7505,250.4665,73.35899999999999,291.206,63.85650000000001,331.432,47.88825],
|
||||
[250.5990124378112,153.2340555555556,169.9433333333333,150.3476458333333,55.7945,160.2710303030303,153.2413333333333,158.356625,258.5236666666667,284.9668333333333,240.6415277777778,166.6539166666667,152.0894444444444,164.9684583333333,90.08766666666666,225.9619666666666,162.34525,166.2276666666667,253.1150416666668,171.6709166666666,165.73875,178.909,166.664,128.4938333333333,170.2776666666667,170.3145,201.4664166666667,23.58741666666666,355.0607777777777,95.88566666666667,164.632,79.24883333333332,168.2688333333334,312.4103888888889,179.023],
|
||||
[148.1026019900499,213.8952777777778,227.313,202.235,382.9633333333333,203.1185454545455,219.3625833333333,295.4661666666666,168.2072592592593,326.826,335.2267777777777,201.2895,226.8027777777777,215.7803333333333,361.863,266.5835333333334,247.2351666666667,232.2513333333333,343.1905833333334,233.7711666666667,247.7326666666667,239.6076666666667,223.2126666666666,315.7523333333334,230.928,240.6003333333333,243.1471666666667,353.2942777777778,32.24333333333334,368.396,259.003,383.9083333333334,218.7753333333334,330.7297777777778,232.727],
|
||||
[247.6117910447761,221.775,211.23,207.193875,29.478,210.2388181818182,231.06375,105.071,262.3045555555555,219.576,249.9141666666667,262.818,181.84,192.06475,64.40000000000001,230.3356,201.6625,202.0946666666667,174.7065,219.7865,222.4285,218.654,214.755,92.041,200.2015,224.2915,250.6055,98.14700000000001,368.6013333333333,0.04,212.205,40.279,223.67,280.253,203.624],
|
||||
[153.0995820895522,40.63133333333333,56.403,43.505,268.087,56.61009090909091,50.0065,271.122,159.3668888888889,315.32,325.0801666666666,61.493,47.12533333333334,47.80175000000001,289.0,52.8256,64.50149999999999,64.45466666666667,215.3795,55.72,38.472,81.333,61.26683333333333,284.862,24.542,53.60299999999999,72.98425,163.5335,253.1343333333333,213.042,0.036,282.356,36.506,326.328,55.089],
|
||||
[242.839,286.1315,281.69,220.576125,12.507,255.3977272727272,271.0962500000001,85.629,244.2424444444445,209.52,157.6661666666667,282.622,300.1396666666666,258.899,45.039,171.6442,253.1345,295.9833333333333,136.78425,242.27,293.9415,304.537,264.6055,75.931,287.845,348.5315,291.4245,79.776,391.476,40.392,282.404,0.062,183.224,225.7763333333334,288.575],
|
||||
[130.0541641791044,25.11866666666667,33.061,30.41125,184.895,35.36109090909091,50.91974999999999,240.65125,131.7905555555556,283.033,290.9556666666667,39.3905,23.4055,36.1565,266.838,87.87840000000001,20.965,43.31933333333333,282.1,45.68,28.108,70.21599999999999,33.75516666666666,245.804,37.071,44.314,63.42075,168.4038333333333,219.5726666666667,222.022,36.616,183.178,0.037,318.1306666666666,43.312],
|
||||
[216.8100099502486,300.5444444444444,316.6593333333333,292.3291666666667,121.036,283.2828484848485,297.2053333333333,201.0980833333334,225.0129629629629,290.866,46.64511111111111,288.2743333333333,295.8990555555555,284.8955833333334,250.2493333333333,357.4271333333334,305.6871666666667,293.4314444444444,322.1128333333334,317.7183333333334,312.994,328.94,306.4028333333334,205.4086666666667,311.9525,306.5118333333333,331.3458333333333,320.1418888888889,332.097,278.9256666666666,325.971,225.645,318.217,7.411777777777777,320.3413333333333],
|
||||
[146.9385671641791,32.84099999999999,49.436,38.62575,185.749,51.79018181818182,54.73849999999999,270.7835,157.7763333333333,311.896,315.864,57.668,45.17449999999999,39.936,253.237,98.36399999999999,41.551,60.11266666666667,229.91175,58.005,41.274,78.907,54.2985,309.594,42.9865,64.7255,47.65949999999999,178.0352,232.703,203.021,55.078,288.579,42.862,320.599,0.033]]
|
||||
|
||||
|
||||
chunks = 4
|
||||
|
||||
|
||||
proc msgIdProvider(m: Message): Result[MessageID, ValidationResult] =
|
||||
return ok(($m.data.hash).toBytes())
|
||||
|
||||
testground(client):
|
||||
let addresses = getInterfaces().filterIt(it.name == "eth1").mapIt(it.addresses)
|
||||
if addresses.len < 1 or addresses[0].len < 1:
|
||||
quit "Can't find local ip!"
|
||||
|
||||
let peersTopic = client.subscribe("peers", PeerData)
|
||||
|
||||
let
|
||||
@ -26,7 +67,37 @@ testground(client):
|
||||
isPublisher = myId <= publisherCount
|
||||
isAttacker = (not isPublisher) and myId - publisherCount <= client.param(int, "attacker_count")
|
||||
rng = libp2p.newRng()
|
||||
address = addresses[0][0].host
|
||||
randCountry = rng.rand(distribCumSummed[^1])
|
||||
country = distribCumSummed.find(distribCumSummed.filterIt(it >= randCountry)[0])
|
||||
theIp = "16.0." & $(country + 1) & "." & $(myId + 2)
|
||||
#TODO
|
||||
var routingRules: seq[LinkRule]
|
||||
#for index, ping in pings[country + 1]:
|
||||
# routingRules.add(LinkRule(subnet: "16.0." & $(index + 1) & ".0/24", latency: int(ping) * 1_000_000))
|
||||
|
||||
await sleepAsync(3.seconds)
|
||||
let theLatency = 40 + rng.rand(20)
|
||||
await client.updateNetworkParameter(
|
||||
NetworkConf(
|
||||
network: "default",
|
||||
enable: true,
|
||||
ipv4: some theIp & "/16",
|
||||
callback_state: "ready",
|
||||
callback_target: some client.testInstanceCount,
|
||||
routing_policy: "accept_all",
|
||||
rules: routingRules,
|
||||
default: LinkShape(
|
||||
latency: theLatency * 1_000_000, # in nanoseconds
|
||||
jitter: 2_000_000, # in nanoseconds
|
||||
bandwidth: 50_000_000, # bits per seconds
|
||||
)
|
||||
|
||||
)
|
||||
)
|
||||
await client.waitForBarrier("ready", client.testInstanceCount)
|
||||
|
||||
let
|
||||
address = initTAddress(theIp & ":0")
|
||||
switch =
|
||||
SwitchBuilder
|
||||
.new()
|
||||
@ -46,11 +117,20 @@ testground(client):
|
||||
verifySignature = false,
|
||||
anonymize = true,
|
||||
)
|
||||
pingProtocol = Ping.new(rng=rng)
|
||||
gossipSub.parameters.floodPublish = false
|
||||
#gossipSub.parameters.lazyPushMinSize = 10000
|
||||
gossipSub.parameters.opportunisticGraftThreshold = 10000
|
||||
gossipSub.parameters.lazyPushThreshold = 1_000_000_000
|
||||
#gossipSub.parameters.lazyPushThreshold = 0
|
||||
gossipSub.parameters.opportunisticGraftThreshold = -10000
|
||||
gossipSub.parameters.heartbeatInterval = 700.milliseconds
|
||||
gossipSub.parameters.pruneBackoff = 3.seconds
|
||||
gossipSub.parameters.gossipFactor = 0.05
|
||||
gossipSub.parameters.d = 8
|
||||
gossipSub.parameters.dLow = 6
|
||||
gossipSub.parameters.dHigh = 12
|
||||
gossipSub.parameters.dScore = 6
|
||||
gossipSub.parameters.dOut = 6 div 2
|
||||
gossipSub.parameters.dLazy = 6
|
||||
gossipSub.topicParams["test"] = TopicParams(
|
||||
topicWeight: 1,
|
||||
firstMessageDeliveriesWeight: 1,
|
||||
@ -58,11 +138,15 @@ testground(client):
|
||||
firstMessageDeliveriesDecay: 0.9
|
||||
)
|
||||
|
||||
var messagesChunks: CountTable[uint64]
|
||||
proc messageHandler(topic: string, data: seq[byte]) {.async.} =
|
||||
let sentUint = uint64.fromBytesLE(data)
|
||||
# warm-up
|
||||
if sentUint < 1000000: return
|
||||
#if isAttacker: return
|
||||
|
||||
messagesChunks.inc(sentUint)
|
||||
if messagesChunks[sentUint] < chunks: return
|
||||
let
|
||||
sentMoment = nanoseconds(int64(uint64.fromBytesLE(data)))
|
||||
sentNanosecs = nanoseconds(sentMoment - seconds(sentMoment.seconds))
|
||||
@ -75,7 +159,6 @@ testground(client):
|
||||
startOfTest: Moment
|
||||
attackAfter = seconds(client.param(int, "attack_after"))
|
||||
proc messageValidator(topic: string, msg: Message): Future[ValidationResult] {.async.} =
|
||||
#await sleepAsync(milliseconds(rng.rand(50)))
|
||||
if isAttacker and Moment.now - startOfTest >= attackAfter:
|
||||
return ValidationResult.Ignore
|
||||
|
||||
@ -84,6 +167,7 @@ testground(client):
|
||||
gossipSub.subscribe("test", messageHandler)
|
||||
gossipSub.addValidator(["test"], messageValidator)
|
||||
switch.mount(gossipSub)
|
||||
switch.mount(pingProtocol)
|
||||
await switch.start()
|
||||
#TODO
|
||||
#defer: await switch.stop()
|
||||
@ -105,6 +189,18 @@ testground(client):
|
||||
|
||||
rng.shuffle(peersInfo)
|
||||
|
||||
proc pinger(peerId: PeerId) {.async.} =
|
||||
try:
|
||||
while true:
|
||||
let stream = await switch.dial(peerId, PingCodec)
|
||||
let delay = await pingProtocol.ping(stream)
|
||||
await stream.close()
|
||||
#echo delay
|
||||
await sleepAsync(delay)
|
||||
except:
|
||||
echo "Failed to ping"
|
||||
|
||||
|
||||
let connectTo = client.param(int, "connection_count")
|
||||
var connected = 0
|
||||
for peerInfo in peersInfo:
|
||||
@ -116,27 +212,12 @@ testground(client):
|
||||
addrs = peerInfo.addrs.mapIt(MultiAddress.init(it).tryGet())
|
||||
try:
|
||||
await switch.connect(peerId, addrs).wait(5.seconds)
|
||||
asyncSpawn pinger(peerId)
|
||||
connected.inc()
|
||||
except CatchableError as exc:
|
||||
echo "Failed to dial", exc.msg
|
||||
|
||||
await client.updateNetworkParameter(
|
||||
NetworkConf(
|
||||
network: "default",
|
||||
enable: true,
|
||||
callback_state: "connected",
|
||||
callback_target: some client.testInstanceCount,
|
||||
routing_policy: "accept_all",
|
||||
default: LinkShape(
|
||||
# latency: 100000000,
|
||||
jitter: 100_000_000, # in nanoseconds
|
||||
bandwidth: 25_000_000, # bits per seconds
|
||||
)
|
||||
|
||||
)
|
||||
)
|
||||
await client.waitForBarrier("connected", client.testInstanceCount)
|
||||
#discard await client.signalAndWait("connected", client.testInstanceCount)
|
||||
discard await client.signalAndWait("connected", client.testInstanceCount)
|
||||
|
||||
let
|
||||
maxMessageDelay = client.param(int, "max_message_delay")
|
||||
@ -154,15 +235,18 @@ testground(client):
|
||||
for msg in 0 ..< client.param(int, "message_count"):
|
||||
#await sleepAsync(milliseconds(rng.rand(maxMessageDelay)))
|
||||
await sleepAsync(6.seconds) # half a slot, for faster sims
|
||||
if msg mod publisherCount == myId:
|
||||
if msg mod publisherCount == myId - 1:
|
||||
let
|
||||
now = getTime()
|
||||
nowInt = seconds(now.toUnix()) + nanoseconds(times.nanosecond(now))
|
||||
nowBytes = @(toBytesLE(uint64(nowInt.nanoseconds))) & newSeq[byte](500_000)
|
||||
var nowBytes = @(toBytesLE(uint64(nowInt.nanoseconds))) & newSeq[byte](500_000 div chunks)
|
||||
#var nowBytes = @(toBytesLE(uint64(nowInt.nanoseconds))) & newSeq[byte](50)
|
||||
#echo "sending ", uint64(nowInt.nanoseconds)
|
||||
doAssert((await gossipSub.publish("test", nowBytes)) > 0)
|
||||
for chunk in 0..<chunks:
|
||||
nowBytes[100] = byte(chunk)
|
||||
doAssert((await gossipSub.publish("test", nowBytes)) > 0)
|
||||
#echo switch.peerStore[KeyBook].book
|
||||
|
||||
discard await client.signalAndWait("done", client.testInstanceCount)
|
||||
echo "BW: ", libp2p_protocols_bytes.value(labelValues=["/meshsub/1.1.0", "in"]) + libp2p_protocols_bytes.value(labelValues=["/meshsub/1.1.0", "out"])
|
||||
echo "DUPS: ", libp2p_gossipsub_duplicate.value(), " / ", libp2p_gossipsub_received.value()
|
||||
echo "WAITED: ", libp2p_waited.value()
|
||||
|
@ -1,18 +1,23 @@
|
||||
import os
|
||||
import strutils
|
||||
import strutils, sequtils
|
||||
import ggplotnim
|
||||
|
||||
var
|
||||
time: seq[int]
|
||||
latency: seq[int]
|
||||
bandwidth: seq[int]
|
||||
|
||||
for l in lines("/tmp/toto"):
|
||||
if "BW:" in l:
|
||||
bandwidth.add(parseInt(l.split(" ")[^1].split(".")[0]))
|
||||
if "DUPS:" in l: continue
|
||||
if "milliseconds" notin l: continue
|
||||
|
||||
let splitted = l.split(" ")
|
||||
time.add(splitted[^3].parseInt)
|
||||
latency.add(splitted[^1].parseInt)
|
||||
|
||||
echo "BW: ", foldl(bandwidth, a + b, 0)
|
||||
#var
|
||||
# time = @[0, 0, 0, 5, 5, 5, 9, 9]
|
||||
# latency = @[300, 500, 600, 100, 500, 600, 800, 900]
|
||||
@ -37,7 +42,11 @@ let
|
||||
|
||||
df = df.filter(f{`time` < maxTime - 3}).mutate(f{"scaled_amount" ~ `amount` * factor})
|
||||
|
||||
df.writeCsv("/tmp/df.csv")
|
||||
|
||||
echo "Average max latency: ", df["maxLatencies", int].mean
|
||||
echo "Average mean latency: ", df["meanLatencies", int].mean
|
||||
echo "Average min latency: ", df["minLatencies", int].mean
|
||||
echo "Average received count: ", df["amount", int].mean
|
||||
echo "Minimum received count: ", df["amount", int].min
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user