2015-09-01 21:56:42 +00:00
|
|
|
package driver
|
|
|
|
|
|
|
|
import (
|
|
|
|
"log"
|
|
|
|
"os"
|
2015-09-25 23:49:14 +00:00
|
|
|
"path/filepath"
|
2015-09-26 22:37:48 +00:00
|
|
|
"reflect"
|
2015-09-24 07:17:33 +00:00
|
|
|
"testing"
|
2015-09-08 19:43:02 +00:00
|
|
|
|
2015-09-25 23:49:14 +00:00
|
|
|
"github.com/hashicorp/nomad/client/allocdir"
|
2015-09-08 19:43:02 +00:00
|
|
|
"github.com/hashicorp/nomad/client/config"
|
2015-09-24 07:17:33 +00:00
|
|
|
"github.com/hashicorp/nomad/nomad/structs"
|
2015-09-01 21:56:42 +00:00
|
|
|
)
|
|
|
|
|
2015-09-24 07:59:57 +00:00
|
|
|
var basicResources = &structs.Resources{
|
|
|
|
CPU: 250,
|
|
|
|
MemoryMB: 256,
|
|
|
|
Networks: []*structs.NetworkResource{
|
|
|
|
&structs.NetworkResource{
|
2015-11-13 05:46:59 +00:00
|
|
|
IP: "0.0.0.0",
|
2015-11-15 08:37:00 +00:00
|
|
|
ReservedPorts: []structs.Port{{"main", 12345}},
|
|
|
|
DynamicPorts: []structs.Port{{"HTTP", 0}},
|
2015-09-24 07:59:57 +00:00
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
2015-09-01 21:56:42 +00:00
|
|
|
func testLogger() *log.Logger {
|
|
|
|
return log.New(os.Stderr, "", log.LstdFlags)
|
|
|
|
}
|
2015-09-08 19:43:02 +00:00
|
|
|
|
|
|
|
func testConfig() *config.Config {
|
2015-09-25 23:49:14 +00:00
|
|
|
conf := &config.Config{}
|
|
|
|
conf.StateDir = os.TempDir()
|
|
|
|
conf.AllocDir = os.TempDir()
|
|
|
|
return conf
|
2015-09-08 19:43:02 +00:00
|
|
|
}
|
2015-09-10 01:38:52 +00:00
|
|
|
|
2015-09-25 23:49:14 +00:00
|
|
|
func testDriverContext(task string) *DriverContext {
|
2015-09-10 01:38:52 +00:00
|
|
|
cfg := testConfig()
|
2015-09-25 23:49:14 +00:00
|
|
|
return NewDriverContext(task, cfg, cfg.Node, testLogger())
|
|
|
|
}
|
|
|
|
|
|
|
|
func testDriverExecContext(task *structs.Task, driverCtx *DriverContext) *ExecContext {
|
|
|
|
allocDir := allocdir.NewAllocDir(filepath.Join(driverCtx.config.AllocDir, structs.GenerateUUID()))
|
|
|
|
allocDir.Build([]*structs.Task{task})
|
2015-11-06 02:31:39 +00:00
|
|
|
ctx := NewExecContext(allocDir, "dummyAllocId")
|
2015-09-10 01:38:52 +00:00
|
|
|
return ctx
|
|
|
|
}
|
2015-09-24 07:17:33 +00:00
|
|
|
|
2015-09-26 22:37:48 +00:00
|
|
|
func TestDriver_TaskEnvironmentVariables(t *testing.T) {
|
2015-09-24 07:17:33 +00:00
|
|
|
ctx := &ExecContext{}
|
|
|
|
task := &structs.Task{
|
2015-10-01 11:22:26 +00:00
|
|
|
Env: map[string]string{
|
|
|
|
"HELLO": "world",
|
|
|
|
"lorem": "ipsum",
|
|
|
|
},
|
2015-09-24 07:17:33 +00:00
|
|
|
Resources: &structs.Resources{
|
|
|
|
CPU: 1000,
|
|
|
|
MemoryMB: 500,
|
|
|
|
Networks: []*structs.NetworkResource{
|
|
|
|
&structs.NetworkResource{
|
|
|
|
IP: "1.2.3.4",
|
2015-11-15 08:37:00 +00:00
|
|
|
ReservedPorts: []structs.Port{{"one", 80}, {"two", 443}, {"three", 8080}, {"four", 12345}},
|
|
|
|
DynamicPorts: []structs.Port{{"admin", 8081}, {"web", 8086}},
|
2015-09-24 07:17:33 +00:00
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
Meta: map[string]string{
|
|
|
|
"chocolate": "cake",
|
|
|
|
"strawberry": "icecream",
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
2015-09-26 22:37:48 +00:00
|
|
|
env := TaskEnvironmentVariables(ctx, task)
|
|
|
|
exp := map[string]string{
|
|
|
|
"NOMAD_CPU_LIMIT": "1000",
|
|
|
|
"NOMAD_MEMORY_LIMIT": "500",
|
|
|
|
"NOMAD_IP": "1.2.3.4",
|
|
|
|
"NOMAD_PORT_admin": "8080",
|
|
|
|
"NOMAD_PORT_5000": "12345",
|
|
|
|
"NOMAD_META_CHOCOLATE": "cake",
|
|
|
|
"NOMAD_META_STRAWBERRY": "icecream",
|
2015-10-01 11:22:26 +00:00
|
|
|
"HELLO": "world",
|
2015-10-03 00:49:18 +00:00
|
|
|
"lorem": "ipsum",
|
2015-09-24 07:17:33 +00:00
|
|
|
}
|
|
|
|
|
2015-09-27 00:56:14 +00:00
|
|
|
act := env.Map()
|
2015-09-26 22:37:48 +00:00
|
|
|
if !reflect.DeepEqual(act, exp) {
|
2015-09-27 00:56:14 +00:00
|
|
|
t.Fatalf("TaskEnvironmentVariables(%#v, %#v) returned %#v; want %#v", ctx, task, act, exp)
|
2015-09-25 23:49:26 +00:00
|
|
|
}
|
2015-09-24 07:17:33 +00:00
|
|
|
}
|