Skip to content

chore(mix): clean up mix_node#2102

Merged
rlve merged 10 commits into
masterfrom
test-mix-5
Feb 13, 2026
Merged

chore(mix): clean up mix_node#2102
rlve merged 10 commits into
masterfrom
test-mix-5

Conversation

@rlve
Copy link
Copy Markdown
Contributor

@rlve rlve commented Feb 11, 2026

Clean up after #1822.

Changes:

  • clean up mix_node:
    • keep types MixNodeInfo and MixPubInfo
    • move test infrastructure to tests/mix/utils and simplify it
    • remove procs for writing/reading from the files with serialization/deserialization and other helpers
    • add toMixPubInfo helper to convert MixNodeInfo
  • remove entirely 2nd MixProtocol constructor that was reading MixNodeInfo from the files
  • add batch add to node pool
  • delete test_mix_node.nim (no longer needed)
  • update tests

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 11, 2026

🏁 Performance Summary

Commit: 3fe40ed4c78543c58e3cdec9970c14cf2b2cf307

Scenario Nodes Total messages sent Total messages received Latency min (ms) Latency max (ms) Latency avg (ms)
❌ Base Test (QUIC) 10 100 648 82.175 11257.159 4199.567
✅ Base Test (TCP) 10 100 900 0.349 2.840 1.490

📊 View Container Resources in the Workflow Summary

Latency History

🔵 Min • 🟢 Avg • 🔴 Max

%%{init: {"xyChart": {"width": 500, "height": 200}}}%%
xychart-beta
    title "TCP"
    x-axis "PR Number" 1599 --> 2109
    y-axis "Latency (ms)"
    line "Min" [0.315, 0.429, 0.308, 0.349, 0.397, 0.259, 0.317, 0.333, 0.266, 0.278, 0.322, 0.300, 0.301, 0.302, 0.263, 0.338, 0.288, 0.308, 0.318, 0.313, 0.358, 0.317, 0.274, 0.293, 0.278, 0.312, 0.308, 0.280, 0.296, 0.292, 0.296, 0.296, 0.437, 0.265, 0.444, 0.396, 0.323, 0.305, 0.305, 0.293, 0.333, 0.322, 0.370, 0.273, 0.338, 0.275, 0.318, 0.322, 0.405, 0.278, 0.325, 0.297, 0.275, 0.297, 0.280, 0.277, 0.407, 0.304, 0.329, 0.319, 0.372, 0.289, 0.317, 0.262, 0.298, 0.376, 0.331, 0.257, 0.286, 0.299, 0.267, 0.530, 0.277, 0.240, 0.266, 0.424, 0.235, 0.261, 0.364, 0.422, 0.274, 0.297, 0.313, 0.291, 0.317, 0.356, 0.274, 0.222, 0.290, 0.253, 0.319, 0.268, 0.303, 0.246, 0.304, 0.316, 0.217, 0.252, 0.431, 0.247, 0.291, 0.267, 0.297, 0.392, 0.267, 0.335, 0.447, 0.289, 0.251, 0.361, 0.400, 0.393, 0.323, 0.267, 0.357, 0.284, 0.266, 0.319, 0.284, 0.299, 0.340, 0.323, 0.239, 0.300, 0.323, 0.339, 0.274, 0.272, 0.342, 0.594, 0.341, 0.254, 0.492, 0.404, 0.499, 0.418, 0.565, 0.343, 0.537, 0.486, 0.487, 0.497, 0.532, 0.582, 0.544, 0.482, 0.502, 0.464, 0.463, 0.510, 0.496, 0.424, 0.363, 0.437, 0.505, 0.484, 0.449, 0.453, 0.648, 0.572, 0.494, 0.498, 0.466, 0.528, 0.407, 0.503, 0.424, 0.473, 0.380, 0.535, 0.423, 0.493, 0.465, 0.439, 0.428, 0.467, 0.492, 0.461, 0.458, 0.469, 0.513, 0.532, 0.414, 0.379, 0.462, 0.462, 0.458, 0.466, 0.450, 0.432, 0.457, 0.424, 0.502, 0.446, 0.420, 0.515, 0.448, 0.438, 0.503, 0.542, 0.392, 0.516, 0.465, 0.457, 0.470, 0.529, 0.444, 0.409, 0.485, 0.377, 0.392, 0.555, 0.369, 0.320, 0.528, 0.448, 0.465, 0.487, 0.433, 0.549, 0.351, 0.323, 0.373, 0.471, 0.519, 0.493, 0.372, 0.420, 0.389, 0.426, 0.399, 0.365, 0.425, 0.463, 0.602, 0.492, 0.569, 0.500, 0.536, 0.525, 0.456, 0.422, 0.360, 0.535, 0.403, 0.563, 0.531, 0.537, 0.435, 0.512, 0.585, 0.474, 0.447, 0.370, 0.540, 0.501, 0.404, 0.560, 0.401, 0.477, 0.394, 0.326, 0.393, 0.410, 0.505, 0.383, 0.278, 0.479, 0.377, 0.467, 0.497, 0.320, 0.440, 0.434, 0.500, 0.346, 0.477, 0.456, 0.394, 0.353, 0.445, 0.492, 0.365, 0.485, 0.377, 0.450, 0.395, 0.355, 0.281, 0.344, 0.502, 0.459, 0.445, 0.422, 0.502, 0.405, 0.487, 0.499, 0.393, 0.469, 0.352, 0.395, 0.590, 0.332, 0.374, 0.490, 0.379, 0.536, 0.428, 0.484, 0.342, 0.562, 0.390, 0.488, 0.374, 0.429, 0.485, 0.355, 0.446, 0.503, 0.357, 0.499, 0.355, 0.435, 0.345, 0.441, 0.462, 0.429, 0.449, 0.495, 0.464, 0.372, 0.426, 0.437, 0.430, 0.510, 0.405, 0.466, 0.463, 0.455, 0.450, 0.325, 0.557, 0.317, 0.463, 0.442, 0.491, 0.596, 0.459, 0.499, 0.516, 0.422, 0.349, 0.483, 0.422, 0.499, 0.475, 0.462, 0.446]
    line "Avg" [1.042, 1.134, 1.015, 1.035, 1.177, 0.899, 1.040, 1.085, 0.860, 1.015, 1.020, 0.945, 0.986, 1.074, 0.899, 0.975, 0.958, 1.027, 0.959, 1.047, 1.103, 1.046, 0.908, 0.882, 0.896, 1.064, 1.011, 0.957, 0.991, 0.923, 0.867, 0.959, 1.126, 0.910, 1.125, 1.085, 0.983, 1.049, 1.053, 1.056, 1.080, 0.989, 1.137, 1.007, 1.062, 0.874, 1.065, 1.137, 1.321, 0.852, 1.080, 0.991, 1.003, 1.017, 0.971, 1.068, 1.026, 1.054, 1.100, 1.054, 1.087, 0.961, 0.886, 0.878, 1.028, 1.247, 1.023, 0.887, 1.015, 0.952, 0.875, 1.716, 1.003, 0.997, 0.982, 1.178, 0.804, 0.839, 1.092, 1.110, 0.850, 1.026, 0.996, 0.959, 1.046, 1.083, 0.907, 0.852, 0.933, 0.953, 1.103, 0.932, 1.033, 0.974, 0.901, 1.042, 0.807, 0.838, 1.146, 1.110, 0.967, 0.981, 0.902, 1.065, 0.980, 1.053, 1.187, 0.955, 0.857, 1.106, 1.137, 1.130, 1.215, 1.003, 1.135, 0.933, 0.939, 0.997, 0.910, 0.949, 1.081, 1.009, 0.860, 1.047, 0.958, 0.999, 1.007, 0.870, 1.585, 1.622, 1.666, 0.923, 1.652, 1.383, 1.573, 1.415, 1.903, 1.399, 1.464, 1.422, 1.637, 1.594, 1.636, 1.531, 1.644, 1.674, 1.504, 1.422, 1.780, 1.681, 1.519, 1.252, 1.365, 1.539, 1.592, 1.591, 1.708, 1.391, 1.909, 1.760, 1.483, 1.432, 1.549, 1.699, 1.448, 1.533, 1.597, 1.353, 1.221, 1.833, 1.523, 1.475, 1.355, 1.485, 1.827, 1.522, 1.602, 1.429, 1.607, 1.528, 1.480, 1.731, 1.834, 1.308, 1.853, 1.399, 1.696, 1.611, 1.365, 1.297, 1.469, 1.585, 1.775, 1.350, 1.401, 1.732, 1.582, 1.506, 1.410, 1.592, 1.339, 1.465, 1.328, 1.384, 1.545, 1.439, 1.414, 1.779, 1.433, 1.428, 2.023, 1.749, 1.435, 1.495, 1.427, 1.421, 1.487, 1.588, 1.243, 1.510, 1.339, 1.793, 1.222, 1.716, 1.607, 1.468, 1.575, 1.487, 1.583, 1.543, 1.501, 1.412, 1.390, 1.738, 1.691, 1.521, 1.740, 1.568, 1.656, 1.458, 1.405, 1.646, 1.517, 1.491, 1.850, 1.591, 1.589, 1.408, 1.450, 1.703, 1.954, 1.537, 1.484, 1.333, 1.528, 1.374, 1.373, 1.805, 1.378, 1.464, 1.718, 1.326, 1.463, 1.337, 1.369, 1.274, 1.123, 1.551, 1.448, 1.544, 1.470, 1.385, 1.926, 1.644, 1.432, 1.374, 1.504, 1.464, 1.349, 1.259, 1.651, 1.696, 1.151, 1.539, 1.349, 1.415, 1.364, 1.295, 1.175, 1.138, 1.470, 1.367, 1.442, 1.517, 1.372, 1.355, 1.417, 1.693, 1.279, 1.427, 1.301, 1.172, 1.544, 1.477, 1.315, 1.379, 1.451, 1.667, 1.350, 1.548, 1.139, 1.400, 1.363, 1.374, 1.158, 1.280, 1.527, 1.349, 1.797, 1.471, 1.375, 1.423, 1.392, 1.411, 1.483, 1.376, 1.355, 1.596, 1.375, 1.967, 1.475, 1.325, 1.726, 1.541, 1.395, 1.403, 1.313, 1.639, 1.507, 1.370, 1.333, 1.365, 1.460, 1.150, 1.388, 1.408, 1.400, 1.548, 1.334, 1.526, 1.709, 1.490, 1.490, 1.598, 1.483, 1.903, 1.444, 1.300, 1.655]
    line "Max" [2.298, 2.513, 2.647, 2.370, 2.486, 2.258, 2.316, 2.407, 2.065, 3.120, 2.328, 2.193, 2.359, 2.398, 2.082, 2.241, 2.339, 2.187, 2.267, 2.268, 2.480, 2.591, 2.231, 1.950, 2.493, 2.596, 2.270, 2.198, 2.587, 2.539, 1.811, 2.355, 2.373, 2.516, 2.368, 2.412, 2.166, 2.482, 2.401, 2.505, 2.396, 2.211, 2.686, 2.876, 2.527, 2.543, 2.441, 2.495, 3.568, 2.073, 2.354, 2.257, 2.217, 2.562, 2.383, 3.300, 2.337, 2.394, 2.521, 2.316, 2.490, 2.352, 2.218, 2.233, 2.267, 2.836, 2.352, 2.316, 2.371, 2.306, 1.972, 3.568, 2.457, 2.517, 2.295, 2.685, 1.995, 1.988, 2.495, 2.309, 2.154, 2.482, 2.433, 2.387, 2.387, 2.335, 2.411, 2.018, 2.145, 2.515, 2.441, 2.129, 2.243, 2.354, 2.225, 2.359, 2.232, 2.120, 3.212, 3.323, 2.256, 2.348, 2.230, 2.484, 2.177, 2.245, 2.542, 2.492, 2.067, 2.443, 2.400, 2.524, 2.732, 2.678, 2.575, 2.320, 2.945, 2.775, 2.175, 2.225, 2.827, 2.412, 2.462, 2.354, 2.303, 2.117, 2.404, 2.228, 3.568, 3.422, 3.568, 2.286, 3.568, 3.568, 3.568, 3.112, 3.568, 3.568, 3.349, 3.582, 3.568, 3.568, 3.568, 3.211, 3.568, 3.568, 3.401, 3.568, 3.568, 3.568, 3.568, 2.844, 3.133, 3.568, 3.568, 3.568, 3.568, 3.568, 3.568, 6.031, 3.568, 3.255, 3.568, 3.568, 3.540, 3.694, 3.568, 3.391, 2.740, 3.568, 3.568, 3.568, 3.214, 3.373, 3.568, 3.568, 3.568, 3.161, 3.568, 3.568, 4.087, 3.568, 3.568, 3.568, 3.568, 3.399, 3.569, 3.568, 3.367, 2.849, 3.604, 3.568, 3.568, 2.639, 3.568, 3.286, 3.568, 3.366, 2.914, 3.014, 2.823, 3.114, 2.886, 3.056, 3.270, 3.034, 2.635, 3.230, 3.017, 2.801, 3.696, 3.013, 2.960, 2.848, 3.011, 3.047, 2.859, 41.554, 2.632, 3.259, 2.632, 41.585, 2.622, 41.150, 3.285, 3.016, 2.941, 2.964, 40.959, 2.960, 2.646, 2.909, 2.977, 10.590, 3.118, 3.117, 3.290, 2.948, 3.358, 2.931, 3.021, 41.389, 40.819, 2.907, 41.096, 3.057, 3.185, 2.936, 2.973, 3.208, 3.826, 3.120, 2.892, 2.581, 2.909, 2.755, 2.648, 41.810, 2.699, 2.980, 41.762, 2.849, 28.067, 2.728, 2.818, 2.749, 2.245, 41.012, 2.469, 3.055, 2.727, 2.740, 41.972, 2.812, 2.924, 41.058, 2.867, 2.866, 2.629, 2.511, 2.901, 4.619, 2.468, 2.867, 2.877, 2.844, 2.668, 2.698, 2.348, 2.418, 2.910, 2.699, 2.977, 3.035, 2.878, 2.490, 2.788, 41.808, 2.797, 2.623, 2.652, 2.326, 2.857, 41.055, 2.864, 2.787, 2.488, 41.659, 2.683, 12.924, 2.281, 2.740, 2.709, 2.731, 2.458, 2.620, 2.845, 2.687, 41.508, 2.856, 2.561, 2.853, 2.500, 2.925, 2.747, 2.823, 2.707, 2.930, 2.692, 41.449, 2.989, 2.725, 41.781, 2.712, 2.906, 3.026, 2.867, 40.920, 2.739, 2.785, 2.806, 2.728, 2.911, 2.230, 2.821, 2.778, 2.712, 3.053, 2.752, 2.822, 32.429, 2.801, 2.840, 41.297, 2.840, 41.311, 2.589, 2.743, 41.605]
Loading
%%{init: {"xyChart": {"width": 500, "height": 200}}}%%
xychart-beta
    title "QUIC"
    x-axis "PR Number" 1685 --> 2109
    y-axis "Latency (ms)"
    line "Min" [0.000, 0.659, 0.000, 0.325, 0.229, 0.000, 0.000, 0.208, 0.223, 0.000, 0.000, 0.000, 0.000, 0.271, 0.203, 0.186, 0.000, 0.219, 0.254, 0.000, 0.000, 0.338, 0.000, 0.000, 0.207, 0.000, 0.221, 0.229, 0.000, 0.322, 0.000, 0.205, 0.000, 0.368, 0.213, 0.000, 0.187, 0.263, 0.179, 0.000, 0.323, 0.000, 0.000, 0.000, 0.000, 0.169, 0.197, 0.000, 0.306, 0.000, 0.000, 0.000, 0.448, 0.000, 0.242, 0.423, 0.000, 0.357, 0.392, 0.000, 0.000, 0.404, 0.364, 0.000, 0.000, 0.424, 0.000, 0.000, 0.000, 0.359, 0.449, 0.296, 0.364, 0.286, 0.000, 0.396, 0.000, 0.336, 0.369, 0.381, 0.370, 0.420, 0.451, 0.407, 0.000, 0.483, 0.583, 0.000, 0.588, 0.528, 0.572, 0.220, 0.368, 0.507, 0.549, 0.387, 0.559, 0.571, 0.609, 0.637, 0.441, 0.491, 0.609, 0.636, 0.586, 0.512, 0.412, 0.535, 0.548, 0.582, 0.592, 0.390, 0.571, 0.660, 0.582, 0.497, 97.063, 0.401, 0.621, 0.589, 0.441, 0.651, 0.563, 0.471, 0.596, 0.600, 0.622, 0.537, 0.688, 0.634, 0.526, 0.646, 0.470, 0.518, 0.477, 0.515, 0.418, 0.571, 0.555, 0.634, 0.629, 0.537, 0.596, 24.886, 0.446, 0.398, 0.643, 0.691, 0.521, 0.565, 0.563, 0.487, 0.550, 95.956, 0.487, 0.473, 0.452, 0.608, 0.468, 0.649, 0.561, 0.663, 0.551, 0.587, 0.623, 0.466, 0.511, 93.744, 0.506, 0.635, 0.581, 0.578, 0.593, 0.651, 0.454, 0.550, 86.830, 12.139, 89.769, 96.799, 41.076, 5.759, 0.306, 76.843, 2.206, 126.818, 99.158, 39.857, 3.384, 71.646, 168.890, 82.693, 0.375, 20.074, 97.045, 20.776, 84.214, 65.765, 73.293, 116.189, 92.954, 1.383, 154.767, 107.357, 28.077, 88.728, 193.222, 0.383, 141.824, 117.469, 0.860, 169.979, 23.653, 64.484, 93.692, 0.616, 80.456, 192.951, 150.355, 27.799, 147.856, 93.766, 88.856, 0.386, 19.143, 114.477, 5.949, 167.471, 45.499, 126.135, 0.702, 25.416, 91.120, 88.201, 67.542, 69.725, 147.273, 138.266, 0.391, 93.623, 9.571, 38.081, 114.306, 1.397, 54.333, 81.533, 122.593, 0.274, 157.109, 90.043, 123.942, 8.337, 165.674, 94.715, 108.998, 8.385, 30.756, 176.358, 106.054, 107.042, 22.650, 34.868, 97.778, 85.581, 96.825, 90.433, 75.663, 17.515, 49.752, 95.417, 107.597, 107.803, 6.139, 36.556, 88.208, 82.175, 80.691, 55.987, 109.452, 40.644, 9.192, 89.156]
    line "Avg" [1.069, 1.707, 0.259, 1.020, 0.856, 0.725, 0.602, 0.893, 0.875, 0.661, 0.557, 0.731, 0.796, 0.949, 0.726, 0.849, 0.761, 0.718, 0.939, 0.550, 0.561, 0.943, 0.832, 0.807, 0.867, 0.633, 1.098, 0.735, 0.608, 1.008, 0.530, 0.823, 0.822, 1.001, 0.919, 0.789, 0.785, 0.862, 0.741, 0.384, 0.935, 0.539, 0.664, 0.689, 0.829, 0.677, 0.918, 0.625, 0.880, 0.554, 0.506, 0.520, 1.456, 0.838, 0.873, 1.195, 0.824, 1.267, 1.176, 0.885, 0.661, 1.160, 1.118, 0.990, 1.148, 1.215, 1.187, 1.033, 1.098, 1.268, 1.200, 1.277, 1.181, 1.244, 0.863, 1.411, 0.948, 1.204, 1.203, 1.323, 1.341, 1.366, 1.242, 1.218, 1.116, 1.650, 1.700, 1.018, 1.666, 1.618, 1.699, 1.034, 1.254, 1.552, 1.605, 1.509, 1.613, 1.720, 1.646, 1.781, 1.639, 1.600, 1.780, 1.830, 1.749, 1.636, 1.531, 1.607, 1.667, 1.720, 1.716, 1.414, 1.555, 1.760, 1.690, 1.590, 5390.257, 1.385, 1.644, 1.727, 1.561, 1.827, 1.725, 1.688, 1.626, 1.608, 1.643, 1.608, 1.725, 5154.749, 1.668, 1.690, 1.509, 1.661, 1.564, 1.614, 1.552, 1.697, 1.667, 1.601, 1.579, 1.525, 1.757, 3851.139, 1.481, 1.363, 1.692, 1.828, 1.650, 1.622, 1.623, 1.513, 1.718, 5627.192, 1.584, 1.535, 1.474, 1.740, 1.603, 1.708, 1.601, 1.831, 1.668, 1.727, 1.713, 1.390, 1.629, 5590.477, 1.616, 1.757, 1.645, 1.725, 1.835, 1.888, 1.515, 1.779, 5409.980, 3848.162, 5399.785, 5416.218, 4998.964, 3322.711, 5350.006, 3161.317, 4327.767, 5401.011, 5632.122, 4332.595, 3855.381, 5381.677, 5410.850, 5379.698, 5325.159, 3264.026, 5406.406, 2877.535, 5619.791, 4868.868, 4351.924, 5379.625, 5390.526, 4185.356, 4339.007, 5423.830, 5158.805, 3283.025, 5413.886, 3890.990, 5411.251, 5405.579, 4852.987, 5409.863, 4351.513, 5390.920, 5396.125, 4335.383, 4855.550, 5408.860, 5390.895, 3888.237, 5621.775, 5625.948, 5417.174, 3896.849, 4344.756, 5413.523, 3900.135, 5623.754, 3335.108, 5617.380, 3850.418, 4665.434, 5595.328, 5384.307, 4889.007, 3721.125, 5620.378, 5407.198, 3702.736, 4342.471, 5140.244, 3718.243, 5412.590, 5144.053, 4344.548, 5412.891, 3924.338, 2931.478, 5415.198, 5402.052, 5395.892, 3854.647, 5398.117, 5391.637, 5392.571, 4348.617, 3325.866, 5400.059, 5408.404, 5397.747, 4176.113, 2925.300, 5404.648, 5394.377, 5378.834, 5390.525, 5392.560, 4860.619, 3262.850, 5402.160, 5410.038, 5635.350, 5127.366, 4683.742, 5404.889, 4199.567, 5403.167, 5160.625, 5616.142, 5132.207, 3702.273, 3905.094]
    line "Max" [2.783, 6.605, 0.821, 1.944, 1.917, 1.681, 1.573, 1.837, 1.857, 1.782, 1.274, 1.783, 2.676, 2.006, 1.943, 2.179, 1.918, 1.755, 1.959, 1.371, 1.455, 1.958, 2.546, 1.978, 1.997, 1.535, 2.434, 1.934, 1.541, 2.256, 1.587, 1.879, 1.830, 2.144, 1.966, 1.840, 1.831, 1.849, 1.714, 1.796, 2.375, 1.343, 1.580, 1.815, 2.349, 1.672, 1.771, 1.586, 1.984, 1.678, 1.404, 1.476, 3.783, 2.333, 2.056, 2.873, 2.073, 2.809, 2.498, 2.435, 1.792, 2.426, 2.214, 2.181, 2.954, 2.497, 2.517, 2.223, 2.517, 2.560, 2.569, 2.510, 2.509, 2.615, 2.074, 4.512, 2.230, 2.542, 2.512, 3.394, 2.811, 3.227, 2.571, 2.708, 2.375, 3.946, 4.238, 2.346, 4.349, 4.111, 4.722, 2.563, 2.672, 3.922, 4.296, 3.873, 4.155, 4.365, 4.428, 4.471, 4.182, 4.108, 4.544, 4.572, 4.385, 3.944, 4.006, 4.238, 4.119, 4.910, 4.201, 4.154, 3.851, 4.208, 3.972, 4.180, 13384.537, 4.207, 3.611, 4.619, 5.194, 3.998, 3.792, 3.652, 3.594, 3.831, 3.703, 3.748, 3.740, 13416.452, 3.663, 3.740, 3.650, 3.712, 3.473, 3.397, 3.419, 3.935, 3.699, 3.564, 3.483, 3.390, 3.787, 10398.524, 3.437, 3.336, 3.927, 4.142, 3.729, 3.732, 3.619, 3.601, 3.910, 13413.982, 3.649, 3.510, 3.413, 3.825, 3.712, 3.789, 3.649, 4.046, 3.611, 3.966, 3.815, 3.280, 3.618, 13381.920, 3.538, 3.962, 3.473, 3.777, 3.957, 4.089, 3.567, 4.077, 13395.075, 10316.321, 13388.816, 13407.508, 13068.430, 9127.792, 13455.592, 9110.132, 11291.441, 13406.686, 13432.372, 11216.341, 10333.153, 13386.977, 13368.189, 13365.586, 13317.707, 9119.843, 13377.546, 8206.068, 13420.816, 12170.939, 11271.672, 13299.660, 13372.469, 11316.780, 11197.172, 13430.586, 13368.628, 9133.650, 13394.729, 10371.381, 13333.998, 13413.718, 12122.762, 13388.967, 11314.912, 13381.298, 13380.953, 11303.295, 12172.637, 13386.055, 13342.309, 10396.609, 13361.184, 13406.790, 13418.642, 10355.296, 11244.748, 13422.216, 10384.493, 13388.579, 9133.782, 13414.969, 10354.003, 12120.612, 13393.044, 13370.389, 12226.992, 10353.385, 13337.638, 13371.809, 10099.555, 11287.794, 13379.994, 10416.619, 13445.469, 13384.055, 11263.687, 13394.134, 10434.232, 8329.041, 13370.360, 13404.236, 13320.180, 10374.649, 13394.285, 13397.861, 13395.704, 11334.562, 9148.790, 13375.391, 13426.623, 13418.468, 11240.738, 8227.104, 13415.422, 13389.147, 13368.432, 13385.742, 13404.497, 12117.572, 9138.054, 13384.511, 13403.151, 13430.320, 13351.265, 12139.128, 13408.578, 11257.159, 13400.093, 13426.519, 13392.232, 13380.213, 10398.645, 10374.792]
Loading

@rlve rlve linked an issue Feb 11, 2026 that may be closed by this pull request
@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented Feb 11, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 72.56%. Comparing base (7d68f00) to head (3fe40ed).

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##           master    #2102      +/-   ##
==========================================
+ Coverage   72.52%   72.56%   +0.03%     
==========================================
  Files         152      152              
  Lines       18969    18763     -206     
  Branches       19       19              
==========================================
- Hits        13758    13616     -142     
+ Misses       5211     5147      -64     
Files with missing lines Coverage Δ
libp2p/protocols/mix.nim 95.83% <ø> (ø)
libp2p/protocols/mix/mix_node.nim 100.00% <100.00%> (+28.01%) ⬆️
libp2p/protocols/mix/mix_protocol.nim 82.82% <ø> (-0.33%) ⬇️
libp2p/protocols/mix/pool.nim 84.84% <100.00%> (+0.47%) ⬆️

... and 3 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Comment thread examples/mix_ping.nim Outdated
Comment thread tests/libp2p/mix/utils.nim Outdated
Comment thread tests/libp2p/mix/utils.nim Outdated
Comment thread tests/libp2p/mix/utils.nim Outdated
@rlve rlve marked this pull request as ready for review February 12, 2026 13:34
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR cleans up the Mix protocol’s node info handling by removing file-based serialization helpers and updating tests/examples to construct MixNodeInfo directly and populate the node pool via the peerstore-backed MixNodePool.

Changes:

  • Remove Mix node file read/write + related helpers, keeping only MixNodeInfo/MixPubInfo and adding toMixPubInfo.
  • Remove the MixProtocol constructor that loaded node info from disk; update test infrastructure to generate nodes in-memory.
  • Add a bulk add API to MixNodePool and update tests to cover it.

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated no comments.

Show a summary per file
File Description
tests/libp2p/mix/utils.nim Replaces file-based mix node setup with in-memory MixNodeInfo generation and pool population helpers.
tests/libp2p/mix/test_spam_protection_mixnode.nim Removes teardown cleanup tied to deleted on-disk node info folders.
tests/libp2p/mix/test_pool.nim Switches to in-memory node generation and adds tests for bulk pool add.
tests/libp2p/mix/test_mix_node.nim Deletes obsolete tests that validated removed file serialization behavior.
tests/libp2p/mix/test_conn.nim Updates tests to source pub info from node pool instead of files.
libp2p/protocols/mix/pool.nim Adds add(pool, seq[MixPubInfo]) overload.
libp2p/protocols/mix/mix_protocol.nim Removes file-loading constructor and associated os usage.
libp2p/protocols/mix/mix_node.nim Strips serialization + helper APIs; adds toMixPubInfo.
libp2p/protocols/mix.nim Stops exporting removed helpers; re-exports mix_node.
examples/mix_ping.nim Updates example to generate node infos in-memory and populate nodePool without files.
Comments suppressed due to low confidence (1)

libp2p/protocols/mix/pool.nim:80

  • MixNodePool.remove is declared to return bool (“true if the node was present”), but it never sets/returns result. As written it will always return the default false, causing callers/tests expecting true on successful removal to fail. Return the value from pool.peerStore[MixPubKeyBook].del(peerId) (or otherwise compute whether the entry existed) and ensure the proc returns it.
proc remove*(pool: MixNodePool, peerId: PeerId): bool =
  ## Remove a mix node from the pool. Returns true if the node was present.
  pool.peerStore[MixPubKeyBook].del(peerId)
  # Note: We only delete from MixPubKeyBook. The peer may still have
  # entries in AddressBook/KeyBook for other protocols.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Copy Markdown
Member

@vladopajic vladopajic left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

use same code construct to create mix nodes (populate pool info)

Comment thread tests/libp2p/mix/utils.nim Outdated
Comment thread examples/mix_ping.nim Outdated
Comment thread tests/libp2p/mix/utils.nim
Copy link
Copy Markdown
Member

@vladopajic vladopajic left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgmt, will require @chaitanyaprem to review and approve these changes as well

Copilot AI review requested due to automatic review settings February 12, 2026 17:48
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 10 out of 10 changed files in this pull request and generated 1 comment.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@@ -35,119 +29,6 @@ proc initMixNodeInfo*(
libp2pPrivKey: libp2pPrivKey,
)

Copy link

Copilot AI Feb 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MixNodeInfo.get* was removed, but MixNodeInfo is part of the public mix API (re-exported via libp2p/protocols/mix.nim). This is a breaking change for downstream users that relied on tuple-destructuring via get(). If the intent is not to break the public API, consider re-introducing a get*(MixNodeInfo) accessor (or an equivalent) and/or documenting the API removal explicitly (changelog / migration note) and stop re-exporting get as a generic symbol if it’s now only meant for MixPubInfo.

Suggested change
proc get*(info: MixNodeInfo): (PeerId, MultiAddress, FieldElement, FieldElement, SkPublicKey, SkPrivateKey) =
(info.peerId, info.multiAddr, info.mixPubKey, info.mixPrivKey, info.libp2pPubKey, info.libp2pPrivKey)

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Contributor

@chaitanyaprem chaitanyaprem left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, Thanks!

Things look a lot cleaner now.

Comment thread libp2p/protocols/mix/mix_node.nim
## along with all its contents, if the folder exists.
if dirExists(nodeInfoFolderPath):
removeDir(nodeInfoFolderPath)
proc generateRandomMany*(
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if this function should live here and not in some utils file. It's useful for tests and examples but it's not going to be used IRL (i.e. you would likely only have a single switch in your machine, thus only a single MixNodeInfo known when node starts, with the others being discovered).

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

utilities should be co-located with the types they operate on, regardless of where they're used. while it might seem counterintuitive to place a testing utility in the same module as production code, this is actually the right approach when the utility needs to be reused.
these utilities are serving both the module itself and its downstream dependencies - waku can probably reuse this for their tests.

Copy link
Copy Markdown
Member

@vladopajic vladopajic Feb 13, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

for example, includeAllExcept is utility that was needed in tests. but if it is part of same module as types it operates on then technically it can be reused is production code - it is very easy to imagine that there could be such use case.

@github-project-automation github-project-automation Bot moved this from new to In Progress in nim-libp2p Feb 13, 2026
Copilot AI review requested due to automatic review settings February 13, 2026 14:29
@rlve rlve enabled auto-merge (squash) February 13, 2026 14:33
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 10 out of 10 changed files in this pull request and generated no new comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@rlve rlve merged commit aea0ac4 into master Feb 13, 2026
34 of 35 checks passed
@rlve rlve deleted the test-mix-5 branch February 13, 2026 15:31
@github-project-automation github-project-automation Bot moved this from In Progress to done in nim-libp2p Feb 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

mix: avoid reading from files in MixProtocol.new

6 participants