|
|
@@ -0,0 +1,67 @@
|
|
|
+package costmodel
|
|
|
+
|
|
|
+import (
|
|
|
+ "testing"
|
|
|
+)
|
|
|
+
|
|
|
+func Test_CostData_GetController_CronJob(t *testing.T) {
|
|
|
+ cases := []struct {
|
|
|
+ name string
|
|
|
+ cd CostData
|
|
|
+
|
|
|
+ expectedName string
|
|
|
+ expectedKind string
|
|
|
+ expectedHasController bool
|
|
|
+ }{
|
|
|
+ {
|
|
|
+ name: "batch/v1beta1 CronJob Job name",
|
|
|
+ cd: CostData{
|
|
|
+ // batch/v1beta1 CronJobs create Jobs with a 10 character
|
|
|
+ // timestamp appended to the end of the name.
|
|
|
+ //
|
|
|
+ // It looks like this:
|
|
|
+ // CronJob: cronjob-1
|
|
|
+ // Job: cronjob-1-1651057200
|
|
|
+ // Pod: cronjob-1-1651057200-mf5c9
|
|
|
+ Jobs: []string{"cronjob-1-1651057200"},
|
|
|
+ },
|
|
|
+
|
|
|
+ expectedName: "cronjob-1",
|
|
|
+ expectedKind: "job",
|
|
|
+ expectedHasController: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "batch/v1 CronJob Job name",
|
|
|
+ cd: CostData{
|
|
|
+ // batch/v1CronJobs create Jobs with an 8 character timestamp
|
|
|
+ // appended to the end of the name.
|
|
|
+ //
|
|
|
+ // It looks like this:
|
|
|
+ // CronJob: cj-v1
|
|
|
+ // Job: cj-v1-27517770
|
|
|
+ // Pod: cj-v1-27517770-xkrgn
|
|
|
+ Jobs: []string{"cj-v1-27517770"},
|
|
|
+ },
|
|
|
+
|
|
|
+ expectedName: "cj-v1",
|
|
|
+ expectedKind: "job",
|
|
|
+ expectedHasController: true,
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ for _, c := range cases {
|
|
|
+ t.Run(c.name, func(t *testing.T) {
|
|
|
+ name, kind, hasController := c.cd.GetController()
|
|
|
+
|
|
|
+ if name != c.expectedName {
|
|
|
+ t.Errorf("Name mismatch. Expected: %s. Got: %s", c.expectedName, name)
|
|
|
+ }
|
|
|
+ if kind != c.expectedKind {
|
|
|
+ t.Errorf("Kind mismatch. Expected: %s. Got: %s", c.expectedKind, kind)
|
|
|
+ }
|
|
|
+ if hasController != c.expectedHasController {
|
|
|
+ t.Errorf("HasController mismatch. Expected: %t. Got: %t", c.expectedHasController, hasController)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+}
|