mirror of
				https://github.com/moby/moby.git
				synced 2022-11-09 12:21:53 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			125 lines
		
	
	
	
		
			3.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
	
		
			3.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package runconfig
 | 
						|
 | 
						|
import (
 | 
						|
	"testing"
 | 
						|
 | 
						|
	"github.com/docker/docker/pkg/nat"
 | 
						|
	"github.com/docker/docker/pkg/stringutils"
 | 
						|
)
 | 
						|
 | 
						|
// Just to make life easier
 | 
						|
func newPortNoError(proto, port string) nat.Port {
 | 
						|
	p, _ := nat.NewPort(proto, port)
 | 
						|
	return p
 | 
						|
}
 | 
						|
 | 
						|
func TestCompare(t *testing.T) {
 | 
						|
	ports1 := make(nat.PortSet)
 | 
						|
	ports1[newPortNoError("tcp", "1111")] = struct{}{}
 | 
						|
	ports1[newPortNoError("tcp", "2222")] = struct{}{}
 | 
						|
	ports2 := make(nat.PortSet)
 | 
						|
	ports2[newPortNoError("tcp", "3333")] = struct{}{}
 | 
						|
	ports2[newPortNoError("tcp", "4444")] = struct{}{}
 | 
						|
	ports3 := make(nat.PortSet)
 | 
						|
	ports3[newPortNoError("tcp", "1111")] = struct{}{}
 | 
						|
	ports3[newPortNoError("tcp", "2222")] = struct{}{}
 | 
						|
	ports3[newPortNoError("tcp", "5555")] = struct{}{}
 | 
						|
	volumes1 := make(map[string]struct{})
 | 
						|
	volumes1["/test1"] = struct{}{}
 | 
						|
	volumes2 := make(map[string]struct{})
 | 
						|
	volumes2["/test2"] = struct{}{}
 | 
						|
	volumes3 := make(map[string]struct{})
 | 
						|
	volumes3["/test1"] = struct{}{}
 | 
						|
	volumes3["/test3"] = struct{}{}
 | 
						|
	envs1 := []string{"ENV1=value1", "ENV2=value2"}
 | 
						|
	envs2 := []string{"ENV1=value1", "ENV3=value3"}
 | 
						|
	entrypoint1 := stringutils.NewStrSlice("/bin/sh", "-c")
 | 
						|
	entrypoint2 := stringutils.NewStrSlice("/bin/sh", "-d")
 | 
						|
	entrypoint3 := stringutils.NewStrSlice("/bin/sh", "-c", "echo")
 | 
						|
	cmd1 := stringutils.NewStrSlice("/bin/sh", "-c")
 | 
						|
	cmd2 := stringutils.NewStrSlice("/bin/sh", "-d")
 | 
						|
	cmd3 := stringutils.NewStrSlice("/bin/sh", "-c", "echo")
 | 
						|
	labels1 := map[string]string{"LABEL1": "value1", "LABEL2": "value2"}
 | 
						|
	labels2 := map[string]string{"LABEL1": "value1", "LABEL2": "value3"}
 | 
						|
	labels3 := map[string]string{"LABEL1": "value1", "LABEL2": "value2", "LABEL3": "value3"}
 | 
						|
 | 
						|
	sameConfigs := map[*Config]*Config{
 | 
						|
		// Empty config
 | 
						|
		&Config{}: {},
 | 
						|
		// Does not compare hostname, domainname & image
 | 
						|
		&Config{
 | 
						|
			Hostname:   "host1",
 | 
						|
			Domainname: "domain1",
 | 
						|
			Image:      "image1",
 | 
						|
			User:       "user",
 | 
						|
		}: {
 | 
						|
			Hostname:   "host2",
 | 
						|
			Domainname: "domain2",
 | 
						|
			Image:      "image2",
 | 
						|
			User:       "user",
 | 
						|
		},
 | 
						|
		// only OpenStdin
 | 
						|
		&Config{OpenStdin: false}: {OpenStdin: false},
 | 
						|
		// only env
 | 
						|
		&Config{Env: envs1}: {Env: envs1},
 | 
						|
		// only cmd
 | 
						|
		&Config{Cmd: cmd1}: {Cmd: cmd1},
 | 
						|
		// only labels
 | 
						|
		&Config{Labels: labels1}: {Labels: labels1},
 | 
						|
		// only exposedPorts
 | 
						|
		&Config{ExposedPorts: ports1}: {ExposedPorts: ports1},
 | 
						|
		// only entrypoints
 | 
						|
		&Config{Entrypoint: entrypoint1}: {Entrypoint: entrypoint1},
 | 
						|
		// only volumes
 | 
						|
		&Config{Volumes: volumes1}: {Volumes: volumes1},
 | 
						|
	}
 | 
						|
	differentConfigs := map[*Config]*Config{
 | 
						|
		nil: nil,
 | 
						|
		&Config{
 | 
						|
			Hostname:   "host1",
 | 
						|
			Domainname: "domain1",
 | 
						|
			Image:      "image1",
 | 
						|
			User:       "user1",
 | 
						|
		}: {
 | 
						|
			Hostname:   "host1",
 | 
						|
			Domainname: "domain1",
 | 
						|
			Image:      "image1",
 | 
						|
			User:       "user2",
 | 
						|
		},
 | 
						|
		// only OpenStdin
 | 
						|
		&Config{OpenStdin: false}: {OpenStdin: true},
 | 
						|
		&Config{OpenStdin: true}:  {OpenStdin: false},
 | 
						|
		// only env
 | 
						|
		&Config{Env: envs1}: {Env: envs2},
 | 
						|
		// only cmd
 | 
						|
		&Config{Cmd: cmd1}: {Cmd: cmd2},
 | 
						|
		// not the same number of parts
 | 
						|
		&Config{Cmd: cmd1}: {Cmd: cmd3},
 | 
						|
		// only labels
 | 
						|
		&Config{Labels: labels1}: {Labels: labels2},
 | 
						|
		// not the same number of labels
 | 
						|
		&Config{Labels: labels1}: {Labels: labels3},
 | 
						|
		// only exposedPorts
 | 
						|
		&Config{ExposedPorts: ports1}: {ExposedPorts: ports2},
 | 
						|
		// not the same number of ports
 | 
						|
		&Config{ExposedPorts: ports1}: {ExposedPorts: ports3},
 | 
						|
		// only entrypoints
 | 
						|
		&Config{Entrypoint: entrypoint1}: {Entrypoint: entrypoint2},
 | 
						|
		// not the same number of parts
 | 
						|
		&Config{Entrypoint: entrypoint1}: {Entrypoint: entrypoint3},
 | 
						|
		// only volumes
 | 
						|
		&Config{Volumes: volumes1}: {Volumes: volumes2},
 | 
						|
		// not the same number of labels
 | 
						|
		&Config{Volumes: volumes1}: {Volumes: volumes3},
 | 
						|
	}
 | 
						|
	for config1, config2 := range sameConfigs {
 | 
						|
		if !Compare(config1, config2) {
 | 
						|
			t.Fatalf("Compare should be true for [%v] and [%v]", config1, config2)
 | 
						|
		}
 | 
						|
	}
 | 
						|
	for config1, config2 := range differentConfigs {
 | 
						|
		if Compare(config1, config2) {
 | 
						|
			t.Fatalf("Compare should be false for [%v] and [%v]", config1, config2)
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |