master
go 146 lines 2.98 KB
Raw
1 package config
2
3 import (
4 "encoding/json"
5 "testing"
6 "time"
7
8 "github.com/stretchr/testify/require"
9 )
10
11 func TestRouterParameters(t *testing.T) {
12 require := require.New(t)
13 sec := time.Second
14 min := time.Minute
15 r := Routing{
16 Type: NewOptionalString("custom"),
17 Routers: map[string]RouterParser{
18 "router-dht": {Router{
19 Type: RouterTypeDHT,
20 Parameters: DHTRouterParams{
21 Mode: "auto",
22 AcceleratedDHTClient: true,
23 PublicIPNetwork: false,
24 },
25 }},
26 "router-parallel": {
27 Router{
28 Type: RouterTypeParallel,
29 Parameters: ComposableRouterParams{
30 Routers: []ConfigRouter{
31 {
32 RouterName: "router-dht",
33 Timeout: Duration{10 * time.Second},
34 IgnoreErrors: true,
35 },
36 {
37 RouterName: "router-dht",
38 Timeout: Duration{10 * time.Second},
39 IgnoreErrors: false,
40 ExecuteAfter: &OptionalDuration{&sec},
41 },
42 },
43 Timeout: &OptionalDuration{&min},
44 },
45 },
46 },
47 "router-sequential": {
48 Router{
49 Type: RouterTypeSequential,
50 Parameters: ComposableRouterParams{
51 Routers: []ConfigRouter{
52 {
53 RouterName: "router-dht",
54 Timeout: Duration{10 * time.Second},
55 IgnoreErrors: true,
56 },
57 {
58 RouterName: "router-dht",
59 Timeout: Duration{10 * time.Second},
60 IgnoreErrors: false,
61 },
62 },
63 Timeout: &OptionalDuration{&min},
64 },
65 },
66 },
67 },
68 Methods: Methods{
69 MethodNameFindPeers: {
70 RouterName: "router-dht",
71 },
72 MethodNameFindProviders: {
73 RouterName: "router-dht",
74 },
75 MethodNameGetIPNS: {
76 RouterName: "router-sequential",
77 },
78 MethodNameProvide: {
79 RouterName: "router-parallel",
80 },
81 MethodNamePutIPNS: {
82 RouterName: "router-parallel",
83 },
84 },
85 }
86
87 out, err := json.Marshal(r)
88 require.NoError(err)
89
90 r2 := &Routing{}
91
92 err = json.Unmarshal(out, r2)
93 require.NoError(err)
94
95 require.Equal(5, len(r2.Methods))
96
97 dhtp := r2.Routers["router-dht"].Parameters
98 require.IsType(&DHTRouterParams{}, dhtp)
99
100 sp := r2.Routers["router-sequential"].Parameters
101 require.IsType(&ComposableRouterParams{}, sp)
102
103 pp := r2.Routers["router-parallel"].Parameters
104 require.IsType(&ComposableRouterParams{}, pp)
105 }
106
107 func TestMethods(t *testing.T) {
108 require := require.New(t)
109
110 methodsOK := Methods{
111 MethodNameFindPeers: {
112 RouterName: "router-wrong",
113 },
114 MethodNameFindProviders: {
115 RouterName: "router-wrong",
116 },
117 MethodNameGetIPNS: {
118 RouterName: "router-wrong",
119 },
120 MethodNameProvide: {
121 RouterName: "router-wrong",
122 },
123 MethodNamePutIPNS: {
124 RouterName: "router-wrong",
125 },
126 }
127
128 require.NoError(methodsOK.Check())
129
130 methodsMissing := Methods{
131 MethodNameFindPeers: {
132 RouterName: "router-wrong",
133 },
134 MethodNameGetIPNS: {
135 RouterName: "router-wrong",
136 },
137 MethodNameProvide: {
138 RouterName: "router-wrong",
139 },
140 MethodNamePutIPNS: {
141 RouterName: "router-wrong",
142 },
143 }
144
145 require.Error(methodsMissing.Check())
146 }