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  }