Commit 81655e62 authored by Paul Graydon's avatar Paul Graydon

wendelin_telecom_test: Update tests

parent 43bacffb
{"meta": {"event": "service connect failure", "time": 1721729980.636813, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721729983.638926, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721729986.640952, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721729989.6430056, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721729977.634778, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721729992.6450973, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721729995.6471226, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "sync", "time": 1721729998.6490216, "state": "detached", "reason": "periodic", "flags": "", "generator": "xlog --rotate 100MB.9 ws://127.0.1.2:9001 meta.sync[]/600s config_get[]/600s stats[samples,rf]/60s x.drb_stats[]/60s"}}
{"meta": {"event": "service connect failure", "time": 1721729998.6493459, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730001.6512854, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730004.653334, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730007.655417, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730010.6574998, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730013.6595304, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730016.6616268, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730019.6636472, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730022.6656835, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730025.6676886, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730028.6697836, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730031.6718156, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730034.674132, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730037.6759453, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730040.677983, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730043.6800735, "reason": "connect: [Errno 111] Connection refused"}}{"meta": {"event": "service connect failure", "time": 1721730046.6821387, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730049.6842096, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730052.686308, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730055.6883888, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730058.690459, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730061.6925738, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730064.6946335, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730067.6966968, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730070.6986601, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730073.7007701, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730076.7028708, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730079.7049143, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730082.7070122, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730085.709076, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730088.7111511, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730091.7132792, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730094.7153559, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730097.717447, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730100.7194812, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730103.7215497, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730106.7235978, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730109.7256887, "reason": "connect: [Errno 111] Connection refused"}}{"meta": {"event": "service connect failure", "time": 1721730112.7277548, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730115.729845, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730118.7321427, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730121.7340975, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730124.7361197, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730127.738118, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730130.7401583, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730133.74221, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730136.7442553, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730139.7463305, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730142.7484334, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730145.7504604, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730148.7524822, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730151.7545557, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730154.756655, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730157.7586973, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730160.7607927, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730163.762817, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730166.7648976, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730169.766959, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730172.769027, "reason": "connect: [Errno 111] Connection refused"}}{"meta": {"event": "service connect failure", "time": 1721730175.7711098, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730178.7731147, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730181.7752476, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730184.7773147, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730187.7793653, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730190.7814453, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730193.7834878, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730196.7855573, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730199.787603, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730202.7896564, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730205.791981, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730208.7937446, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730211.7958455, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730214.7979207, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730217.7999263, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730220.801988, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730223.8040426, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730226.8060699, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730229.8081324, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730232.810237, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730235.8123147, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730238.8144257, "reason": "connect: [Errno 111] Connection refused"}}{"meta": {"event": "service connect failure", "time": 1721730241.8164694, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730244.8185122, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730247.8205519, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730250.822598, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730253.8246274, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730256.8266768, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730259.82875, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730262.8308213, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730265.832893, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730268.8349748, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730271.837043, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730274.8391244, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730277.8411663, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730280.843219, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730283.845311, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730286.8473527, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730289.849699, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730292.8514998, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730295.8535726, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730298.8556626, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730301.8577247, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730304.859744, "reason": "connect: [Errno 111] Connection refused"}}{"meta": {"event": "service connect failure", "time": 1721730307.861802, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730310.8638318, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730313.8658836, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730316.8679922, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730319.8700652, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730322.8721406, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730325.8741736, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730328.8762536, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730331.8783734, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730334.8803859, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730337.8824894, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730340.884572, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730343.8866289, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730346.8887186, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730349.8907726, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730352.8928652, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730355.8949091, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730358.896965, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730361.8990114, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730364.901026, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730367.903094, "reason": "connect: [Errno 111] Connection refused"}}{"meta": {"event": "service connect failure", "time": 1721730370.905167, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730373.907259, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730376.909313, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730379.9113593, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730382.9134736, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730385.9155376, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730388.9176257, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730391.9196866, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730394.9217274, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730397.9237227, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730400.92577, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730403.927835, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730406.9298882, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730409.9319541, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730412.9340692, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730415.9361272, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730418.9382153, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730421.9403415, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730424.9423842, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730427.944399, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730430.9464984, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730433.9485178, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730436.9506202, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730439.9526706, "reason": "connect: [Errno 111] Connection refused"}}{"meta": {"event": "service connect failure", "time": 1721730442.9548042, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730445.9569266, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730448.9589596, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730451.9610744, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730454.9631712, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730457.9652445, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730460.9673574, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730463.9694083, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730466.9714844, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730469.973536, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730472.9756386, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730475.977747, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730478.9797375, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730481.981873, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730484.9823065, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730487.984343, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730490.986379, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730493.988433, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730496.9905188, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730499.9925928, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730502.9946356, "reason": "connect: [Errno 111] Connection refused"}}{"meta": {"event": "service connect failure", "time": 1721730505.9966812, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730508.9988124, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730512.0008616, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730515.0029256, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730518.004981, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730521.0070636, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730524.0090978, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730527.0112083, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730530.0132823, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730533.0154328, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730536.0176835, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730539.0195923, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730542.0217342, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730545.023742, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730548.0258436, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730551.0279229, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730554.030023, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730557.0320854, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730560.0341911, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730563.036243, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730566.038349, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730569.0404487, "reason": "connect: [Errno 111] Connection refused"}}{"meta": {"event": "service connect failure", "time": 1721730572.042492, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730575.0445957, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730578.0466697, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730581.048777, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730584.05087, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730587.0530362, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730590.0550685, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730593.0571203, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730596.0592382, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "sync", "time": 1721730599.0611165, "state": "detached", "reason": "periodic", "flags": "", "generator": "xlog --rotate 100MB.9 ws://127.0.1.2:9001 meta.sync[]/600s config_get[]/600s stats[samples,rf]/60s x.drb_stats[]/60s"}}
{"meta": {"event": "service connect failure", "time": 1721730599.0614474, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730602.06346, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730605.0654616, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730608.0675123, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730611.0695336, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730614.07161, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730617.0736458, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730620.07577, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730623.0778446, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730626.0799434, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730629.0820477, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730632.0841076, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730635.0862038, "reason": "connect: [Errno 111] Connection refused"}}{"meta": {"event": "service connect failure", "time": 1721730638.0882742, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730641.090363, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730644.0924315, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730647.0945117, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730650.0965514, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730653.098687, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730656.1007624, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730659.102869, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730662.1049812, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730665.1071048, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730668.1091578, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730671.1112561, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730674.1133306, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730677.1154027, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730680.1174479, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730683.1195626, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730686.1216283, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730689.1237056, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730692.1258175, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730695.1278684, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730698.1299496, "reason": "connect: [Errno 111] Connection refused"}}{"meta": {"event": "service connect failure", "time": 1721730701.1320176, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730704.134099, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730707.1361756, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730710.138214, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730713.1402836, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730716.142392, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730719.1445324, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730722.1466298, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730725.1487062, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730728.1507833, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730731.1528504, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730734.154872, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730737.1568851, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730740.1589534, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730743.1610885, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730746.1630144, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730749.165023, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730752.167145, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730755.1675544, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730758.1696403, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730761.171751, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730764.1737876, "reason": "connect: [Errno 111] Connection refused"}}{"meta": {"event": "service connect failure", "time": 1721730767.1758835, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730770.1779504, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730773.180054, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730776.1821408, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730779.1841936, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730782.1862938, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730785.1883428, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730788.1904151, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730791.1924417, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730794.1950781, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730797.196539, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730800.1986306, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730803.2007053, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730806.2027795, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730809.2047858, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730812.2068853, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730815.207306, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730818.209326, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730821.2114427, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730824.2134974, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730827.2155967, "reason": "connect: [Errno 111] Connection refused"}}{"meta": {"event": "service connect failure", "time": 1721730830.2176619, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730833.2196887, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730836.2218056, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730839.2222195, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730842.2243233, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730845.226364, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730848.2284005, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730851.2304506, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730854.2324505, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730857.2345312, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730860.23659, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730863.2386594, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730866.2407553, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730869.2428083, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730872.2448862, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730875.2469602, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730878.2490354, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730881.2513998, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730884.253263, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730887.2552993, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730890.2574134, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730893.2594695, "reason": "connect: [Errno 111] Connection refused"}}{"meta": {"event": "service connect failure", "time": 1721730896.261559, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730899.2635996, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730902.2656615, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730905.2677228, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730908.2697203, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730911.2718177, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730914.273918, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730917.27596, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730920.2780876, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730923.2801254, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730926.2822533, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730929.2842648, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730932.2863789, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730935.2884448, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730938.2905872, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730941.2926166, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730944.2946837, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730947.296711, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730950.2988305, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730953.3008916, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730956.302952, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730959.3050644, "reason": "connect: [Errno 111] Connection refused"}}{"meta": {"event": "service connect failure", "time": 1721730962.3071375, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730965.3092232, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730968.311314, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730971.3134558, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730974.3154602, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730977.317518, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730980.3195088, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730983.321548, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730986.3236084, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730989.3257284, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730992.3277812, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730995.3298576, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721730998.3319216, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731001.3339908, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731004.3360703, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731007.3381684, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731010.340268, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731013.342345, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731016.3444118, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731019.3464947, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731022.3486314, "reason": "connect: [Errno 111] Connection refused"}}{"meta": {"event": "service connect failure", "time": 1721731025.3506658, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731028.352672, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731031.3547575, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731034.3568215, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731037.358873, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731040.3609421, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731043.3630276, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731046.365075, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731049.3671348, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731052.3694959, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731055.3712938, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731058.3733428, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731061.3754761, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731064.3775141, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731067.3796275, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731070.3816402, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731073.3837347, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731076.385841, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731079.387937, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731082.3900483, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731085.3920722, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731088.3941803, "reason": "connect: [Errno 111] Connection refused"}}{"meta": {"event": "service connect failure", "time": 1721731091.396276, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731094.3983216, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731097.4003747, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731100.4024103, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731103.404504, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731106.406584, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731109.408613, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731112.4107096, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731115.412769, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731118.4148319, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731121.4169383, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731124.418988, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731127.421107, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731130.423176, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731133.4252717, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731136.4275944, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731139.4293993, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731142.431504, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731145.4335358, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731148.435644, "reason": "connect: [Errno 111] Connection refused"}}{"meta": {"event": "service connect failure", "time": 1721731151.4376755, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731154.4397216, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731157.4418173, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731160.4438012, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731163.445904, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731166.4479516, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731169.4500763, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731172.4521334, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731175.454197, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731178.456296, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731181.4583595, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731184.460468, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731187.462491, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731190.464594, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731193.4666793, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731196.468741, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "sync", "time": 1721731199.4706562, "state": "detached", "reason": "periodic", "flags": "", "generator": "xlog --rotate 100MB.9 ws://127.0.1.2:9001 meta.sync[]/600s config_get[]/600s stats[samples,rf]/60s x.drb_stats[]/60s"}}
{"meta": {"event": "service connect failure", "time": 1721731199.4709802, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731202.4730632, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731205.4750473, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731208.4771292, "reason": "connect: [Errno 111] Connection refused"}}{"meta": {"event": "service connect failure", "time": 1721731211.4791753, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731214.481244, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731217.4833224, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731220.4853961, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731223.487672, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731226.489481, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731229.491563, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731232.4936445, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731235.4956954, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731238.4977665, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731241.4998507, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731244.5019572, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731247.5040395, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731250.5061264, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731253.5081835, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731256.510239, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731259.5122902, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731262.5144272, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731265.5165014, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731268.5186198, "reason": "connect: [Errno 111] Connection refused"}}{"meta": {"event": "service connect failure", "time": 1721731271.5207088, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731274.522806, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731277.524859, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731280.526899, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731283.5290065, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731286.5310898, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731289.5331182, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731292.5351906, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731295.5372794, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731298.5393584, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731301.5413985, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731304.543486, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731307.545819, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731310.547661, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731313.5497396, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731316.5518422, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731319.5538611, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731322.5559964, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731325.5564995, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731328.558529, "reason": "connect: [Errno 111] Connection refused"}}{"meta": {"event": "service connect failure", "time": 1721731331.5605843, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731334.5626028, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731337.5646765, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731340.5667124, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731343.5688055, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731346.5709147, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731349.5729544, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731352.5753324, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731355.5770996, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731358.5791917, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731361.5813036, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731364.583369, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731367.5854478, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731370.5875416, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731373.5895765, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731376.5916018, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731379.5936122, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731382.5957527, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731385.5961978, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731388.5982966, "reason": "connect: [Errno 111] Connection refused"}}{"meta": {"event": "service connect failure", "time": 1721731391.6004207, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731394.6024005, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731397.6044338, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731400.6065617, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731403.6086047, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731406.6107075, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731409.6127489, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731412.6148577, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731415.6153286, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731418.6173441, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731421.619531, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731424.6216123, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731427.6237154, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731430.625895, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731433.6279323, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731436.6300387, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731439.63215, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731442.6341867, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731445.6362655, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731448.6383348, "reason": "connect: [Errno 111] Connection refused"}}{"meta": {"event": "service connect failure", "time": 1721731451.6403766, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731454.6424112, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731457.644483, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731460.6465878, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731463.64862, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731466.650714, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731469.652783, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731472.6548667, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731475.65696, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731478.659028, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731481.6611176, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731484.6631896, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731487.6652377, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731490.6673467, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731493.6693966, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731496.6714563, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731499.6735444, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731502.6755776, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731505.6776602, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731508.6798096, "reason": "connect: [Errno 111] Connection refused"}}{"meta": {"event": "service connect failure", "time": 1721731511.6818771, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731514.683921, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731517.6859977, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731520.6880562, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731523.6901596, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731526.6922233, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731529.6943178, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731532.6963997, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731535.6984894, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731538.7006207, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731541.7026644, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731544.7047317, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731547.7067513, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731550.7088413, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731553.7109587, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731556.7130105, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731559.7151017, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731562.7172346, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731565.7193146, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731568.7213347, "reason": "connect: [Errno 111] Connection refused"}}{"meta": {"event": "service connect failure", "time": 1721731571.7234547, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731574.7255225, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731577.7275777, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731580.72969, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731583.7316592, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731586.7336576, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731589.7357085, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731592.7378185, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731595.7398655, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731598.7419667, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731601.7440464, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731604.74613, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731607.748225, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731610.75028, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731613.7524104, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731616.7544658, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731619.7565386, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731622.7586226, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731625.7606552, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731628.7628033, "reason": "connect: [Errno 111] Connection refused"}}{"meta": {"event": "service connect failure", "time": 1721731631.7648177, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731634.7668555, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731637.7689261, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731640.7709816, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731643.7730505, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731646.7751591, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731649.777227, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731652.7793417, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731655.7814054, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731658.7834532, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731661.785551, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731664.7876005, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731667.7897213, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731670.7917938, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731673.7938955, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731676.7959964, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731679.79803, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731682.800141, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731685.8021984, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731688.8042352, "reason": "connect: [Errno 111] Connection refused"}}{"meta": {"event": "service connect failure", "time": 1721731691.806344, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731694.8083148, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731697.8104124, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731700.8125036, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731703.8145921, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731706.8166683, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731709.8187304, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731712.8208525, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731715.8212926, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731718.8233454, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731721.8254502, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731724.8274884, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731727.8295996, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731730.83171, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731733.8338006, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731736.8358734, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731739.8379083, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731742.8400195, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731745.8404665, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731748.8425279, "reason": "connect: [Errno 111] Connection refused"}}{"meta": {"event": "service connect failure", "time": 1721731751.8445733, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731754.8466482, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731757.848751, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731760.8508115, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731763.852908, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731766.8550336, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731769.857068, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731772.8591404, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731775.861241, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731778.8632803, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731781.865365, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731784.8674595, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731787.8695157, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731790.871582, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731793.873718, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "service connect failure", "time": 1721731796.8757544, "reason": "connect: [Errno 111] Connection refused"}}
{"meta": {"event": "sync", "time": 1721731799.8776507, "state": "detached", "reason": "periodic", "flags": "", "generator": "xlog --rotate 100MB.9 ws://127.0.1.2:9001 meta.sync[]/600s config_get[]/600s stats[samples,rf]/60s x.drb_stats[]/60s"}}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -71,7 +71,7 @@ ...@@ -71,7 +71,7 @@
</item> </item>
<item> <item>
<key> <string>default_reference</string> </key> <key> <string>default_reference</string> </key>
<value> <string>test_example_ors_enb_log_invalid</string> </value> <value> <string>test_example_ors_enb_log_invalid_split_1</string> </value>
</item> </item>
<item> <item>
<key> <string>description</string> </key> <key> <string>description</string> </key>
...@@ -81,7 +81,7 @@ ...@@ -81,7 +81,7 @@
</item> </item>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
<value> <string>test_example_ors_enb_log_invalid</string> </value> <value> <string>test_example_ors_enb_log_invalid_split_1</string> </value>
</item> </item>
<item> <item>
<key> <string>language</string> </key> <key> <string>language</string> </key>
...@@ -97,7 +97,7 @@ ...@@ -97,7 +97,7 @@
</item> </item>
<item> <item>
<key> <string>title</string> </key> <key> <string>title</string> </key>
<value> <string>Test ORS Example Log (Invalid)</string> </value> <value> <string>Test ORS Example Log (Invalid) Split 1</string> </value>
</item> </item>
<item> <item>
<key> <string>version</string> </key> <key> <string>version</string> </key>
......
This source diff could not be displayed because it is too large. You can view the blob instead.
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Web Page" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Access_contents_information_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Change_local_roles_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Modify_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>content_md5</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>test_example_ors_enb_log_invalid_split_2</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>test_example_ors_enb_log_invalid_split_2</string> </value>
</item>
<item>
<key> <string>language</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>short_title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Test ORS Example Log (Invalid) Split 2</string> </value>
</item>
<item>
<key> <string>version</string> </key>
<value>
<none/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
...@@ -34,6 +34,8 @@ import string ...@@ -34,6 +34,8 @@ import string
from Products.ERP5Type.tests.SecurityTestCase import SecurityTestCase from Products.ERP5Type.tests.SecurityTestCase import SecurityTestCase
QCI_COUNT = 256
def generateRandomString(length=24, only_digits=False, hexadecimal=False): def generateRandomString(length=24, only_digits=False, hexadecimal=False):
character_list = string.digits character_list = string.digits
if not only_digits: if not only_digits:
...@@ -54,16 +56,26 @@ class WendelinTelecomTest(SecurityTestCase): ...@@ -54,16 +56,26 @@ class WendelinTelecomTest(SecurityTestCase):
def afterSetUp(self): def afterSetUp(self):
# Set up variables for ORS ingestion testing # Set up variables for ORS ingestion testing
self.ors_enb_log_ingestion = self.portal.portal_ingestion_policies.ors_enb_log_ingestion self.ors_enb_log_ingestion = self.portal.portal_ingestion_policies.ors_enb_log_ingestion
self.ors_enb_kpi_endpoint_path = self.portal.getPath() + '/Base_getOrsEnbKpi'
self.test_ors_example_log_valid = { self.test_ors_example_log_valid = {
'log': self.portal.web_page_module.test_example_ors_enb_log_valid.getTextContent() 'log': self.portal.web_page_module.test_example_ors_enb_log_valid.getTextContent()
} }
self.test_ors_example_log_invalid = { self.test_ors_example_log_invalid_split_1 = {
'log': self.portal.web_page_module.test_example_ors_enb_log_invalid.getTextContent() 'log': self.portal.web_page_module.test_example_ors_enb_log_invalid_split_1.getTextContent()
}
self.test_ors_example_log_invalid_split_2 = {
'log': self.portal.web_page_module.test_example_ors_enb_log_invalid_split_2.getTextContent()
} }
self.test_ors_example_log_empty = {'log': ""} self.test_ors_example_log_empty = {'log': ""}
# Set up ingestor user for performing ingestions # Set up ingestor user for performing ingestions
self.ingestor_user = self.createWendelinTelecomUser('test_ingestor_%s' % generateRandomString(), None, 'ingestor') self.ingestor_user = self.createWendelinTelecomUser(
'test_ingestor_%s' % generateRandomString(),
None,
'ingestor'
)
def beforeTearDown(self): def beforeTearDown(self):
self.abort() self.abort()
...@@ -90,21 +102,31 @@ class WendelinTelecomTest(SecurityTestCase): ...@@ -90,21 +102,31 @@ class WendelinTelecomTest(SecurityTestCase):
self.tic() self.tic()
def createWendelinTelecomUser(self, reference, project, function): def createWendelinTelecomUser(self, reference, project, function):
# Create and validate a new Person with an assignment linked to the provided project and function # Create and validate a new Person with an assignment
# linked to the provided project and function
# Also generate and validate an ERP5 login for the Person # Also generate and validate an ERP5 login for the Person
user = self.portal.person_module.newContent( user = self.portal.person_module.newContent(
portal_type='Person', portal_type='Person',
reference=reference reference=reference
) )
user.newContent(portal_type='Assignment', destination_project=project, function=function).open() user.newContent(
user.newContent(portal_type='ERP5 Login', reference=reference, password=reference).validate() portal_type='Assignment',
destination_project=project,
function=function
).open()
user.newContent(
portal_type='ERP5 Login',
reference=reference,
password=reference
).validate()
user.validate() user.validate()
self.tic() self.tic()
return user return user
def registerOrs(self, tag_hostname_seed=None, tag_comp_id_seed=None, tag_enb_id_seed=None): def registerOrs(self, tag_hostname_seed=None, tag_comp_id_seed=None, tag_enb_id_seed=None):
# Create a Data Acquisition Unit and related Data Supply with a tag constructed from the provided seeds. # Create a Data Acquisition Unit and related Data Supply
# with a tag constructed from the provided seeds.
# If any seed is NOT defined, it is generated at random. # If any seed is NOT defined, it is generated at random.
if tag_hostname_seed is None: if tag_hostname_seed is None:
tag_hostname_seed = generateRandomString(length=3, only_digits=True) tag_hostname_seed = generateRandomString(length=3, only_digits=True)
...@@ -150,10 +172,12 @@ class WendelinTelecomTest(SecurityTestCase): ...@@ -150,10 +172,12 @@ class WendelinTelecomTest(SecurityTestCase):
reference_seed = generateRandomString() reference_seed = generateRandomString()
project_reference = 'test_project_%s' % reference_seed project_reference = 'test_project_%s' % reference_seed
project_title = 'Test Project %s' % reference_seed project_title = 'Test Project %s' % reference_seed
client_email = 'test_user_%s@test.wendelin-tele.com' % (client_user_reference_seed or reference_seed) client_email = 'test_user_%s@test.wendelin-tele.com' \
% (client_user_reference_seed or reference_seed)
client_user_reference = client_email.split('@')[0] client_user_reference = client_email.split('@')[0]
# Call the script responsible for creating the project and the associated user, and store the JSON response # Call the script responsible for creating the project and the associated user
# Store the JSON response
response = self.portal.ProjectModule_registerOrsClientProject( response = self.portal.ProjectModule_registerOrsClientProject(
project_reference, project_reference,
project_title, project_title,
...@@ -197,17 +221,30 @@ class WendelinTelecomTest(SecurityTestCase): ...@@ -197,17 +221,30 @@ class WendelinTelecomTest(SecurityTestCase):
) )
return self.publish(path, **publish_kw) return self.publish(path, **publish_kw)
def getDataIngestion(self, data_acquisition_unit):
# Retrieve a Data Ingestion linked to the provided Data Acquisition Unit
for line in data_acquisition_unit.getAggregateRelatedValueList(
portal_type='Data Ingestion Line'
):
data_ingestion = line.getParentValue()
if data_ingestion is not None:
return data_ingestion
def getDataStream(self, data_acquisition_unit): def getDataStream(self, data_acquisition_unit):
# Retrieve a Data Stream linked to the provided Data Acquisition Unit # Retrieve a Data Stream linked to the provided Data Acquisition Unit
for line in data_acquisition_unit.getAggregateRelatedValueList(portal_type='Data Ingestion Line'): for line in data_acquisition_unit.getAggregateRelatedValueList(
portal_type='Data Ingestion Line'
):
data_stream = line.getAggregateValue(portal_type='Data Stream') data_stream = line.getAggregateValue(portal_type='Data Stream')
if data_stream: if data_stream is not None:
return data_stream return data_stream
def getDataAnalysis(self, data_supply): def getDataAnalysis(self, data_supply):
# Retrieve a Data Analysis linked to the provided Data Supply # Retrieve a Data Analysis linked to the provided Data Supply
for data_analysis in data_supply.getSpecialiseRelatedValueList(portal_type='Data Analysis'): for data_analysis in data_supply.getSpecialiseRelatedValueList(
if data_analysis: portal_type='Data Analysis'
):
if data_analysis is not None:
return data_analysis return data_analysis
def getDataArrays(self, data_analysis): def getDataArrays(self, data_analysis):
...@@ -215,10 +252,19 @@ class WendelinTelecomTest(SecurityTestCase): ...@@ -215,10 +252,19 @@ class WendelinTelecomTest(SecurityTestCase):
data_array_list = [] data_array_list = []
for line in data_analysis.contentValues(portal_type='Data Analysis Line'): for line in data_analysis.contentValues(portal_type='Data Analysis Line'):
data_array = line.getAggregateValue(portal_type='Data Array') data_array = line.getAggregateValue(portal_type='Data Array')
if data_array: if data_array is not None:
data_array_list.append(data_array) data_array_list.append(data_array)
return data_array_list return data_array_list
def getProgressIndicator(self, data_analysis):
# Retrieve the Progress Indicator linked to the provided Data Analysis
for line in data_analysis.contentValues(portal_type="Data Analysis Line"):
if line.getResourceValue().getPortalType() == "Data Product" \
and line.getQuantity() == -1:
progress_indicator = line.getAggregateProgressIndicatorValue()
if progress_indicator is not None:
return progress_indicator
def getOrsLogIngestionItems(self, log_data, reference, stop_data_analysis=False): def getOrsLogIngestionItems(self, log_data, reference, stop_data_analysis=False):
# Simulate an ingestion of the provided log data # Simulate an ingestion of the provided log data
response = self.ingestOrsLogDataFromFluentd(log_data, reference) response = self.ingestOrsLogDataFromFluentd(log_data, reference)
...@@ -232,6 +278,8 @@ class WendelinTelecomTest(SecurityTestCase): ...@@ -232,6 +278,8 @@ class WendelinTelecomTest(SecurityTestCase):
data_supply = data_acquisition_unit.DataAcquisitionUnit_createOrsDataSupply(batch=1) data_supply = data_acquisition_unit.DataAcquisitionUnit_createOrsDataSupply(batch=1)
self.tic() self.tic()
data_ingestion = self.getDataIngestion(data_acquisition_unit)
data_stream = self.getDataStream(data_acquisition_unit) data_stream = self.getDataStream(data_acquisition_unit)
# Manually call the data analysis alarms to process the data into KPIs ASAP # Manually call the data analysis alarms to process the data into KPIs ASAP
...@@ -247,17 +295,32 @@ class WendelinTelecomTest(SecurityTestCase): ...@@ -247,17 +295,32 @@ class WendelinTelecomTest(SecurityTestCase):
data_array_list = self.getDataArrays(data_analysis) data_array_list = self.getDataArrays(data_analysis)
progress_indicator = self.getProgressIndicator(data_analysis)
# Return all associated items # Return all associated items
return { return {
'response': response, 'response': response,
'data_acquisition_unit': data_acquisition_unit, 'data_acquisition_unit': data_acquisition_unit,
'data_supply': data_supply, 'data_supply': data_supply,
'data_ingestion': data_ingestion,
'data_stream': data_stream, 'data_stream': data_stream,
'data_analysis': data_analysis, 'data_analysis': data_analysis,
'data_array_list': data_array_list 'data_array_list': data_array_list,
'progress_indicator': progress_indicator
} }
def checkDocumentPermissions(self, user, document, user_can_view, user_can_modify, user_can_add): def getOrsEnbKpiDict(self, data_array_url, kpi_type):
kpi_path = self.ors_enb_kpi_endpoint_path + '?data_array_url=' + \
data_array_url + '&kpi_type=' + kpi_type
publish_kw = dict(
user='ERP5TypeTestCase'
)
response = self.publish(kpi_path, **publish_kw)
return json.loads(response.getBody())
def checkDocumentPermissions(
self, user, document, user_can_view, user_can_modify, user_can_add
):
user_id = user.Person_getUserId() user_id = user.Person_getUserId()
# Check if the provided user can access and view the document # Check if the provided user can access and view the document
...@@ -296,7 +359,8 @@ class WendelinTelecomTest(SecurityTestCase): ...@@ -296,7 +359,8 @@ class WendelinTelecomTest(SecurityTestCase):
user_is_admin = 'administrator' in user_function_list user_is_admin = 'administrator' in user_function_list
user_is_ingestor = 'ingestor' in user_function_list user_is_ingestor = 'ingestor' in user_function_list
# A client can only view a Data Acquisition Unit (ORS) if they are related to the same project # A client can only view a Data Acquisition Unit (ORS)
# if they are related to the same project
# An administrator can view and edit all of them, as well as add one # An administrator can view and edit all of them, as well as add one
# An ingestor can view any of them # An ingestor can view any of them
self.checkDocumentPermissions( self.checkDocumentPermissions(
...@@ -316,18 +380,66 @@ class WendelinTelecomTest(SecurityTestCase): ...@@ -316,18 +380,66 @@ class WendelinTelecomTest(SecurityTestCase):
user_is_admin user_is_admin
) )
# An administrator has all rights to a Data Ingestion (for management actions)
# An ingestor also has all rights to a Data Ingestion (for managing ingestions)
self.checkDocumentPermissions(
user,
ingestion_item_dict['data_ingestion'],
user_is_admin or user_is_ingestor,
user_is_admin or user_is_ingestor,
user_is_admin or user_is_ingestor
)
# An administrator can view a Data Stream # An administrator can view a Data Stream
# An ingestor has all rights to a Data Stream (in order to append new log data to it) # An ingestor has all rights to a Data Stream (to append new log data to it)
self.checkDocumentPermissions(user, ingestion_item_dict['data_stream'], user_is_admin or user_is_ingestor, user_is_ingestor, user_is_ingestor) self.checkDocumentPermissions(
user,
ingestion_item_dict['data_stream'],
user_is_admin or user_is_ingestor,
user_is_ingestor,
user_is_ingestor
)
# A client can only view a Data Analysis if they are related to the same project (required for KPI graphing) # A client can only view a Data Analysis
# An administrator can view all of them # if they are related to the same project (for KPI graphing)
self.checkDocumentPermissions(user, ingestion_item_dict['data_analysis'], user_is_admin or same_project, False, False) # An administrator can view and edit all of them (for management actions)
# Same thing for Data Analysis Lines
self.checkDocumentPermissions(
user,
ingestion_item_dict['data_analysis'],
user_is_admin or same_project,
user_is_admin,
user_is_admin
)
for data_analysis_line in ingestion_item_dict['data_analysis'] \
.contentValues(portal_type='Data Analysis Line'):
self.checkDocumentPermissions(
user,
data_analysis_line,
user_is_admin or same_project,
user_is_admin,
user_is_admin
)
# A client can only view a Data Array if they are related to the same project # A client can only view a Data Array if they are related to the same project
# An administrator can view all of them # An administrator can view all of them
for data_array in ingestion_item_dict['data_array_list']: for data_array in ingestion_item_dict['data_array_list']:
self.checkDocumentPermissions(user, data_array, user_is_admin or same_project, False, False) self.checkDocumentPermissions(
user,
data_array,
user_is_admin or same_project,
False,
False
)
# Only an administrator can view a Progress Indicator (for management actions)
self.checkDocumentPermissions(
user,
ingestion_item_dict['progress_indicator'],
user_is_admin,
False,
False
)
def checkModulePermissions(self, user): def checkModulePermissions(self, user):
user_function_list = None user_function_list = None
...@@ -339,15 +451,22 @@ class WendelinTelecomTest(SecurityTestCase): ...@@ -339,15 +451,22 @@ class WendelinTelecomTest(SecurityTestCase):
user_is_admin = 'administrator' in user_function_list user_is_admin = 'administrator' in user_function_list
user_is_ingestor = 'ingestor' in user_function_list user_is_ingestor = 'ingestor' in user_function_list
# Everyone can view the Data Product module (required for KPI graphing) # Everyone can view the Data Product module (for KPI graphing)
# Everyone can also view the two data products used in the KPI calculation process (required for KPI graphing) # Everyone can also view the two data products
self.checkDocumentPermissions(user, self.portal.data_product_module, True, False, False) # used in the KPI calculation process (for KPI graphing)
ors_kpi = self.portal.portal_catalog.getResultValue( self.checkDocumentPermissions(
user,
self.portal.data_product_module,
True,
False,
False
)
ors_enb_kpi = self.portal.portal_catalog.getResultValue(
portal_type='Data Product', portal_type='Data Product',
reference='ors_kpi', reference='ors_enb_kpi',
validation_state='validated' validation_state='validated'
) )
self.checkDocumentPermissions(user, ors_kpi, True, False, False) self.checkDocumentPermissions(user, ors_enb_kpi, True, False, False)
ors_enb_log_data = self.portal.portal_catalog.getResultValue( ors_enb_log_data = self.portal.portal_catalog.getResultValue(
portal_type='Data Product', portal_type='Data Product',
reference='ors_enb_log_data', reference='ors_enb_log_data',
...@@ -355,29 +474,61 @@ class WendelinTelecomTest(SecurityTestCase): ...@@ -355,29 +474,61 @@ class WendelinTelecomTest(SecurityTestCase):
) )
self.checkDocumentPermissions(user, ors_enb_log_data, True, False, False) self.checkDocumentPermissions(user, ors_enb_log_data, True, False, False)
# Only ingestors can view the Data Operation Module, as well as the two Data Operations required # Only ingestors can view the Data Operation Module,
# for ORS eNB log ingestion # as well as the two Data Operations required for ORS eNB log ingestion
self.checkDocumentPermissions(user, self.portal.data_operation_module, user_is_ingestor, False, False) self.checkDocumentPermissions(
user,
self.portal.data_operation_module,
user_is_ingestor,
False,
False
)
ingest_ors_enb_log_data = self.portal.portal_catalog.getResultValue( ingest_ors_enb_log_data = self.portal.portal_catalog.getResultValue(
portal_type='Data Operation', portal_type='Data Operation',
reference='ingest_ors_enb_log_data', reference='ingest_ors_enb_log_data',
validation_state='validated' validation_state='validated'
) )
self.checkDocumentPermissions(user, ingest_ors_enb_log_data, user_is_ingestor, False, False) self.checkDocumentPermissions(
user,
ingest_ors_enb_log_data,
user_is_ingestor,
False,
False
)
calculate_ors_kpi = self.portal.portal_catalog.getResultValue( calculate_ors_kpi = self.portal.portal_catalog.getResultValue(
portal_type='Data Operation', portal_type='Data Operation',
reference='calculate_ors_kpi', reference='calculate_ors_enb_kpi',
validation_state='validated' validation_state='validated'
) )
self.checkDocumentPermissions(user, calculate_ors_kpi, user_is_ingestor, False, False) self.checkDocumentPermissions(
user,
calculate_ors_kpi,
user_is_ingestor,
False,
False
)
# Everyone can view the Data Acquisition Unit and Data Supply modules # Everyone can view the Data Acquisition Unit and Data Supply modules
# Only administrators can add items to them # Only administrators can add items to them
self.checkDocumentPermissions(user, self.portal.data_acquisition_unit_module, True, False, user_is_admin) self.checkDocumentPermissions(
self.checkDocumentPermissions(user, self.portal.data_supply_module, True, False, user_is_admin) user,
self.portal.data_acquisition_unit_module,
True,
False,
user_is_admin
)
self.checkDocumentPermissions(
user,
self.portal.data_supply_module,
True,
False,
user_is_admin
)
# Only clients and administrator can view the Data Transformation module (required for KPI graphing) # Only clients and administrator can view the Data Transformation module
# Only they can also view the data transformation used to produce the KPIs (required for KPI graphing) # (for KPI graphing)
# Only they can also view the data transformation used to produce the KPIs
# (for KPI graphing)
self.checkDocumentPermissions( self.checkDocumentPermissions(
user, user,
self.portal.data_transformation_module, self.portal.data_transformation_module,
...@@ -390,9 +541,16 @@ class WendelinTelecomTest(SecurityTestCase): ...@@ -390,9 +541,16 @@ class WendelinTelecomTest(SecurityTestCase):
reference='ors_enb_log_data_transformation', reference='ors_enb_log_data_transformation',
validation_state='validated' validation_state='validated'
) )
self.checkDocumentPermissions(user, data_transformation, user_is_client or user_is_admin, False, False) self.checkDocumentPermissions(
user,
data_transformation,
user_is_client or user_is_admin,
False,
False
)
# Only ingestors and administrators can view the Data Ingestion and Data Stream modules # Only ingestors and administrators can view
# the Data Ingestion and Data Stream modules
# Only ingestors can add new Data Ingestions and Data Streams # Only ingestors can add new Data Ingestions and Data Streams
self.checkDocumentPermissions( self.checkDocumentPermissions(
user, user,
...@@ -409,15 +567,50 @@ class WendelinTelecomTest(SecurityTestCase): ...@@ -409,15 +567,50 @@ class WendelinTelecomTest(SecurityTestCase):
user_is_ingestor user_is_ingestor
) )
# Only administrators can view the Progress Indicator Module
self.checkDocumentPermissions(
user,
self.portal.progress_indicator_module,
user_is_admin,
False,
False
)
# Only administrators can view the Data Analysis module # Only administrators can view the Data Analysis module
self.checkDocumentPermissions(user, self.portal.data_analysis_module, user_is_admin, False, False) self.checkDocumentPermissions(
user,
self.portal.data_analysis_module,
user_is_admin,
False,
False
)
# Only clients and administrators can view the Data Array module (required for KPI graphing) # Only clients and administrators can view the Data Array module
self.checkDocumentPermissions(user, self.portal.data_array_module, user_is_client or user_is_admin, False, False) # (for KPI graphing)
self.checkDocumentPermissions(
user,
self.portal.data_array_module,
user_is_client or user_is_admin,
False,
False
)
# Only administrators have access to the Person and Project modules and can add items to them for client management purposes # Only administrators have access to the Person and Project modules
self.checkDocumentPermissions(user, self.portal.project_module, user_is_admin, False, user_is_admin) # and can add items to them for client management purposes
self.checkDocumentPermissions(user, self.portal.person_module, user_is_admin, False, user_is_admin) self.checkDocumentPermissions(
user,
self.portal.project_module,
user_is_admin,
False,
user_is_admin
)
self.checkDocumentPermissions(
user,
self.portal.person_module,
user_is_admin,
False,
user_is_admin
)
def test_01_createOrsDataSupply(self): def test_01_createOrsDataSupply(self):
''' '''
...@@ -450,7 +643,8 @@ class WendelinTelecomTest(SecurityTestCase): ...@@ -450,7 +643,8 @@ class WendelinTelecomTest(SecurityTestCase):
def test_02_registerOrsClientProject(self): def test_02_registerOrsClientProject(self):
''' '''
Test the action performed by Administrator users in the Project module to register a new client project. Test the action performed by Administrator users in the Project module
to register a new client project.
Check the successful case as well as all error cases. Check the successful case as well as all error cases.
''' '''
...@@ -468,24 +662,33 @@ class WendelinTelecomTest(SecurityTestCase): ...@@ -468,24 +662,33 @@ class WendelinTelecomTest(SecurityTestCase):
repeated_project_item_dict = self.registerOrsClientProject(reference_seed=reference_seed) repeated_project_item_dict = self.registerOrsClientProject(reference_seed=reference_seed)
# Check that both the project and the client user are identical to the previous ones # Check that both the project and the client user are identical to the previous ones
self.assertTrue(repeated_project_item_dict['project'] == project_item_dict['project']) self.assertTrue(repeated_project_item_dict['project'] \
self.assertTrue(repeated_project_item_dict['client_user'] == repeated_project_item_dict['client_user']) == project_item_dict['project'])
self.assertTrue(repeated_project_item_dict['client_user'] \
== repeated_project_item_dict['client_user'])
# Create a new reference seed for the project, but reuse the previous reference for the client user account # Create a new reference seed for the project
# but reuse the previous reference for the client user account
new_project_reference_seed = generateRandomString() new_project_reference_seed = generateRandomString()
while new_project_reference_seed == reference_seed: while new_project_reference_seed == reference_seed:
new_project_reference_seed = generateRandomString() new_project_reference_seed = generateRandomString()
# Call the script a third time, keeping the same reference seed as before ONLY for the client user account # Call the script a third time, keeping the same reference seed as before ONLY for the client user account
# This should also error out as the client user account already exists # This should also error out as the client user account already exists
new_project_item_dict = self.registerOrsClientProject(reference_seed=new_project_reference_seed, client_user_reference_seed=reference_seed) new_project_item_dict = self.registerOrsClientProject(
reference_seed=new_project_reference_seed,
client_user_reference_seed=reference_seed
)
# Check that the new project is NOT created and that the client user is the same as previously # Check that the new project is NOT created
# and that the client user is the same as previously
self.assertTrue(new_project_item_dict['project'] is None) self.assertTrue(new_project_item_dict['project'] is None)
self.assertTrue(new_project_item_dict['client_user'] == project_item_dict['client_user']) self.assertTrue(new_project_item_dict['client_user'] \
== project_item_dict['client_user'])
def test_03_1_registerValidOrs(self): def test_03_1_registerValidOrs(self):
''' '''
Test the script called during slave instantiation in SlapOS by an ORS to automatically register itself. Test the script called during slave instantiation in SlapOS
by an ORS to automatically register itself.
Check all valid cases. Check all valid cases.
''' '''
...@@ -549,13 +752,15 @@ class WendelinTelecomTest(SecurityTestCase): ...@@ -549,13 +752,15 @@ class WendelinTelecomTest(SecurityTestCase):
# Now, link the above Data Supply to a second project # Now, link the above Data Supply to a second project
project_b_item_dict = self.registerOrsClientProject() project_b_item_dict = self.registerOrsClientProject()
new_enb_id_ors_item_dict['data_supply'].setDestinationProject(project_b_item_dict['project'].getRelativeUrl()) new_enb_id_ors_item_dict['data_supply'] \
.setDestinationProject(project_b_item_dict['project'].getRelativeUrl())
# Generate another valid enb_id seed # Generate another valid enb_id seed
another_tag_enb_id_seed = generateRandomString(length=5, hexadecimal=True) another_tag_enb_id_seed = generateRandomString(length=5, hexadecimal=True)
while another_tag_enb_id_seed == new_tag_enb_id_seed: while another_tag_enb_id_seed == new_tag_enb_id_seed:
another_tag_enb_id_seed = generateRandomString(length=5, hexadecimal=True) another_tag_enb_id_seed = generateRandomString(length=5, hexadecimal=True)
# Call the script to simulate the same ORS registering a third time with another eNB identifier # Call the script to simulate the same ORS
# registering a third time with another eNB identifier
another_enb_id_ors_item_dict = self.registerOrs( another_enb_id_ors_item_dict = self.registerOrs(
tag_hostname_seed=tag_hostname_seed, tag_hostname_seed=tag_hostname_seed,
tag_comp_id_seed=tag_comp_id_seed, tag_comp_id_seed=tag_comp_id_seed,
...@@ -593,7 +798,8 @@ class WendelinTelecomTest(SecurityTestCase): ...@@ -593,7 +798,8 @@ class WendelinTelecomTest(SecurityTestCase):
def test_03_2_registerInvalidOrs(self): def test_03_2_registerInvalidOrs(self):
''' '''
Test the script called during slave instantiation in SlapOS by an ORS to automatically register itself. Test the script called during slave instantiation in SlapOS
by an ORS to automatically register itself.
Check all invalid cases. Check all invalid cases.
''' '''
...@@ -644,67 +850,134 @@ class WendelinTelecomTest(SecurityTestCase): ...@@ -644,67 +850,134 @@ class WendelinTelecomTest(SecurityTestCase):
''' '''
Test a simple valid ORS log ingestion: simulate a fluentd gateway forwarding valid ORS logs to the platform, Test a simple valid ORS log ingestion: simulate a fluentd gateway forwarding valid ORS logs to the platform,
and check that all items related to the ingestion are valid. and check that all items related to the ingestion are valid.
Also check the fetching of KPI values through the dedicated API endpoint.
The logs are correct here, even though some are expectedly out of chronological order.
''' '''
# Register the ORS # Register the ORS
ors_item_dict = self.registerOrs() ors_item_dict = self.registerOrs()
ors_tag = ors_item_dict['data_acquisition_unit'].getReference() ors_tag = ors_item_dict['data_acquisition_unit'].getReference()
# Get the correct data logs according to what is being tested # Get the correct data logs according to what is being tested
test_ors_example_log = None test_ors_example_logs = []
if data_key == "valid": if data_key == "valid":
test_ors_example_log = self.test_ors_example_log_valid test_ors_example_logs = [self.test_ors_example_log_valid]
elif data_key == "invalid": elif data_key == "invalid":
test_ors_example_log = self.test_ors_example_log_invalid test_ors_example_logs = [
self.test_ors_example_log_invalid_split_1,
self.test_ors_example_log_invalid_split_2
]
elif data_key == "empty": elif data_key == "empty":
test_ors_example_log = self.test_ors_example_log_empty test_ors_example_logs = [self.test_ors_example_log_empty]
# Perform ingestion # Perform ingestions, and keep only the last item dictionary
ingestion_item_dict = self.getOrsLogIngestionItems(test_ors_example_log, ors_tag) # as they are all identical
ingestion_item_dicts = [
self.getOrsLogIngestionItems(ors_log, ors_tag) \
for ors_log in test_ors_example_logs
]
ingestion_item_dict = ingestion_item_dicts[-1]
# In all cases, check that all items related to the ingestion exist # In all cases, check that all items related to the ingestions exist
self.assertEqual(NO_CONTENT, ingestion_item_dict['response'].getStatus()) self.assertEqual(NO_CONTENT, ingestion_item_dict['response'].getStatus())
self.assertTrue(ingestion_item_dict['data_acquisition_unit'] is not None) self.assertTrue(ingestion_item_dict['data_acquisition_unit'] is not None)
self.assertTrue(ingestion_item_dict['data_supply'] is not None) self.assertTrue(ingestion_item_dict['data_supply'] is not None)
self.assertTrue(ingestion_item_dict['data_ingestion'] is not None)
self.assertTrue(ingestion_item_dict['data_stream'].getData() is not None) self.assertTrue(ingestion_item_dict['data_stream'].getData() is not None)
self.assertTrue(ingestion_item_dict['data_analysis'] is not None) self.assertTrue(ingestion_item_dict['data_analysis'] is not None)
self.assertTrue(all(data_array is not None for data_array in ingestion_item_dict['data_array_list'])) self.assertTrue(all(data_array is not None for data_array in ingestion_item_dict['data_array_list']))
self.assertTrue(ingestion_item_dict['progress_indicator'] is not None)
# Check that the data arrays containing the KPI data have correctly been initialized # Check that the value of the progress indicator is equal to the size of the Data Stream:
self.assertTrue(ingestion_item_dict['data_acquisition_unit'].DataAcquisitionUnit_getERabDataArrayKey() is not None) # i.e. that all of the ingested data has been processed into KPIs
self.assertTrue(ingestion_item_dict['data_acquisition_unit'].DataAcquisitionUnit_getEUtranDataArrayKey() is not None) self.assertTrue(
ingestion_item_dict['progress_indicator'].getIntOffsetIndex() \
== ingestion_item_dict['data_stream'].getSize()
)
e_rab_shape = (0,) # Check that the Data Arrays containing the KPI data have correctly been initialized
e_rab_dtype = [ self.assertTrue(
ingestion_item_dict['data_acquisition_unit'].DataAcquisitionUnit_getERabDataArrayUrl() \
is not None
)
self.assertTrue(
ingestion_item_dict['data_acquisition_unit'].DataAcquisitionUnit_getEUtranDataArrayUrl() \
is not None
)
e_rab_array_shape = None
e_rab_array_dtype = [
('vt', '<f8'), ('vt', '<f8'),
('vInitialEPSBEstabSR_lo', '<f8'), ('vInitialEPSBEstabSR_lo', '<f8'),
('vInitialEPSBEstabSR_hi', '<f8'), ('vInitialEPSBEstabSR_hi', '<f8'),
('vAddedEPSBEstabSR_lo', '<f8'), ('vAddedEPSBEstabSR_lo', '<f8'),
('vAddedEPSBEstabSR_hi', '<f8') ('vAddedEPSBEstabSR_hi', '<f8')
] ]
e_utran_shape = (0,) e_utran_array_shape = None
e_utran_dtype = [('evt', '<f8'), ('qci', '<f8'), ('dl_lo', '<f8'), ('dl_hi', '<f8'), ('ul_lo', '<f8'), ('ul_hi', '<f8')] e_utran_array_dtype = [
('evt', '<f8'),
('dl_lo', '<f8'),
('dl_hi', '<f8'),
('ul_lo', '<f8'),
('ul_hi', '<f8')
]
if data_key == "valid": if data_key == "valid":
e_rab_shape = (24,) e_rab_array_shape = (82,)
e_utran_array_shape = (20992,)
elif data_key == "invalid": elif data_key == "invalid":
e_rab_shape = (30,) e_rab_array_shape = (73,)
e_utran_array_shape = (18688,)
elif data_key == "empty": elif data_key == "empty":
e_rab_shape = None e_rab_array_dtype = None
e_rab_dtype = None e_utran_array_dtype = None
e_utran_shape = None
e_utran_dtype = None
# Check the data types and shape of the Data Arrays
# Also fetch and check the KPI data from the dedicated API endpoint
for data_array in ingestion_item_dict['data_array_list']: for data_array in ingestion_item_dict['data_array_list']:
if 'e_rab' in data_array.getReference(): if 'e_rab' in data_array.getReference():
self.assertTrue(data_array.getArrayDtype() == e_rab_dtype) self.assertTrue(data_array.getArrayShape() == e_rab_array_shape)
self.assertTrue(data_array.getArrayShape() == e_rab_shape) self.assertTrue(data_array.getArrayDtype() == e_rab_array_dtype)
e_rab_kpi_dict = self.getOrsEnbKpiDict(
data_array.getRelativeUrl(),
'e_rab_accessibility'
)
if e_rab_array_shape is None:
self.assertTrue(e_rab_kpi_dict == {})
else:
for key in e_rab_kpi_dict:
self.assertTrue(len(e_rab_kpi_dict[key]) == e_rab_array_shape[0])
elif 'e_utran' in data_array.getReference(): elif 'e_utran' in data_array.getReference():
self.assertTrue(data_array.getArrayDtype() == e_utran_dtype) self.assertTrue(data_array.getArrayShape() == e_utran_array_shape)
self.assertTrue(data_array.getArrayShape() == e_utran_shape) self.assertTrue(data_array.getArrayDtype() == e_utran_array_dtype)
e_utran_kpi_dict = self.getOrsEnbKpiDict(
data_array.getRelativeUrl(),
'e_utran_ip_throughput'
)
if e_utran_array_shape is None:
self.assertTrue(e_utran_kpi_dict == {})
else:
for key in e_utran_kpi_dict:
if key == 'evt':
self.assertTrue(
len(e_utran_kpi_dict[key]) == e_utran_array_shape[0] // QCI_COUNT
)
else:
self.assertTrue(len(e_utran_kpi_dict[key]) == 1)
if key != 'active_qci':
self.assertTrue(
len(e_utran_kpi_dict[key][0]) == e_utran_array_shape[0] // QCI_COUNT
)
def test_04_2_ingestInvalidOrsLogDataFromFluentd(self): def test_04_2_ingestInvalidOrsLogDataFromFluentd(self):
''' '''
Test an invalid ORS log ingestion: simulate a fluentd gateway forwarding invalid ORS logs to the platform. Test an invalid ORS log ingestion: simulate a fluentd gateway forwarding invalid ORS logs to the platform.
Check that all items are still valid, as only the invalid measurements are ignored. Check that all items are still valid, as log chunks containing invalid measurements are skipped and
KPIs can continue to be calculated once they are no longer in the calculation window.
Also check the fetching of KPI values through the dedicated API endpoint.
''' '''
# Call the above test, but test with invalid data # Call the above test, but test with invalid data
...@@ -714,15 +987,16 @@ class WendelinTelecomTest(SecurityTestCase): ...@@ -714,15 +987,16 @@ class WendelinTelecomTest(SecurityTestCase):
''' '''
Test an empty ORS log ingestion: simulate a fluentd gateway forwarding empty ORS logs to the platform. Test an empty ORS log ingestion: simulate a fluentd gateway forwarding empty ORS logs to the platform.
Check that all items are valid, but the data arrays remain uninitialized. Check that all items are valid, but the data arrays remain uninitialized.
Also check the fetching of KPI values through the dedicated API endpoint.
''' '''
# Call the above test, but test with empty data # Call the above test, but test with empty data
self.test_04_1_ingestValidOrsLogDataFromFluentd(data_key="empty") self.test_04_1_ingestValidOrsLogDataFromFluentd(data_key="empty")
def test_04_4_ingestOrsLogDataWithoutPrefix(self): def test_04_4_ingestOrsLogDataWithoutTagPrefix(self):
''' '''
Simulate an entity trying to send data to the platform for ingestion Simulate an entity trying to send data to the platform for ingestion
without using the 'ors.' prefix added by fluentd. without using the 'ors.' tag prefix added by fluentd.
Check that the ingestion is refused. Check that the ingestion is refused.
''' '''
...@@ -737,7 +1011,664 @@ class WendelinTelecomTest(SecurityTestCase): ...@@ -737,7 +1011,664 @@ class WendelinTelecomTest(SecurityTestCase):
entity_tag entity_tag
) )
def test_05_wendelinTelecomSecurityModel(self): def test_05_updateOrsConfigurationsFastInput(self):
'''
Test the scripts called by the Update ORS Configurations Fast Input action which updates the title
of Data Acquisition Units, as well as the client project to which they are indirectly linked.
Check all possible configurations.
'''
def checkItemDictState(
item_dict,
data_acquisition_unit_validation_state,
data_supply_validation_state,
item_simulation_state,
expected_title=None,
expected_project=None
):
expected_title = expected_title \
or item_dict['data_acquisition_unit'].getReference()
self.assertTrue(
item_dict['data_acquisition_unit'].getTitle() == expected_title
)
self.assertTrue(
item_dict['data_acquisition_unit'].getValidationState() \
== data_acquisition_unit_validation_state
)
self.assertTrue(
item_dict['data_supply'].getValidationState() \
== data_supply_validation_state
)
if expected_project:
self.assertTrue(
item_dict['data_supply'].getDestinationProject() == expected_project
)
else:
self.assertTrue(
item_dict['data_supply'].getDestinationProject() is None
)
for item_key in ['data_ingestion', 'data_analysis']:
if item_key not in item_dict:
continue
self.assertTrue(
item_dict['data_ingestion'].getSimulationState() \
== item_simulation_state
)
if expected_project and item_simulation_state == 'started':
self.assertTrue(
item_dict[item_key].getDestinationProject() == expected_project
)
else:
self.assertTrue(
item_dict[item_key].getDestinationProject() is None
)
# Register ORS
ors_count = 8
ors_item_dict_list = [self.registerOrs() for _ in range(ors_count)]
# Register client projects
project_count = 2
project_item_dict_list = [self.registerOrsClientProject() for _ in range(project_count)]
# Perform a data ingestion for each ORS
# except for the last three
ingestion_item_dict_list = [
self.getOrsLogIngestionItems(
self.test_ors_example_log_valid,
ors_item_dict['data_acquisition_unit'].getReference()
)
for ors_item_dict in ors_item_dict_list[:5]
]
# Invalidate the third ORS
ingestion_item_dict_list[2]['data_acquisition_unit'].invalidate()
# Invalidate the Data Supply for the fourth ORS
ingestion_item_dict_list[3]['data_supply'].invalidate()
# Deliver the Data Ingestion and Data Analysis for the fifth ORS
ingestion_item_dict_list[4]['data_ingestion'].deliver()
ingestion_item_dict_list[4]['data_analysis'].deliver()
# Check the initial state of the ingestion items
checkItemDictState(
ingestion_item_dict_list[0],
'validated',
'validated',
'started',
)
checkItemDictState(
ingestion_item_dict_list[1],
'validated',
'validated',
'started',
)
checkItemDictState(
ingestion_item_dict_list[2],
'invalidated',
'validated',
'started',
)
checkItemDictState(
ingestion_item_dict_list[3],
'validated',
'invalidated',
'started',
)
checkItemDictState(
ingestion_item_dict_list[4],
'validated',
'validated',
'delivered',
)
checkItemDictState(
ors_item_dict_list[5],
'validated',
'validated',
'started',
)
checkItemDictState(
ors_item_dict_list[6],
'validated',
'validated',
'started',
)
checkItemDictState(
ors_item_dict_list[7],
'validated',
'validated',
'started',
)
# Retrieve the item list that will be used by the Fast Input listbox
# Check that all registered items are there by their relative URLs
# except for the third one (invalidated Data Acquisition Unit)
initial_listbox_item_list = \
self.portal.DataAcquisitionUnitModule_getOrsConfigurationFastInputList()
initial_listbox_item_url_list = [
item.getRelativeUrl() for item in initial_listbox_item_list
]
self.assertTrue(
ors_item_dict_list[0]['data_acquisition_unit'].getRelativeUrl() \
in initial_listbox_item_url_list
)
self.assertTrue(
ors_item_dict_list[1]['data_acquisition_unit'].getRelativeUrl() \
in initial_listbox_item_url_list
)
self.assertTrue(
ors_item_dict_list[2]['data_acquisition_unit'].getRelativeUrl() \
not in initial_listbox_item_url_list
)
self.assertTrue(
ors_item_dict_list[3]['data_acquisition_unit'].getRelativeUrl() \
in initial_listbox_item_url_list
)
self.assertTrue(
ors_item_dict_list[4]['data_acquisition_unit'].getRelativeUrl() \
in initial_listbox_item_url_list
)
self.assertTrue(
ors_item_dict_list[5]['data_acquisition_unit'].getRelativeUrl() \
in initial_listbox_item_url_list
)
self.assertTrue(
ors_item_dict_list[6]['data_acquisition_unit'].getRelativeUrl() \
in initial_listbox_item_url_list
)
self.assertTrue(
ors_item_dict_list[7]['data_acquisition_unit'].getRelativeUrl() \
in initial_listbox_item_url_list
)
# Build a listbox item list for updating:
# The first ORS will be linked to the first project
# The second will be linked to the second project
# The fourth will be linked to the first project
# The fifth will be linked to the second project
# The sixth will be left as is
# The seventh will be linked to the first project
# The eighth will also be left as is
listbox = (
{
'listbox_key': ors_item_dict_list[0]['data_acquisition_unit'].getRelativeUrl(),
'destination_project': project_item_dict_list[0]['project'].getRelativeUrl(),
'title': 'First Test ORS'
},
{
'listbox_key': ors_item_dict_list[1]['data_acquisition_unit'].getRelativeUrl(),
'destination_project': project_item_dict_list[1]['project'].getRelativeUrl(),
'title': 'Second Test ORS'
},
{
'listbox_key': ors_item_dict_list[3]['data_acquisition_unit'].getRelativeUrl(),
'destination_project': project_item_dict_list[0]['project'].getRelativeUrl(),
'title': 'Fourth Test ORS'
},
{
'listbox_key': ors_item_dict_list[4]['data_acquisition_unit'].getRelativeUrl(),
'destination_project': project_item_dict_list[1]['project'].getRelativeUrl(),
'title': 'Fifth Test ORS'
},
{
'listbox_key': ors_item_dict_list[5]['data_acquisition_unit'].getRelativeUrl(),
'destination_project': '',
'title': ''
},
{
'listbox_key': ors_item_dict_list[6]['data_acquisition_unit'].getRelativeUrl(),
'destination_project': project_item_dict_list[0]['project'].getRelativeUrl(),
'title': 'Seventh Test ORS'
},
{
'listbox_key': ors_item_dict_list[7]['data_acquisition_unit'].getRelativeUrl(),
'destination_project': '',
'title': ''
}
)
# Call the script to update the items
self.portal.DataAcquisitionUnitModule_updateOrsConfigurationFastInputList(listbox=listbox)
self.tic()
# Check that the properties have been correctly updated
checkItemDictState(
ingestion_item_dict_list[0],
'validated',
'validated',
'started',
expected_title='First Test ORS',
expected_project=project_item_dict_list[0]['project'].getRelativeUrl(),
)
checkItemDictState(
ingestion_item_dict_list[1],
'validated',
'validated',
'started',
expected_title='Second Test ORS',
expected_project=project_item_dict_list[1]['project'].getRelativeUrl(),
)
checkItemDictState(
ingestion_item_dict_list[2],
'invalidated',
'validated',
'started',
)
checkItemDictState(
ingestion_item_dict_list[3],
'validated',
'invalidated',
'started',
expected_title='Fourth Test ORS',
expected_project=project_item_dict_list[0]['project'].getRelativeUrl(),
)
checkItemDictState(
ingestion_item_dict_list[4],
'validated',
'validated',
'delivered',
expected_title='Fifth Test ORS',
expected_project=project_item_dict_list[1]['project'].getRelativeUrl(),
)
checkItemDictState(
ors_item_dict_list[5],
'validated',
'validated',
'started',
)
checkItemDictState(
ors_item_dict_list[6],
'validated',
'validated',
'started',
expected_title='Seventh Test ORS',
expected_project=project_item_dict_list[0]['project'].getRelativeUrl(),
)
checkItemDictState(
ors_item_dict_list[7],
'validated',
'validated',
'started',
)
def test_06_archiveOrsDataIngestionFastInput(self):
'''
Test the scripts called by the Archive ORS Data Ingestion Fast Input action which archives
the selected Data Acquisition Unit as well as all related items, in order to restart
the ingestion anew.
'''
archived_reference_marker = 'ARCHIVED'
def checkIngestionItemDictState(
ingestion_item_dict,
data_acquisition_unit_validation_state,
item_validation_state,
item_simulation_state,
archived=False
):
self.assertTrue(
ingestion_item_dict['data_acquisition_unit'].getValidationState() \
== data_acquisition_unit_validation_state
)
for item_key in ['data_supply', 'data_stream', 'progress_indicator']:
self.assertTrue(
ingestion_item_dict[item_key].getValidationState() \
== item_validation_state
)
for data_array in ingestion_item_dict['data_array_list']:
self.assertTrue(
data_array.getValidationState() == item_validation_state
)
for data_simulation_key in ['data_ingestion', 'data_analysis']:
self.assertTrue(
ingestion_item_dict[data_simulation_key].getSimulationState() \
== item_simulation_state
)
if archived:
self.assertTrue(
ingestion_item_dict['data_acquisition_unit'].getTitle().count(archived_reference_marker) == 1
)
for item_key in ['data_acquisition_unit', 'data_supply', 'data_stream']:
self.assertTrue(
archived_reference_marker in ingestion_item_dict[item_key].getReference()
)
for data_array in ingestion_item_dict['data_array_list']:
self.assertTrue(
archived_reference_marker in data_array.getReference()
)
for data_simulation_key in ['data_ingestion', 'data_analysis']:
self.assertTrue(
archived_reference_marker in ingestion_item_dict[data_simulation_key].getReference()
)
else:
self.assertTrue(
archived_reference_marker not in ingestion_item_dict['data_acquisition_unit'].getTitle()
)
for item_key in ['data_acquisition_unit', 'data_supply', 'data_stream']:
self.assertTrue(
archived_reference_marker not in ingestion_item_dict[item_key].getReference()
)
for data_array in ingestion_item_dict['data_array_list']:
self.assertTrue(
archived_reference_marker not in data_array.getReference()
)
for data_simulation_key in ['data_ingestion', 'data_analysis']:
self.assertTrue(
archived_reference_marker not in ingestion_item_dict[data_simulation_key].getReference()
)
# Register ORS
ors_count = 5
ors_item_dict_list = [self.registerOrs() for _ in range(ors_count)]
# Perform a data ingestion for each ORS
# except for the last one
ingestion_item_dict_list = [
self.getOrsLogIngestionItems(
self.test_ors_example_log_valid,
ors_item_dict['data_acquisition_unit'].getReference()
)
for ors_item_dict in ors_item_dict_list[:-1]
]
# Leave the first and second set of ingestion items as is
# For the third: invalidate the Data Acquisition Unit
ingestion_item_dict_list[2]['data_acquisition_unit'].invalidate()
# For the fourth: invalidate/deliver everything else
ingestion_item_dict_list[3]['data_supply'].invalidate()
ingestion_item_dict_list[3]['data_ingestion'].deliver()
ingestion_item_dict_list[3]['data_stream'].invalidate()
ingestion_item_dict_list[3]['data_analysis'].deliver()
for data_array in ingestion_item_dict_list[3]['data_array_list']:
data_array.invalidate()
ingestion_item_dict_list[3]['progress_indicator'].invalidate()
# Check the initial state of the ingestion items
checkIngestionItemDictState(
ingestion_item_dict_list[0],
'validated',
'validated',
'started',
)
checkIngestionItemDictState(
ingestion_item_dict_list[1],
'validated',
'validated',
'started',
)
checkIngestionItemDictState(
ingestion_item_dict_list[2],
'invalidated',
'validated',
'started',
)
checkIngestionItemDictState(
ingestion_item_dict_list[3],
'validated',
'invalidated',
'delivered',
)
self.assertTrue(
ors_item_dict_list[-1]['data_acquisition_unit'].getValidationState() \
== 'validated'
)
self.assertTrue(
ors_item_dict_list[-1]['data_supply'].getValidationState() \
== 'validated'
)
# Retrieve the item list that will be used by the Fast Input listbox
# Check that all registered items are there by their relative URLs
# except for the third one (invalidated Data Acquisition Unit)
initial_listbox_item_list = \
self.portal.DataAcquisitionUnitModule_getOrsIngestionFastInputList()
initial_listbox_item_url_list = [
item.getRelativeUrl() for item in initial_listbox_item_list
]
self.assertTrue(
ors_item_dict_list[0]['data_acquisition_unit'].getRelativeUrl() \
in initial_listbox_item_url_list
)
self.assertTrue(
ors_item_dict_list[1]['data_acquisition_unit'].getRelativeUrl() \
in initial_listbox_item_url_list
)
self.assertTrue(
ors_item_dict_list[2]['data_acquisition_unit'].getRelativeUrl() \
not in initial_listbox_item_url_list
)
self.assertTrue(
ors_item_dict_list[3]['data_acquisition_unit'].getRelativeUrl() \
in initial_listbox_item_url_list
)
self.assertTrue(
ors_item_dict_list[4]['data_acquisition_unit'].getRelativeUrl() \
in initial_listbox_item_url_list
)
# Build a listbox item list for updating:
# All ORS will be selected for archiving
# except for the second one
listbox = (
{
'listbox_key': ors_item_dict_list[0]['data_acquisition_unit'].getRelativeUrl(),
'listbox_selected': True
},
{
'listbox_key': ors_item_dict_list[1]['data_acquisition_unit'].getRelativeUrl(),
'listbox_selected': False
},
{
'listbox_key': ors_item_dict_list[3]['data_acquisition_unit'].getRelativeUrl(),
'listbox_selected': True
},
{
'listbox_key': ors_item_dict_list[4]['data_acquisition_unit'].getRelativeUrl(),
'listbox_selected': True
}
)
# Call the script to update the items
self.portal.DataAcquisitionUnitModule_archiveOrsIngestionFastInputList(listbox=listbox)
self.tic()
# Check that only the selected items have been correctly updated
checkIngestionItemDictState(
ingestion_item_dict_list[0],
'invalidated',
'invalidated',
'delivered',
archived=True
)
checkIngestionItemDictState(
ingestion_item_dict_list[1],
'validated',
'validated',
'started',
archived=False
)
checkIngestionItemDictState(
ingestion_item_dict_list[2],
'invalidated',
'validated',
'started',
archived=False
)
checkIngestionItemDictState(
ingestion_item_dict_list[3],
'invalidated',
'invalidated',
'delivered',
archived=True
)
self.assertTrue(
ors_item_dict_list[4]['data_acquisition_unit'].getValidationState() \
== 'invalidated'
)
self.assertTrue(
ors_item_dict_list[4]['data_acquisition_unit'].getTitle().count(archived_reference_marker) == 1
)
self.assertTrue(
archived_reference_marker in ors_item_dict_list[4]['data_acquisition_unit'].getReference()
)
self.assertTrue(
ors_item_dict_list[4]['data_supply'].getValidationState() \
== 'invalidated'
)
self.assertTrue(
archived_reference_marker in ors_item_dict_list[4]['data_supply'].getReference()
)
# Retrieve the item list that will be used by the Fast Input listbox again
# Check that only the second Data Acquisition Unit is there now
redo_listbox_item_list = \
self.portal.DataAcquisitionUnitModule_getOrsIngestionFastInputList()
redo_listbox_item_url_list = [
item.getRelativeUrl() for item in redo_listbox_item_list
]
self.assertTrue(
ors_item_dict_list[0]['data_acquisition_unit'].getRelativeUrl() \
not in redo_listbox_item_url_list
)
self.assertTrue(
ors_item_dict_list[1]['data_acquisition_unit'].getRelativeUrl() \
in redo_listbox_item_url_list
)
self.assertTrue(
ors_item_dict_list[2]['data_acquisition_unit'].getRelativeUrl() \
not in redo_listbox_item_url_list
)
self.assertTrue(
ors_item_dict_list[3]['data_acquisition_unit'].getRelativeUrl() \
not in redo_listbox_item_url_list
)
self.assertTrue(
ors_item_dict_list[4]['data_acquisition_unit'].getRelativeUrl() \
not in redo_listbox_item_url_list
)
def test_07_refreshOrsKpiDataAnalysisFastInput(self):
'''
Test the scripts called by the Refresh ORS KPI Data Analyses Fast Input action which plans
a full refresh for the selected ongoing Data Analyses.
'''
# Register ORS
ors_count = 5
ors_item_dict_list = [self.registerOrs() for _ in range(ors_count)]
# Perform a data ingestion for each ORS
ingestion_item_dict_list = [
self.getOrsLogIngestionItems(
self.test_ors_example_log_valid,
ors_item_dict['data_acquisition_unit'].getReference()
)
for ors_item_dict in ors_item_dict_list
]
# Leave the first and second Data Analyses started
# Deliver the third
ingestion_item_dict_list[2]['data_analysis'].deliver()
# Stop the fourth
ingestion_item_dict_list[3]['data_analysis'].stop()
# Plan a refresh for the fifth
ingestion_item_dict_list[4]['data_analysis'].planRefresh()
self.tic()
# Check the initial state of the Data Analyses
self.assertTrue(
ingestion_item_dict_list[0]['data_analysis'].getSimulationState() == 'started' \
and ingestion_item_dict_list[0]['data_analysis'].getRefreshState() == 'current'
)
self.assertTrue(
ingestion_item_dict_list[1]['data_analysis'].getSimulationState() == 'started' \
and ingestion_item_dict_list[1]['data_analysis'].getRefreshState() == 'current'
)
self.assertTrue(
ingestion_item_dict_list[2]['data_analysis'].getSimulationState() == 'delivered' \
and ingestion_item_dict_list[2]['data_analysis'].getRefreshState() == 'current'
)
self.assertTrue(
ingestion_item_dict_list[3]['data_analysis'].getSimulationState() == 'stopped' \
and ingestion_item_dict_list[3]['data_analysis'].getRefreshState() == 'current'
)
self.assertTrue(
ingestion_item_dict_list[4]['data_analysis'].getSimulationState() == 'started' \
and ingestion_item_dict_list[4]['data_analysis'].getRefreshState() == 'refresh_planned'
)
# Retrieve the item list that will be used by the Fast Input listbox
# Check that only the first Data Analysis is there by its relative URL
initial_listbox_item_list = \
self.portal.DataAnalysisModule_getOrsKpiDataAnalysisFastInputList()
initial_listbox_item_url_list = [
item.getRelativeUrl() for item in initial_listbox_item_list
]
self.assertTrue(
ingestion_item_dict_list[0]['data_analysis'].getRelativeUrl() \
in initial_listbox_item_url_list
)
self.assertTrue(
ingestion_item_dict_list[1]['data_analysis'].getRelativeUrl() \
in initial_listbox_item_url_list
)
self.assertTrue(
ingestion_item_dict_list[2]['data_analysis'].getRelativeUrl() \
not in initial_listbox_item_url_list
)
self.assertFalse(
ingestion_item_dict_list[3]['data_analysis'].getRelativeUrl() \
in initial_listbox_item_url_list
)
self.assertFalse(
ingestion_item_dict_list[4]['data_analysis'].getRelativeUrl() \
in initial_listbox_item_url_list
)
# Build a listbox item list for planning the refresh:
# Only the first Data Analysis will be refreshed
# The second one will be left as is
listbox = (
{
'listbox_key': ingestion_item_dict_list[0]['data_analysis'].getRelativeUrl(),
'listbox_selected': True
},
{
'listbox_key': ingestion_item_dict_list[1]['data_analysis'].getRelativeUrl(),
'listbox_selected': False
}
)
# Call the script to perform the refresh
self.portal.DataAnalysisModule_refreshOrsKpiDataAnalysisFastInputList(listbox=listbox)
self.tic()
# Check that only the first Data Analysis have been planned to refresh
self.assertTrue(
ingestion_item_dict_list[0]['data_analysis'].getSimulationState() == 'started' \
and ingestion_item_dict_list[0]['data_analysis'].getRefreshState() == 'refresh_planned'
)
self.assertTrue(
ingestion_item_dict_list[1]['data_analysis'].getSimulationState() == 'started' \
and ingestion_item_dict_list[1]['data_analysis'].getRefreshState() == 'current'
)
self.assertTrue(
ingestion_item_dict_list[2]['data_analysis'].getSimulationState() == 'delivered' \
and ingestion_item_dict_list[2]['data_analysis'].getRefreshState() == 'current'
)
self.assertTrue(
ingestion_item_dict_list[3]['data_analysis'].getSimulationState() == 'stopped' \
and ingestion_item_dict_list[3]['data_analysis'].getRefreshState() == 'current'
)
self.assertTrue(
ingestion_item_dict_list[4]['data_analysis'].getSimulationState() == 'started' \
and ingestion_item_dict_list[4]['data_analysis'].getRefreshState() == 'refresh_planned'
)
def test_08_wendelinTelecomSecurityModel(self):
''' '''
Test Wendelin Telecom's custom security model: Test Wendelin Telecom's custom security model:
check that different users have the correct permissions according to their function and project. check that different users have the correct permissions according to their function and project.
...@@ -759,18 +1690,15 @@ class WendelinTelecomTest(SecurityTestCase): ...@@ -759,18 +1690,15 @@ class WendelinTelecomTest(SecurityTestCase):
# Perform ingestions for all three ORSs # Perform ingestions for all three ORSs
ingestion_a_item_dict = self.getOrsLogIngestionItems( ingestion_a_item_dict = self.getOrsLogIngestionItems(
self.test_ors_example_log_valid, self.test_ors_example_log_valid,
ors_a_tag, ors_a_tag
stop_data_analysis=True
) )
ingestion_b_item_dict = self.getOrsLogIngestionItems( ingestion_b_item_dict = self.getOrsLogIngestionItems(
self.test_ors_example_log_valid, self.test_ors_example_log_valid,
ors_b_tag, ors_b_tag
stop_data_analysis=True
) )
ingestion_n_item_dict = self.getOrsLogIngestionItems( ingestion_n_item_dict = self.getOrsLogIngestionItems(
self.test_ors_example_log_valid, self.test_ors_example_log_valid,
ors_n_tag, ors_n_tag
stop_data_analysis=True
) )
# Link the first two ORSs to their project AFTER the ingestion # Link the first two ORSs to their project AFTER the ingestion
...@@ -779,15 +1707,24 @@ class WendelinTelecomTest(SecurityTestCase): ...@@ -779,15 +1707,24 @@ class WendelinTelecomTest(SecurityTestCase):
ors_b_item_dict['data_supply'].setDestinationProject(project_b_item_dict['project'].getRelativeUrl()) ors_b_item_dict['data_supply'].setDestinationProject(project_b_item_dict['project'].getRelativeUrl())
# Create a client user not associated to a project # Create a client user not associated to a project
client_user_n = self.createWendelinTelecomUser('test_user_%s' % generateRandomString(), None, 'user') client_user_n = self.createWendelinTelecomUser(
'test_user_%s' % generateRandomString(),
None,
'user'
)
# Create two administrator users: one associated to Project A and the second not associated to a project # Create two administrator users: one associated to Project A
# and the second not associated to a project
admin_user_a = self.createWendelinTelecomUser( admin_user_a = self.createWendelinTelecomUser(
'test_user_%s' % generateRandomString(), 'test_user_%s' % generateRandomString(),
project_a_item_dict['project'].getRelativeUrl(), project_a_item_dict['project'].getRelativeUrl(),
'administrator' 'administrator'
) )
admin_user_n = self.createWendelinTelecomUser('test_administrator_%s' % generateRandomString(), None, 'administrator') admin_user_n = self.createWendelinTelecomUser(
'test_administrator_%s' % generateRandomString(),
None,
'administrator'
)
# Check that the client of Project A only has access to Project A documents # Check that the client of Project A only has access to Project A documents
client_user_a = project_a_item_dict['client_user'] client_user_a = project_a_item_dict['client_user']
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment