+++ /dev/null
-/*
- * Copyright (c) 2019 AT&T Intellectual Property.
- * Copyright (c) 2018-2019 Nokia.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * This source code is part of the near-RT RIC (RAN Intelligent Controller)
- * platform project (RICP).
- *
- */
-
-package main
-
-import (
- "errors"
- "os"
- "os/exec"
- "path/filepath"
- "strconv"
- "testing"
- "time"
-
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/suite"
-)
-
-func TestGetMyIP(t *testing.T) {
- myIPAddress, err := getMyIP()
- assert.NotEqual(t, string(""), myIPAddress)
- assert.Nil(t, err)
-}
-
-func TestConfCreate(t *testing.T) {
- tmpfile := filepath.Join(os.TempDir(), "vestest."+strconv.Itoa(os.Getpid()))
- defer os.Remove(tmpfile) // clean up
- createConf(tmpfile, []byte("{}"))
- _, err := os.Stat(tmpfile)
- assert.Nil(t, err)
-}
-
-type VesmgrTestSuite struct {
- suite.Suite
- vesmgr VesMgr
-}
-
-func (suite *VesmgrTestSuite) SetupSuite() {
- suite.vesmgr = VesMgr{}
- suite.vesmgr.Init("0")
- logger.MdcAdd("Testvesmgr", "0.0.1")
- os.Setenv("VESMGR_HB_INTERVAL", "30s")
- os.Setenv("VESMGR_MEAS_INTERVAL", "30s")
- os.Setenv("VESMGR_PRICOLLECTOR_ADDR", "127.1.1.1")
- os.Setenv("VESMGR_PRICOLLECTOR_PORT", "8443")
- os.Setenv("VESMGR_PROMETHEUS_ADDR", "http://localhost:9090")
-}
-
-func (suite *VesmgrTestSuite) TestMainLoopSupervision() {
- go suite.vesmgr.servRequest()
- ch := make(chan string)
- suite.vesmgr.chSupervision <- ch
- reply := <-ch
- suite.Equal("OK", reply)
-}
-
-func (suite *VesmgrTestSuite) TestMainLoopVesagentError() {
- if os.Getenv("TEST_VESPA_EXIT") == "1" {
- // we're run in a new process, now make vesmgr main loop exit
- go suite.vesmgr.servRequest()
- suite.vesmgr.chVesagent <- errors.New("vesagent killed")
- // we should never actually end up to this sleep, since the runVesmgr should exit
- time.Sleep(3 * time.Second)
- return
- }
-
- // Run the vesmgr exit test as a separate process
- cmd := exec.Command(os.Args[0], "-test.run", "TestVesMgrSuite", "-testify.m", "TestMainLoopVesagentError")
- cmd.Env = append(os.Environ(), "TEST_VESPA_EXIT=1")
- cmd.Stdout = os.Stdout
- cmd.Stderr = os.Stderr
- err := cmd.Run()
- // check that vesmgr existed with status 1
-
- e, ok := err.(*exec.ExitError)
- suite.True(ok)
- suite.Equal("exit status 1", e.Error())
-}
-
-func (suite *VesmgrTestSuite) TestWaitSubscriptionLoopRespondsSupervisionAndBreaksWhenReceivedSubsNotif() {
- go func() {
- time.Sleep(time.Second)
- ch := make(chan string)
- suite.vesmgr.chSupervision <- ch
- suite.Equal("OK", <-ch)
- suite.vesmgr.chSupervision <- ch
- suite.Equal("OK", <-ch)
- suite.vesmgr.chXAppSubscriptions <- subscriptionNotification{true, nil, ""}
- }()
-
- suite.vesmgr.waitSubscriptionLoop()
-}
-
-func (suite *VesmgrTestSuite) TestEmptyNotificationChannelReadsAllMsgsFromCh() {
- go func() {
- for i := 0; i < 11; i++ {
- suite.vesmgr.chXAppNotifications <- []byte("hello")
- }
- }()
- time.Sleep(500 * time.Millisecond)
- <-suite.vesmgr.chXAppNotifications
- suite.vesmgr.emptyNotificationsChannel()
- select {
- case <-suite.vesmgr.chXAppNotifications:
- suite.Fail("Got unexpected notification")
- default:
- // ok
- }
-}
-
-func (suite *VesmgrTestSuite) TestVespaKilling() {
- suite.vesmgr.vesagent = makeRunner("sleep", "20")
- suite.vesmgr.startVesagent()
- suite.NotNil(suite.vesmgr.killVespa())
-}
-
-func (suite *VesmgrTestSuite) TestVespaKillingAlreadyKilled() {
- suite.vesmgr.vesagent = makeRunner("sleep", "20")
- suite.vesmgr.startVesagent()
- suite.NotNil(suite.vesmgr.killVespa())
- // Just check that second kill does not block execution
- suite.NotNil(suite.vesmgr.killVespa())
-}
-
-func TestVesMgrSuite(t *testing.T) {
- suite.Run(t, new(VesmgrTestSuite))
-}