Skip to content

Commit

Permalink
[updown-support-in-imc] added unittests for updown monitor
Browse files Browse the repository at this point in the history
  • Loading branch information
aliartiza75 committed Apr 10, 2019
1 parent ca74bad commit 36779d8
Show file tree
Hide file tree
Showing 3 changed files with 140 additions and 71 deletions.
4 changes: 3 additions & 1 deletion glide.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,6 @@ import:
- package: github.com/openshift/client-go
version: v3.9.0
- package: github.com/antoineaugusti/updown
version: v0.3
version: v0.3
- package: github.com/stretchr/testify/assert
version: v1.3.0
51 changes: 25 additions & 26 deletions pkg/monitors/updown/updown-monitor.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,6 @@ func (updownService *UpdownMonitorService) GetByName(monitorName string) (*model
for _, updownMonitor := range updownMonitors {
if updownMonitor.Name == monitorName {
// Test the code below
// match = &mon
return &updownMonitor, nil
}
}
Expand All @@ -98,30 +97,12 @@ func (service *UpdownMonitorService) Add(updownMonitor models.Monitor) {

}

// Update function will update a check
func (service *UpdownMonitorService) Update(updownMonitor models.Monitor) {
httpCheckItemObj := service.createHttpCheck(updownMonitor)

_, httpResponse, err := service.client.Check.Update(updownMonitor.ID, httpCheckItemObj)

if (httpResponse.StatusCode == constants.StatusCodes["OK"]) && (err == nil) {
marshaledConfig, _ := json.Marshal(httpCheckItemObj)
log.Printf("Monitor %s has been updated with following parameters: %s ", updownMonitor.Name, marshaledConfig)

} else {
log.Printf("Monitor %s is not updated because of %s", updownMonitor.Name, err.Error())

}

}

// createHttpCheck it will create a httpCheck
func (updownService *UpdownMonitorService) createHttpCheck(updownMonitor models.Monitor) updown.CheckItem {

// populating updownCheckItemObj object attributes using updownMonitor object
updownCheckItemObj := updown.CheckItem{}
_, err := url.Parse(updownMonitor.URL)

if err != nil {
log.Println("Unable to parse the URL : ", updownMonitor.URL)
return updownCheckItemObj
Expand Down Expand Up @@ -159,13 +140,31 @@ func (service *UpdownMonitorService) addAnnotationConfigToHttpCheck(updownCheckI
updownCheckItemObj.Period = UpdownPeriodAnnotationDefaultValue
}

// if value, ok := annotations[UpdownRequestHeadersAnnotation]; ok {
// updownCheckItemObj.CustomHeaders = make(map[string]string)
// err := json.Unmarshal([]byte(value), &updownCheckItemObj.CustomHeaders)
// if err != nil {
// log.Println("Error Converting from string to JSON object")
// }
// }
if value, ok := annotations[UpdownRequestHeadersAnnotation]; ok {
updownCheckItemObj.CustomHeaders = make(map[string]string)
err := json.Unmarshal([]byte(value), &updownCheckItemObj.CustomHeaders)
if err != nil {
log.Println("Error Converting from string to JSON object")
}
}

}

// Update function will update a check
func (service *UpdownMonitorService) Update(updownMonitor models.Monitor) {
httpCheckItemObj := service.createHttpCheck(updownMonitor)

_, httpResponse, err := service.client.Check.Update(updownMonitor.ID, httpCheckItemObj)

if (httpResponse.StatusCode == constants.StatusCodes["OK"]) && (err == nil) {
marshaledConfig, _ := json.Marshal(httpCheckItemObj)
log.Printf("Monitor %s has been updated with following parameters: %s ", updownMonitor.Name, marshaledConfig)

} else {
log.Println(httpResponse)
log.Printf("Monitor %s is not updated because of %s", updownMonitor.Name, err.Error())

}

}

Expand Down
156 changes: 112 additions & 44 deletions pkg/monitors/updown/updown-monitor_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,8 @@ import (

"github.com/stakater/IngressMonitorController/pkg/config"
"github.com/stakater/IngressMonitorController/pkg/models"
"gotest.tools/assert"

// "github.com/stakater/IngressMonitorController/pkg/models"
"github.com/stakater/IngressMonitorController/pkg/util"
// "gotest.tools/assert"
"github.com/stretchr/testify/assert"
)

type Block struct {
Expand Down Expand Up @@ -39,11 +36,24 @@ func (tcf Block) Do() {
tcf.Try()
}

const (
CheckURL = "https://updown.io"
CheckName = "Updown-site-check"
UpdatedCheckName = "Update-Updown-site-check"
)

func TestSetupMonitorWithCorrectValues(t *testing.T) {
config := config.GetControllerConfig()
UpdownService := UpdownMonitorService{}

provider := util.GetProviderWithName(config, "Updown")
UpdownService.Setup(*provider)

Block{
Try: func() {
UpdownService.Setup(*provider)
},
Catch: func(e Exception) {},
}.Do()

}

Expand All @@ -62,18 +72,18 @@ func TestSetupMonitorWithIncorrectValues(t *testing.T) {

}

func TestGetAllMonitor(t *testing.T) {
func TestGetAllMonitorWhileNoCheckExists(t *testing.T) {
config := config.GetControllerConfig()
UpdownService := UpdownMonitorService{}
provider := util.GetProviderWithName(config, "Updown")
UpdownService.Setup(*provider)
monitorSlice := UpdownService.GetAll()

assert.Equal(t, len(monitorSlice), 0)
assert.Equal(t, 0, len(monitorSlice))

}

func TestGetByNameMonitor(t *testing.T) {
func TestGetByNameMonitorWhileNoCheckExists(t *testing.T) {
config := config.GetControllerConfig()
UpdownService := UpdownMonitorService{}
provider := util.GetProviderWithName(config, "Updown")
Expand All @@ -86,39 +96,97 @@ func TestGetByNameMonitor(t *testing.T) {

}

// func TestAddMonitor(t *testing.T) {
// config := config.GetControllerConfig()
// UpdownService := UpdownMonitorService{}
// provider := util.GetProviderWithName(config, "Updown")
// UpdownService.Setup(*provider)

// }

// func test_method(t *testing.T) {
// config := config.GetControllerConfig()
// UpdownService := UpdownMonitorService{}

// provider := util.GetProviderWithName(config, "Updown")
// provider = util.GetProviderWithName(config, "X")
// t.Log(reflect.TypeOf(*provider))
// // t.Log(json.Unmarshal(provider))
// // delete(*provider, "apiKey")
// t.Log("AAAAAAAAA", config, UpdownService, provider)
// UpdownService.Setup(*provider)
// panic("Error")
// // assert.Equal(t, 1, 1)
// Block{
// Try: func() {
// fmt.Println("I tried")
// Throw("Oh,...sh...")
// },
// Catch: func(e Exception) {
// fmt.Printf("Caught %v\n", e)
// },
// Finally: func() {
// fmt.Println("Finally...")
// },
// }.Do()
// fmt.Println("We went on")

// }
func TestAddMonitorWhileNoCheckExists(t *testing.T) {
config := config.GetControllerConfig()
UpdownService := UpdownMonitorService{}
provider := util.GetProviderWithName(config, "Updown")
UpdownService.Setup(*provider)

newMonitor := models.Monitor{
URL: CheckURL,
Name: CheckName,
}

UpdownService.Add(newMonitor)

}

func TestAddMonitorWhileCheckExists(t *testing.T) {
config := config.GetControllerConfig()
UpdownService := UpdownMonitorService{}
provider := util.GetProviderWithName(config, "Updown")
UpdownService.Setup(*provider)

newMonitor := models.Monitor{
URL: CheckURL,
Name: CheckName,
}
UpdownService.Add(newMonitor)
}

func TestGetAllMonitorWhileCheckExists(t *testing.T) {
config := config.GetControllerConfig()
UpdownService := UpdownMonitorService{}
provider := util.GetProviderWithName(config, "Updown")
UpdownService.Setup(*provider)
monitorSlice := UpdownService.GetAll()

firstElement := 0

assert.Equal(t, 1, len(monitorSlice))
assert.Equal(t, monitorSlice[firstElement].Name, CheckName)
assert.Equal(t, monitorSlice[firstElement].URL, CheckURL)

}

func TestGetByNameMonitorWhileCheckExists(t *testing.T) {
config := config.GetControllerConfig()
UpdownService := UpdownMonitorService{}
provider := util.GetProviderWithName(config, "Updown")
UpdownService.Setup(*provider)
firstElement := 0
var nilMonitorModelObj *models.Monitor

monitorSlice := UpdownService.GetAll()
monitorObject, _ := UpdownService.GetByName(monitorSlice[firstElement].ID)

assert.NotEqual(t, &monitorObject, nilMonitorModelObj)

}

func TestUpdateMonitorWhileCheckExists(t *testing.T) {
config := config.GetControllerConfig()
UpdownService := UpdownMonitorService{}
provider := util.GetProviderWithName(config, "Updown")
UpdownService.Setup(*provider)
firstElement := 0

updatedMonitor := models.Monitor{
URL: CheckURL,
Name: UpdatedCheckName,
}
UpdownService.Update(updatedMonitor)
monitorSlice := UpdownService.GetAll()
assert.NotEqual(t, monitorSlice[firstElement].Name, UpdatedCheckName)

}

func TestRemoveMonitorWhileCheckExists(t *testing.T) {
config := config.GetControllerConfig()
UpdownService := UpdownMonitorService{}
provider := util.GetProviderWithName(config, "Updown")
UpdownService.Setup(*provider)
firstElement := 0

monitorSlice := UpdownService.GetAll()

updatedMonitor := models.Monitor{
URL: monitorSlice[firstElement].URL,
Name: monitorSlice[firstElement].Name,
ID: monitorSlice[firstElement].ID}

UpdownService.Remove(updatedMonitor)
monitorSlice = UpdownService.GetAll()
assert.Equal(t, len(monitorSlice), 0)

}

0 comments on commit 36779d8

Please sign in to comment.