(t *testing.T)
| 154 | } |
| 155 | |
| 156 | func TestDERPMap(t *testing.T) { |
| 157 | t.Parallel() |
| 158 | |
| 159 | // Tailscale DERP map on 2023-11-20 for testing purposes. |
| 160 | tailscaleDERPMap, err := os.ReadFile("testdata/tailscale_derpmap.json") |
| 161 | require.NoError(t, err) |
| 162 | |
| 163 | derpMap := &tailcfg.DERPMap{} |
| 164 | err = json.Unmarshal(tailscaleDERPMap, derpMap) |
| 165 | require.NoError(t, err) |
| 166 | |
| 167 | // The tailscale DERPMap doesn't have HomeParams. |
| 168 | derpMap.HomeParams = &tailcfg.DERPHomeParams{ |
| 169 | RegionScore: map[int]float64{ |
| 170 | 1: 2, |
| 171 | 2: 3, |
| 172 | }, |
| 173 | } |
| 174 | |
| 175 | // Add a region and node that uses every single field. |
| 176 | derpMap.Regions[999] = &tailcfg.DERPRegion{ |
| 177 | RegionID: 999, |
| 178 | EmbeddedRelay: true, |
| 179 | RegionCode: "zzz", |
| 180 | RegionName: "Cool Region", |
| 181 | Avoid: true, |
| 182 | |
| 183 | Nodes: []*tailcfg.DERPNode{ |
| 184 | { |
| 185 | Name: "zzz1", |
| 186 | RegionID: 999, |
| 187 | HostName: "coolderp.com", |
| 188 | IPv4: "1.2.3.4", |
| 189 | IPv6: "2001:db8::1", |
| 190 | STUNPort: 1234, |
| 191 | STUNOnly: true, |
| 192 | DERPPort: 5678, |
| 193 | InsecureForTests: true, |
| 194 | ForceHTTP: true, |
| 195 | STUNTestIP: "5.6.7.8", |
| 196 | CanPort80: true, |
| 197 | }, |
| 198 | }, |
| 199 | } |
| 200 | |
| 201 | protoMap := tailnet.DERPMapToProto(derpMap) |
| 202 | require.NotNil(t, protoMap) |
| 203 | |
| 204 | derpMap2 := tailnet.DERPMapFromProto(protoMap) |
| 205 | require.NotNil(t, derpMap2) |
| 206 | |
| 207 | require.Equal(t, derpMap, derpMap2) |
| 208 | } |
nothing calls this directly
no test coverage detected