gopkg.in/dedis/onet.v2@v2.0.0-20181115163211-c8f3724038a7/simul/platform/mininet_test.go (about) 1 package platform 2 3 import ( 4 "testing" 5 6 "strconv" 7 8 "fmt" 9 10 "io/ioutil" 11 12 "path/filepath" 13 14 "os" 15 "path" 16 17 "github.com/stretchr/testify/assert" 18 "gopkg.in/dedis/onet.v2/log" 19 ) 20 21 func TestMiniNet_getHostList(t *testing.T) { 22 testVector := []struct { 23 ServersInFile int // In 'server_list' file 24 Servers int 25 Hosts int 26 HostsSlice []string 27 List string 28 }{ 29 {1, 1, 1, 30 []string{"10.1.0.2"}, 31 "cosi Ed25519 0 0\n0 false false false\n\nlocal1 10.1.0.0/16 1\n"}, 32 {3, 1, 1, 33 []string{"10.1.0.2"}, 34 "cosi Ed25519 0 0\n0 false false false\n\nlocal1 10.1.0.0/16 1\n"}, 35 {1, 1, 2, 36 []string{"10.1.0.2", "10.1.0.3"}, 37 "cosi Ed25519 0 0\n0 false false false\n\nlocal1 10.1.0.0/16 2\n"}, 38 {2, 2, 1, 39 []string{"10.1.0.2"}, 40 "cosi Ed25519 0 0\n0 false false false\n\nlocal1 10.1.0.0/16 1\n"}, 41 {3, 2, 1, 42 []string{"10.1.0.2"}, 43 "cosi Ed25519 0 0\n0 false false false\n\nlocal1 10.1.0.0/16 1\n"}, 44 {2, 2, 2, 45 []string{"10.1.0.2", "10.2.0.2"}, 46 "cosi Ed25519 0 0\n0 false false false\n\nlocal1 10.1.0.0/16 1\nlocal2 10.2.0.0/16 1\n"}, 47 {2, 2, 3, 48 []string{"10.1.0.2", "10.2.0.2", "10.1.0.3"}, 49 "cosi Ed25519 0 0\n0 false false false\n\nlocal1 10.1.0.0/16 2\nlocal2 10.2.0.0/16 1\n"}, 50 {3, 3, 1, 51 []string{"10.1.0.2"}, 52 "cosi Ed25519 0 0\n0 false false false\n\nlocal1 10.1.0.0/16 1\n"}, 53 {3, 3, 4, 54 []string{"10.1.0.2", "10.2.0.2", "10.3.0.2", 55 "10.1.0.3"}, 56 "cosi Ed25519 0 0\n0 false false false\n\nlocal1 10.1.0.0/16 2\nlocal2 10.2.0.0/16 1\nlocal3 10.3.0.0/16 1\n"}, 57 {4, 3, 4, 58 []string{"10.1.0.2", "10.2.0.2", "10.3.0.2", 59 "10.1.0.3"}, 60 "cosi Ed25519 0 0\n0 false false false\n\nlocal1 10.1.0.0/16 2\nlocal2 10.2.0.0/16 1\nlocal3 10.3.0.0/16 1\n"}, 61 } 62 for _, tv := range testVector { 63 mn := &MiniNet{Simulation: "cosi", Suite: "Ed25519"} 64 for i := 1; i <= tv.ServersInFile; i++ { 65 mn.HostIPs = append(mn.HostIPs, fmt.Sprintf("local%d", i)) 66 } 67 68 rc := makeRunConfig(tv.Servers, tv.Hosts) 69 h, l, err := mn.getHostList(rc) 70 log.ErrFatal(err) 71 errStr := fmt.Sprintf("ServersInFile: %d - Servers: %d - Hosts: %d", 72 tv.ServersInFile, tv.Servers, tv.Hosts) 73 assert.Equal(t, tv.HostsSlice, h, errStr) 74 assert.Equal(t, tv.List, l, errStr) 75 } 76 } 77 78 func TestMiniNet_getHostList2(t *testing.T) { 79 mn := &MiniNet{HostIPs: []string{"local1"}} 80 h, _, err := mn.getHostList(makeRunConfig(1, 256)) 81 log.ErrFatal(err) 82 assert.Equal(t, "10.1.0.254", h[252]) 83 assert.Equal(t, "10.1.0.255", h[253]) 84 assert.Equal(t, "10.1.1.0", h[254]) 85 assert.Equal(t, "10.1.1.1", h[255]) 86 } 87 88 func TestMiniNet_parseServers(t *testing.T) { 89 tmpfile, err := ioutil.TempFile("", "server_list") 90 log.ErrFatal(err) 91 tmpfile.WriteString("192.168.0.1\n") 92 tmpfile.WriteString("192.168.0.2\n") 93 tmpfile.Close() 94 serverListFileName := path.Join(filepath.Dir(tmpfile.Name()), "server_list") 95 os.Rename(tmpfile.Name(), serverListFileName) 96 m := MiniNet{wd: filepath.Dir(tmpfile.Name())} 97 err = m.parseServers() 98 log.ErrFatal(err) 99 assert.Equal(t, 2, len(m.HostIPs)) 100 log.ErrFatal(os.Remove(serverListFileName)) 101 } 102 103 func makeRunConfig(servers, hosts int) *RunConfig { 104 return &RunConfig{fields: map[string]string{ 105 "servers": strconv.Itoa(servers), 106 "hosts": strconv.Itoa(hosts), 107 }} 108 }