|
|
@@ -1,6 +1,7 @@
|
|
|
package dynamicrouting
|
|
|
|
|
|
import (
|
|
|
+ "encoding/json"
|
|
|
"os"
|
|
|
"os/exec"
|
|
|
"strings"
|
|
|
@@ -344,3 +345,57 @@ func TestBFDAndRIPAndRAdvManagement(t *testing.T) {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+func TestRIPAndOSPFInstanceJSONUnmarshal(t *testing.T) {
|
|
|
+ testCasesRIP := []struct {
|
|
|
+ jsonStr string
|
|
|
+ expectedVersion int
|
|
|
+ }{
|
|
|
+ {`{"name":"rip1","version":2}`, 2},
|
|
|
+ {`{"name":"rip1","version":"2"}`, 2},
|
|
|
+ {`{"name":"rip1","version":"rip2"}`, 2},
|
|
|
+ {`{"name":"rip1","version":"ripv2"}`, 2},
|
|
|
+ {`{"name":"ripng1","version":1}`, 1},
|
|
|
+ {`{"name":"ripng1","version":"1"}`, 1},
|
|
|
+ {`{"name":"ripng1","version":"ripng"}`, 1},
|
|
|
+ {`{"name":"ripng1","version":"ng"}`, 1},
|
|
|
+ {`{"name":"ripng1","version":"ipv6"}`, 1},
|
|
|
+ {`{"name":"rip_default"}`, 2},
|
|
|
+ }
|
|
|
+
|
|
|
+ for idx, tc := range testCasesRIP {
|
|
|
+ var inst RIPInstance
|
|
|
+ if err := json.Unmarshal([]byte(tc.jsonStr), &inst); err != nil {
|
|
|
+ t.Fatalf("Case %d failed to unmarshal: %v", idx, err)
|
|
|
+ }
|
|
|
+ if inst.Version != tc.expectedVersion {
|
|
|
+ t.Errorf("Case %d: expected version %d, got %d", idx, tc.expectedVersion, inst.Version)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ testCasesOSPF := []struct {
|
|
|
+ jsonStr string
|
|
|
+ expectedVersion int
|
|
|
+ }{
|
|
|
+ {`{"name":"ospf1","version":2}`, 2},
|
|
|
+ {`{"name":"ospf1","version":"2"}`, 2},
|
|
|
+ {`{"name":"ospf1","version":"ospfv2"}`, 2},
|
|
|
+ {`{"name":"ospf1","version":"v2"}`, 2},
|
|
|
+ {`{"name":"ospf3","version":3}`, 3},
|
|
|
+ {`{"name":"ospf3","version":"3"}`, 3},
|
|
|
+ {`{"name":"ospf3","version":"ospfv3"}`, 3},
|
|
|
+ {`{"name":"ospf3","version":"v3"}`, 3},
|
|
|
+ {`{"name":"ospf3","version":"ipv6"}`, 3},
|
|
|
+ {`{"name":"ospf_default"}`, 2},
|
|
|
+ }
|
|
|
+
|
|
|
+ for idx, tc := range testCasesOSPF {
|
|
|
+ var inst OSPFInstance
|
|
|
+ if err := json.Unmarshal([]byte(tc.jsonStr), &inst); err != nil {
|
|
|
+ t.Fatalf("OSPF Case %d failed to unmarshal: %v", idx, err)
|
|
|
+ }
|
|
|
+ if inst.Version != tc.expectedVersion {
|
|
|
+ t.Errorf("OSPF Case %d: expected version %d, got %d", idx, tc.expectedVersion, inst.Version)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|