@@ -28,6 +28,50 @@ type listenerSpec struct {
2828 sequence []utils.SequenceStep // nil for platform-only listeners
2929}
3030
31+ func resolveListeners (cli utils.CLI , tm utils.TranscriptMap , baseDir string ) ([]listenerSpec , error ) {
32+ if cli .Inventory == "" {
33+ fd , err := fakedevices .InitGeneric (cli .Platform , tm , baseDir )
34+ if err != nil {
35+ return nil , err
36+ }
37+ var specs []listenerSpec
38+ for port := cli .StartingPort ; port < cli .StartingPort + cli .Listeners ; port ++ {
39+ specs = append (specs , listenerSpec {fd , port , nil })
40+ }
41+ return specs , nil
42+ }
43+
44+ inv , err := utils .LoadInventory (cli .Inventory )
45+ if err != nil {
46+ return nil , err
47+ }
48+
49+ var specs []listenerSpec
50+ port := cli .StartingPort
51+ for _ , entry := range inv .Devices {
52+ if entry .Scenario != "" {
53+ fd , seq , err := fakedevices .InitScenario (entry .Scenario , tm , baseDir )
54+ if err != nil {
55+ return nil , err
56+ }
57+ for i := 0 ; i < entry .Count ; i ++ {
58+ specs = append (specs , listenerSpec {fd , port , seq })
59+ port ++
60+ }
61+ } else {
62+ fd , err := fakedevices .InitGeneric (entry .Platform , tm , baseDir )
63+ if err != nil {
64+ return nil , err
65+ }
66+ for i := 0 ; i < entry .Count ; i ++ {
67+ specs = append (specs , listenerSpec {fd , port , nil })
68+ port ++
69+ }
70+ }
71+ }
72+ return specs , nil
73+ }
74+
3175func run (ctx context.Context , cli utils.CLI ) error {
3276 myTranscriptMap , err := utils .LoadTranscriptMap (cli .TranscriptMap )
3377 if err != nil {
@@ -39,43 +83,9 @@ func run(ctx context.Context, cli utils.CLI) error {
3983 return err
4084 }
4185
42- var specs []listenerSpec
43-
44- if cli .Inventory != "" {
45- inv , err := utils .LoadInventory (cli .Inventory )
46- if err != nil {
47- return err
48- }
49- port := cli .StartingPort
50- for _ , entry := range inv .Devices {
51- if entry .Scenario != "" {
52- fd , seq , err := fakedevices .InitScenario (entry .Scenario , myTranscriptMap , baseDir )
53- if err != nil {
54- return err
55- }
56- for i := 0 ; i < entry .Count ; i ++ {
57- specs = append (specs , listenerSpec {fd , port , seq })
58- port ++
59- }
60- } else {
61- fd , err := fakedevices .InitGeneric (entry .Platform , myTranscriptMap , baseDir )
62- if err != nil {
63- return err
64- }
65- for i := 0 ; i < entry .Count ; i ++ {
66- specs = append (specs , listenerSpec {fd , port , nil })
67- port ++
68- }
69- }
70- }
71- } else {
72- fd , err := fakedevices .InitGeneric (cli .Platform , myTranscriptMap , baseDir )
73- if err != nil {
74- return err
75- }
76- for port := cli .StartingPort ; port < cli .StartingPort + cli .Listeners ; port ++ {
77- specs = append (specs , listenerSpec {fd , port , nil })
78- }
86+ specs , err := resolveListeners (cli , myTranscriptMap , baseDir )
87+ if err != nil {
88+ return err
7989 }
8090
8191 var wg sync.WaitGroup
0 commit comments