2 * Copyright (C) 2017-2018 "IoT.bzh"
3 * Author Clément Bénier <clement.benier@iot.bzh>
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
26 common "gerrit.automotivelinux.org/gerrit/src/xds/xds-common.git/golib"
27 "gerrit.automotivelinux.org/gerrit/src/xds/xds-server/lib/xsapiv1"
31 var HTTPCli *common.HTTPClient
35 func initEnv(launchProcess bool) {
37 cmd := exec.Command("killall", "-9", "xds-server")
38 if err := cmd.Start(); err != nil {
43 rootTestLog := "/tmp/xds-server-test"
44 if err := os.Setenv(envRootCfgDir, rootTestLog); err != nil {
47 sdkDir = rootTestLog + "/sdks/"
48 if err := os.Setenv(envXdtSdk, sdkDir); err != nil {
51 if err := os.Setenv(envXdsServerWorkspaceDir, rootTestLog); err != nil {
54 if err := os.Setenv(envXdsServerRootCfgDir, rootTestLog); err != nil {
57 if err := os.Setenv("XDS_LOG_SILLY", "1"); err != nil {
60 os.RemoveAll(rootTestLog)
61 os.MkdirAll(rootTestLog, 0755)
62 logDir = rootTestLog + "/logs/"
63 os.MkdirAll(logDir, 0755)
64 os.MkdirAll(sdkDir, 0755)
67 func launchXdsServer(proc **os.Process) *os.File {
68 logFile := logDir + logFileXdsServer
69 file, err := os.OpenFile(logFile, os.O_CREATE|os.O_WRONLY, 0644)
73 tmpProc, err := os.StartProcess(argsProcess[0], argsProcess, &os.ProcAttr{
74 Files: []*os.File{os.Stdin, file, file},
83 func getHTTPClient(lvl int) (*common.HTTPClient, *os.File) {
84 logFile := logDir + logFileClient
85 file, err := os.OpenFile(logFile, os.O_CREATE|os.O_WRONLY, 0644)
89 conf := common.HTTPClientConfig{
91 HeaderClientKeyName: "Xds-Sid",
94 LogPrefix: "XDSSERVERTEST: ",
97 cli, err := common.HTTPNewClient(prefixURL, conf)
101 log.Printf("HTTP session ID : %v", cli.GetClientID())
102 var ver xsapiv1.Version
103 err = cli.Get("/version", &ver)
110 func TestMain(m *testing.M) {
111 launchProcess := true
112 log.Printf("TestMain: launchProcess is %v", launchProcess)
113 initEnv(launchProcess)
116 var fileXdsServer *os.File
118 fileXdsServer = launchXdsServer(&proc)
119 go func(p *os.Process) {
120 if status, err := p.Wait(); err != nil {
121 log.Fatalf("status=%v\n err=%v\n", status, err)
125 defer fileXdsServer.Close()
127 time.Sleep(1 * time.Second)
129 lvl := common.HTTPLogLevelDebug
130 var fileHTTPClient *os.File
131 HTTPCli, fileHTTPClient = getHTTPClient(lvl)
132 defer fileHTTPClient.Close()
134 log.Printf("HTTPCli id is %v", HTTPCli.GetClientID())
137 log.Fatal("HTTPCLi is nil")