TestSubnetRouterMultiNetwork is an evolution of the subnet router test. This test will set up multiple docker networks and use two isolated tailscale clients and a service available in one of the networks to validate that a subnet router is working as expected.
(t *testing.T)
| 1840 | // clients and a service available in one of the networks to validate that a |
| 1841 | // subnet router is working as expected. |
| 1842 | func TestSubnetRouterMultiNetwork(t *testing.T) { |
| 1843 | IntegrationSkip(t) |
| 1844 | |
| 1845 | spec := ScenarioSpec{ |
| 1846 | NodesPerUser: 1, |
| 1847 | Users: []string{"user1", "user2"}, |
| 1848 | Networks: map[string]NetworkSpec{ |
| 1849 | "usernet1": {Users: []string{"user1"}}, |
| 1850 | "usernet2": {Users: []string{"user2"}}, |
| 1851 | }, |
| 1852 | ExtraService: map[string][]extraServiceFunc{ |
| 1853 | "usernet1": {Webservice}, |
| 1854 | }, |
| 1855 | } |
| 1856 | |
| 1857 | scenario, err := NewScenario(spec) |
| 1858 | |
| 1859 | require.NoErrorf(t, err, "failed to create scenario: %s", err) |
| 1860 | defer scenario.ShutdownAssertNoPanics(t) |
| 1861 | |
| 1862 | err = scenario.CreateHeadscaleEnv([]tsic.Option{tsic.WithAcceptRoutes()}, |
| 1863 | hsic.WithTestName("rt-multinet"), |
| 1864 | ) |
| 1865 | requireNoErrHeadscaleEnv(t, err) |
| 1866 | |
| 1867 | allClients, err := scenario.ListTailscaleClients() |
| 1868 | requireNoErrListClients(t, err) |
| 1869 | |
| 1870 | err = scenario.WaitForTailscaleSync() |
| 1871 | requireNoErrSync(t, err) |
| 1872 | |
| 1873 | headscale, err := scenario.Headscale() |
| 1874 | requireNoErrGetHeadscale(t, err) |
| 1875 | assert.NotNil(t, headscale) |
| 1876 | |
| 1877 | pref, err := scenario.SubnetOfNetwork("usernet1") |
| 1878 | require.NoError(t, err) |
| 1879 | |
| 1880 | var user1c, user2c TailscaleClient |
| 1881 | |
| 1882 | for _, c := range allClients { |
| 1883 | s := c.MustStatus() |
| 1884 | if s.User[s.Self.UserID].LoginName == "user1@test.no" { |
| 1885 | user1c = c |
| 1886 | } |
| 1887 | |
| 1888 | if s.User[s.Self.UserID].LoginName == "user2@test.no" { |
| 1889 | user2c = c |
| 1890 | } |
| 1891 | } |
| 1892 | |
| 1893 | require.NotNil(t, user1c) |
| 1894 | require.NotNil(t, user2c) |
| 1895 | |
| 1896 | // Advertise the route for the dockersubnet of user1 |
| 1897 | command := []string{ |
| 1898 | "tailscale", |
| 1899 | "set", |
nothing calls this directly
no test coverage detected