|
@@ -1,9 +1,12 @@
|
|
package docker
|
|
package docker
|
|
|
|
|
|
import (
|
|
import (
|
|
|
|
+ "bufio"
|
|
"fmt"
|
|
"fmt"
|
|
"io"
|
|
"io"
|
|
"io/ioutil"
|
|
"io/ioutil"
|
|
|
|
+ "math/rand"
|
|
|
|
+ "os"
|
|
"sort"
|
|
"sort"
|
|
"strings"
|
|
"strings"
|
|
"testing"
|
|
"testing"
|
|
@@ -561,6 +564,58 @@ func TestEnv(t *testing.T) {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+func grepFile(t *testing.T, path string, pattern string) {
|
|
|
|
+ f, err := os.Open(path)
|
|
|
|
+ if err != nil {
|
|
|
|
+ t.Fatal(err)
|
|
|
|
+ }
|
|
|
|
+ defer f.Close()
|
|
|
|
+ r := bufio.NewReader(f)
|
|
|
|
+ var (
|
|
|
|
+ line string
|
|
|
|
+ )
|
|
|
|
+ err = nil
|
|
|
|
+ for err == nil {
|
|
|
|
+ line, err = r.ReadString('\n')
|
|
|
|
+ if strings.Contains(line, pattern) == true {
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ t.Fatalf("grepFile: pattern \"%s\" not found in \"%s\"", pattern, path)
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func TestLXCConfig(t *testing.T) {
|
|
|
|
+ docker, err := newTestDocker()
|
|
|
|
+ if err != nil {
|
|
|
|
+ t.Fatal(err)
|
|
|
|
+ }
|
|
|
|
+ // Ram is allocated randomly for testing
|
|
|
|
+ rand.Seed(time.Now().UTC().UnixNano())
|
|
|
|
+ ramMin := 33554432
|
|
|
|
+ ramMax := 536870912
|
|
|
|
+ ram := ramMin + rand.Intn(ramMax-ramMin)
|
|
|
|
+ container, err := docker.Create(
|
|
|
|
+ "config_test",
|
|
|
|
+ "/bin/true",
|
|
|
|
+ []string{},
|
|
|
|
+ []string{testLayerPath},
|
|
|
|
+ &Config{
|
|
|
|
+ Hostname: "foobar",
|
|
|
|
+ Ram: int64(ram),
|
|
|
|
+ },
|
|
|
|
+ )
|
|
|
|
+ if err != nil {
|
|
|
|
+ t.Fatal(err)
|
|
|
|
+ }
|
|
|
|
+ defer docker.Destroy(container)
|
|
|
|
+ container.generateLXCConfig()
|
|
|
|
+ grepFile(t, container.lxcConfigPath, "lxc.utsname = foobar")
|
|
|
|
+ grepFile(t, container.lxcConfigPath,
|
|
|
|
+ fmt.Sprintf("lxc.cgroup.memory.limit_in_bytes = %d", ram))
|
|
|
|
+ grepFile(t, container.lxcConfigPath,
|
|
|
|
+ fmt.Sprintf("lxc.cgroup.memory.memsw.limit_in_bytes = %d", ram*2))
|
|
|
|
+}
|
|
|
|
+
|
|
func BenchmarkRunSequencial(b *testing.B) {
|
|
func BenchmarkRunSequencial(b *testing.B) {
|
|
docker, err := newTestDocker()
|
|
docker, err := newTestDocker()
|
|
if err != nil {
|
|
if err != nil {
|