Skip to content

Commit 0b58f2c

Browse files
test: add unit tests for crons_monitor_data (#79)
* add unit tests for crons_monitor_data * Update crons_monitor_data.go Co-authored-by: Anton Ovchinnikov <[email protected]> --------- Co-authored-by: Anton Ovchinnikov <[email protected]>
1 parent 243c08f commit 0b58f2c

File tree

2 files changed

+172
-9
lines changed

2 files changed

+172
-9
lines changed

crons_monitor_data.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,20 @@ func (c *CronsMonitorData) addJob(job *batchv1.Job, checkinId sentry.EventID) er
6363
return nil
6464
}
6565

66-
// wrapper struct over crons monitor map that
67-
// handles syncrhonization
66+
// Wrapper struct over crons monitor map that
67+
// handles synchronization
6868
type CronsMetaData struct {
6969
mutex *sync.RWMutex
7070
cronsMonitorDataMap map[string]*CronsMonitorData
7171
}
7272

73+
func NewCronsMetaData() *CronsMetaData {
74+
return &CronsMetaData{
75+
mutex: &sync.RWMutex{},
76+
cronsMonitorDataMap: make(map[string]*CronsMonitorData),
77+
}
78+
}
79+
7380
func (c *CronsMetaData) addCronsMonitorData(cronjobName string, newCronsMonitorData *CronsMonitorData) {
7481
c.mutex.Lock()
7582
defer c.mutex.Unlock()
@@ -88,10 +95,3 @@ func (c *CronsMetaData) getCronsMonitorData(cronjobName string) (*CronsMonitorDa
8895
cronsMonitorData, ok := c.cronsMonitorDataMap[cronjobName]
8996
return cronsMonitorData, ok
9097
}
91-
92-
func NewCronsMetaData() *CronsMetaData {
93-
return &CronsMetaData{
94-
mutex: &sync.RWMutex{},
95-
cronsMonitorDataMap: make(map[string]*CronsMonitorData),
96-
}
97-
}

crons_monitor_data_test.go

Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
package main
2+
3+
import (
4+
"testing"
5+
6+
"github.com/getsentry/sentry-go"
7+
batchv1 "k8s.io/api/batch/v1"
8+
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
9+
)
10+
11+
func TestNewCronsJobData(t *testing.T) {
12+
13+
fakeId := "080181f33ca343f89b0bf55d50abfeee"
14+
15+
cronsJobData := NewCronsJobData(sentry.EventID(fakeId))
16+
if cronsJobData == nil {
17+
t.Errorf("Failed to create cronsJobData")
18+
return
19+
}
20+
if cronsJobData.CheckinId != sentry.EventID(fakeId) {
21+
t.Errorf("The cronsJobData set to incorrect ID")
22+
}
23+
}
24+
25+
func TestGetCheckinId(t *testing.T) {
26+
27+
fakeId := "080181f33ca343f89b0bf55d50abfeee"
28+
29+
cronsJobData := NewCronsJobData(sentry.EventID(fakeId))
30+
if cronsJobData == nil {
31+
t.Errorf("Failed to create cronsJobData")
32+
return
33+
}
34+
if cronsJobData.getCheckinId() != sentry.EventID(fakeId) {
35+
t.Errorf("Retrieved incorrect checkin ID")
36+
}
37+
}
38+
39+
func TestNewCronsMonitorData(t *testing.T) {
40+
41+
fakeMonitorSlug := "cronjob-slug"
42+
fakeSchedule := "* * * * *"
43+
var fakeCompletions int32 = 3
44+
45+
cronsMonitorData := NewCronsMonitorData(fakeMonitorSlug, fakeSchedule, &fakeCompletions)
46+
47+
if cronsMonitorData.MonitorSlug != fakeMonitorSlug {
48+
t.Errorf("The monitor slug is incorrect")
49+
}
50+
if cronsMonitorData.monitorConfig.Schedule != sentry.CrontabSchedule(fakeSchedule) {
51+
t.Errorf("The schedule is incorrect")
52+
}
53+
if cronsMonitorData.JobDatas == nil {
54+
t.Errorf("Failed to create jobDatas map")
55+
}
56+
if cronsMonitorData.requiredCompletions != fakeCompletions {
57+
t.Errorf("The completions is incorrect")
58+
}
59+
}
60+
61+
func TestAddJob(t *testing.T) {
62+
63+
fakeId := "080181f33ca343f89b0bf55d50abfeee"
64+
fakeMonitorSlug := "cronjob-slug"
65+
fakeSchedule := "* * * * *"
66+
var fakeCompletions int32 = 3
67+
68+
cronsMonitorData := NewCronsMonitorData(fakeMonitorSlug, fakeSchedule, &fakeCompletions)
69+
70+
jobObj := &batchv1.Job{
71+
ObjectMeta: v1.ObjectMeta{
72+
Name: "TestAddJobJob",
73+
},
74+
}
75+
cronsMonitorData.addJob(jobObj, sentry.EventID(fakeId))
76+
77+
jobData, ok := cronsMonitorData.JobDatas["TestAddJobJob"]
78+
if !ok {
79+
t.Errorf("Failed to add job data")
80+
}
81+
if jobData.CheckinId != sentry.EventID(fakeId) {
82+
t.Errorf("Incorrect checkin ID")
83+
}
84+
}
85+
86+
func TestNewCronsMetaData(t *testing.T) {
87+
88+
cronsMetaData := NewCronsMetaData()
89+
if cronsMetaData.cronsMonitorDataMap == nil {
90+
t.Errorf("Failed to create cronsMonitorDataMap")
91+
}
92+
}
93+
94+
func TestAddCronsMonitorData(t *testing.T) {
95+
96+
cronsMetaData := NewCronsMetaData()
97+
if cronsMetaData.cronsMonitorDataMap == nil {
98+
t.Errorf("Failed to create cronsMonitorDataMap")
99+
}
100+
101+
fakeMonitorSlug := "TestAddCronsMonitorDataCronJob"
102+
fakeSchedule := "* * * * *"
103+
var fakeCompletions int32 = 3
104+
cronsMonitorData := NewCronsMonitorData(fakeMonitorSlug, fakeSchedule, &fakeCompletions)
105+
106+
cronsMetaData.addCronsMonitorData("TestAddCronsMonitorDataCronJob", cronsMonitorData)
107+
108+
retCronsMonitorData, ok := cronsMetaData.cronsMonitorDataMap["TestAddCronsMonitorDataCronJob"]
109+
if !ok {
110+
t.Errorf("Failed to add cronsMonitorData to map")
111+
}
112+
if retCronsMonitorData != cronsMonitorData {
113+
t.Errorf("Failed to add correct cronsMonitorData to map")
114+
}
115+
}
116+
117+
func TestDeleteCronsMonitorData(t *testing.T) {
118+
119+
cronsMetaData := NewCronsMetaData()
120+
if cronsMetaData.cronsMonitorDataMap == nil {
121+
t.Errorf("Failed to create cronsMonitorDataMap")
122+
}
123+
124+
fakeMonitorSlug := "TestAddCronsMonitorDataCronJob"
125+
fakeSchedule := "* * * * *"
126+
var fakeCompletions int32 = 3
127+
cronsMonitorData := NewCronsMonitorData(fakeMonitorSlug, fakeSchedule, &fakeCompletions)
128+
129+
cronsMetaData.cronsMonitorDataMap["TestAddCronsMonitorDataCronJob"] = cronsMonitorData
130+
131+
cronsMetaData.deleteCronsMonitorData("TestAddCronsMonitorDataCronJob")
132+
133+
_, ok := cronsMetaData.cronsMonitorDataMap["TestAddCronsMonitorDataCronJob"]
134+
135+
if ok {
136+
t.Errorf("Failed to delete cronsMonitorData from map")
137+
}
138+
139+
}
140+
141+
func TestGetCronsMonitorData(t *testing.T) {
142+
143+
cronsMetaData := NewCronsMetaData()
144+
if cronsMetaData.cronsMonitorDataMap == nil {
145+
t.Errorf("Failed to create cronsMonitorDataMap")
146+
}
147+
148+
fakeMonitorSlug := "TestAddCronsMonitorDataCronJob"
149+
fakeSchedule := "* * * * *"
150+
var fakeCompletions int32 = 3
151+
cronsMonitorData := NewCronsMonitorData(fakeMonitorSlug, fakeSchedule, &fakeCompletions)
152+
153+
cronsMetaData.cronsMonitorDataMap["TestAddCronsMonitorDataCronJob"] = cronsMonitorData
154+
155+
retCronsMonitorData, ok := cronsMetaData.getCronsMonitorData("TestAddCronsMonitorDataCronJob")
156+
if !ok {
157+
t.Errorf("Failed to get cronsMonitorData to map")
158+
}
159+
if retCronsMonitorData != cronsMonitorData {
160+
t.Errorf("Failed to get correct cronsMonitorData to map")
161+
}
162+
163+
}

0 commit comments

Comments
 (0)