summaryrefslogtreecommitdiff
path: root/validation/test/P2P_throughput/config.py
blob: 84d04636cdd936bc0e404c84855d39a8ae5eb6fc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
{
    # Parent configuration file, which will be overriden by the current
    # configuration - The path of the parent is relative to the current
    # configuration file
    "parent":None,
    # True|False
    # If True, the plugs are restarted before each serie of measurements
    # If False, the plugs are not restarted before a serie of measurements
    "restart_plugs":False,
    # If True and if the 2 plugs are MSTAR, the 'vs_get_ce_stats' MME is sent
    # before and after each serie of measurements
    # If False or if one of the 2 plugs is not MSTAR, no MME is sent
    "get_CE_stats":True,
    # CE stats which difference, before and after each serie of measurements,
    # is displayed in the report
    "displayed_CE_stats":["BLE",
                          "Restart BER",
                          "Restart PB error rate",
                          "Restart peer request",
                          "Restart tone map update",
                          "Restart ber margin update"],
    # True|False
    # If True, the measurements are reset, made and then the report is generated
    # If False, the report is generated from the previous measurements
    "make_measurements":True,
    "attenuation":{
        "values":numpy.arange(30, 100, 5).tolist(),
        "duration_s":20,
        # ["a_b_uni"|"b_a_uni"|"bi"]
        # see iperf.measurement_specs() for the meaning of the values
        "curves":["a_b_uni", "b_a_uni", "bi"]},
    "SNR":{
        "values":numpy.arange(35, -10, -5).tolist(),
        "duration_s":20,
        # ["a_b_uni"|"b_a_uni"|"bi"]
        # see iperf.measurement_specs() for the meaning of the values
        "curves":["a_b_uni", "b_a_uni", "bi"]},
    "SJR":{
        "values":numpy.arange(10, -45, -5).tolist(),
        "duration_s":20,
        # ["a_b_uni"]
        # see iperf.measurement_specs() for the meaning of the values
        "curves":["a_b_uni"]},
    "frame_size":{
        # [(frame_size, max_throughput_M)]
        # The frame size and the max throughput includes the Ethernet,
        # IP and TCP/UDP headers
        "values":[
            (68, 18),
            (128, 34),
            (256, 65),
            (512, 105),
            (768, 125),
            (1024, 180),
            (1280, 180),
            (1514, 180),
            (1515, 180),
            (1550, 180),
            (1600, 180),
            (1700, 180),
            (2000, 180)
            ],
        "duration_s":20,
        # ["a_b_uni"|"b_a_uni"|"bi"]
        # see iperf.measurement_specs() for the meaning of the values
        "curves":["a_b_uni", "b_a_uni", "bi"]
        },
    "dynamic_jammer":{
        # Must be ["time"]
        "values":["time"],
        "duration_s":15,
        # ["a_b_uni"|"b_a_uni"|"bi"]
        # see iperf.measurement_specs() for the meaning of the values
        "curves":["a_b_uni"]},
    # [("UDP"|"TCP",
    #  "attenuation"|"SNR"|"frame_size"|"SJR"|"dynamic_jammer",
    #  (jammer frequency(MHz), AM form ("SINusoid"|"SQUare"),
    #   AM frequency (kHz), AM depth(%)) for "SJR",
    #  (SJR (dBm), sweep start frequency (MHz), sweep stop frequency (MHz),
    #   sweep time (seconds)) for "dynamic_jammer"
    #  and None otherwise)]
    "fixtures":[
       ("UDP", "attenuation", None),
       ("TCP", "attenuation", None),
       ("UDP", "SNR", None),
       ("TCP", "SNR", None),
       ("UDP", "SJR", (13.5, None)),
       ("UDP", "SJR", (18.5, None)),
       ("UDP", "SJR", (23.5, None)),
       ("UDP", "SJR", (4, ("SINusoid", 1, 80))),
       ("UDP", "SJR", (15, ("SINusoid", 1, 80))),
       ("UDP", "SJR", (26, ("SINusoid", 1, 80))),
       ("UDP", "SJR", (27.345, ("SINusoid", 1, 80))),
       ("UDP", "frame_size", None),
       ("UDP", "dynamic_jammer", (5, 2, 30, 60)),
       ("UDP", "dynamic_jammer", (0, 2, 30, 60)),
       ("UDP", "dynamic_jammer", (-10, 2, 30, 60)),
       ("UDP", "dynamic_jammer", (-20, 2, 30, 60)),
       ("UDP", "dynamic_jammer", (-30, 2, 30, 60))
       ],
    # Duration after the channel modification during which we generate traffic
    # to let the CE converge
    "ce_sync_time_s":10,
    # Directory where the images and the report are generated
    # It is recommended to indicate in this parameter all the
    # elements identifying the test, including the software version and the name
    # of the chipset
    "reports_directory":"eoc-drv-2.0.13/SPC300",
    # Bandwidth of the useful signal
    # Typical values are:
    # - (2, 28) in AV
    # - (2, 35) in EoC-300
    # - (4, 70) in EoC-500
    "signal_band_mhz":(2, 35),
    # Peak Power Spectral Density
    # This value depends on the boards and must be carefully measured.
    # Typical values are given in the test report (see
    # the section 'PPSD measurement')
    "ppsd_dbm_per_hz":-48,
    # We want to reach a very low SJR, but the output power of the
    # waveform generator is limited. Therefore, we set the signal to
    # a low value, actually the lowest for which the throughput
    # would not be impacted without noise. This value should be deduced from
    # the results obtained in the 'attenuation' test. If the curve starts going
    # down at 55 dB and if the minimal attenuation of the bench is 38,
    # sjr_attenuator_attenuation_db must be set to a value lower than
    # (55 - 38) dB = 17 dB and greater than 0 dB, as long as these values are
    # compatible with the range of attenuation of the variable attenuator.
    "sjr_attenuator_attenuation_db":29,
    # Attenuation of each AMN
    # In AV, it must normally be set to 6
    # In EoC, no AMN should be used and it should normally be set to 0
    "amn_attenuation_db":0,
    # Signal attenuation on each side of the bench, to avoid any dazzling
    # between the plugs. A typical value is 10.
    "signal_attenuation_db":10,
    # Attenuation of the T
    # If there is a T, it must normally be set to 6.
    # If there is no T, it must be set to 0.
    "t_attenuation_db":6,
    # Waveform attenuation at the output of the generator
    "waveform_attenuation_db":3,
    # (unidir, bidir) throughput targets for UDP tests
    # Typical values are:
    #  - (100, 85) in AV with an SPR310
    #  - (180, 95) for EoC-300 with an SPK300g
    #  - (300, 160) for EoC-500 with an MSK500
    "udp_throughputs_mbits_per_sec":(180, 95),
    # Configuration passed to the 'attenuator' module
    "attenuator":{
        "name":"att",
        "buttons":{1:1, 2:2, 3:4, 4:4, 5:10, 6:20, 7:40, 8:0},
        "user":"spidcom",
        "host":"tursan"
        },
    # Configuration passed to the 'waveform_generator' module
    "waveform_generator":{
        "name":"gbf",
        "user":"spidcom",
        "host":"tursan",
        "noise_band_mhz":(0, 50),
        "power_range_dbm":(-40, 24)
        },
    # Configuration passed to the 'power_strip' module
    "power_strip":{1:("192.168.0.10", "admin", "anel")},
    # Configuration passed to the 'spc300' module
    "spc300":{
        "eth_netmask":"192.168.5.",
        "plc_netmask":None,
        "plugs":
            {
            (1, 1, "master"):("100", None, None, "SPK300g-revE"),
            (1, 5, "slave"):("101", None, None, "SPK300g-revE")
            }
        },
    # Configuration passed to the 'non_spc300' module
    "non_spc300":{
        "plugs":
            {
            }
        },
    # Configuration passed to the 'iperf' module
    "iperf":{
        "host_a":{"non_plc_ip_address":"tursan",
                  "user":"spidcom",
                  "plc_ip_address":"192.168.5.254",
                  "plug_key":(1, 1, "master"),
                  "ftp_server_root":"/var/all_ftp"
                  },
        "host_b":{"non_plc_ip_address":"spidcom-lab1",
                  "user":"spidcom",
                  "plc_ip_address":"192.168.5.52",
                  "plug_key":(1, 5, "slave"),
                  "ftp_server_root":"/var/all_ftp"
                  }
        },
    "internal_conf":{},
    }