forked from LaconicNetwork/kompose
fix: remove e2e flakiness by making the loop deterministic
Signed-off-by: AhmedGrati <ahmedgrati1999@gmail.com>
This commit is contained in:
parent
404b0caae7
commit
3172bc05b5
@ -806,9 +806,9 @@ func (k *Kubernetes) RemoveDupObjects(objs *[]runtime.Object) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SortedKeys Ensure the kubernetes objects are in a consistent order
|
// SortedKeys Ensure the kubernetes objects are in a consistent order
|
||||||
func SortedKeys(komposeObject kobject.KomposeObject) []string {
|
func SortedKeys[V kobject.ServiceConfig | kobject.ServiceConfigGroup](serviceConfig map[string]V) []string {
|
||||||
var sortedKeys []string
|
var sortedKeys []string
|
||||||
for name := range komposeObject.ServiceConfigs {
|
for name := range serviceConfig {
|
||||||
sortedKeys = append(sortedKeys, name)
|
sortedKeys = append(sortedKeys, name)
|
||||||
}
|
}
|
||||||
sort.Strings(sortedKeys)
|
sort.Strings(sortedKeys)
|
||||||
|
|||||||
@ -511,7 +511,7 @@ func TestSortedKeys(t *testing.T) {
|
|||||||
komposeObject := kobject.KomposeObject{
|
komposeObject := kobject.KomposeObject{
|
||||||
ServiceConfigs: map[string]kobject.ServiceConfig{"b": service, "a": service1},
|
ServiceConfigs: map[string]kobject.ServiceConfig{"b": service, "a": service1},
|
||||||
}
|
}
|
||||||
a := SortedKeys(komposeObject)
|
a := SortedKeys(komposeObject.ServiceConfigs)
|
||||||
if !reflect.DeepEqual(a, c) {
|
if !reflect.DeepEqual(a, c) {
|
||||||
t.Logf("Test Fail output should be %s", c)
|
t.Logf("Test Fail output should be %s", c)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1455,20 +1455,23 @@ func (k *Kubernetes) Transform(komposeObject kobject.KomposeObject, opt kobject.
|
|||||||
if opt.ServiceGroupMode != "" {
|
if opt.ServiceGroupMode != "" {
|
||||||
log.Debugf("Service group mode is: %s", opt.ServiceGroupMode)
|
log.Debugf("Service group mode is: %s", opt.ServiceGroupMode)
|
||||||
komposeObjectToServiceConfigGroupMapping := KomposeObjectToServiceConfigGroupMapping(&komposeObject, opt)
|
komposeObjectToServiceConfigGroupMapping := KomposeObjectToServiceConfigGroupMapping(&komposeObject, opt)
|
||||||
for name, group := range komposeObjectToServiceConfigGroupMapping {
|
sortedGroupMappingKeys := SortedKeys(komposeObjectToServiceConfigGroupMapping)
|
||||||
|
for _, group := range sortedGroupMappingKeys {
|
||||||
|
groupMapping := komposeObjectToServiceConfigGroupMapping[group]
|
||||||
var objects []runtime.Object
|
var objects []runtime.Object
|
||||||
podSpec := PodSpec{}
|
podSpec := PodSpec{}
|
||||||
|
|
||||||
|
var groupName string
|
||||||
// if using volume group, the name here will be a volume config string. reset to the first service name
|
// if using volume group, the name here will be a volume config string. reset to the first service name
|
||||||
if opt.ServiceGroupMode == "volume" {
|
if opt.ServiceGroupMode == "volume" {
|
||||||
if opt.ServiceGroupName != "" {
|
if opt.ServiceGroupName != "" {
|
||||||
name = opt.ServiceGroupName
|
groupName = opt.ServiceGroupName
|
||||||
} else {
|
} else {
|
||||||
var names []string
|
var names []string
|
||||||
for _, svc := range group {
|
for _, svc := range groupMapping {
|
||||||
names = append(names, svc.Name)
|
names = append(names, svc.Name)
|
||||||
}
|
}
|
||||||
name = strings.Join(names, "-")
|
groupName = strings.Join(names, "-")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1476,7 +1479,7 @@ func (k *Kubernetes) Transform(komposeObject kobject.KomposeObject, opt kobject.
|
|||||||
// ports conflict check between services
|
// ports conflict check between services
|
||||||
portsUses := map[string]bool{}
|
portsUses := map[string]bool{}
|
||||||
|
|
||||||
for _, service := range group {
|
for _, service := range groupMapping {
|
||||||
// first do ports check
|
// first do ports check
|
||||||
ports := ConfigPorts(service)
|
ports := ConfigPorts(service)
|
||||||
for _, port := range ports {
|
for _, port := range ports {
|
||||||
@ -1487,7 +1490,7 @@ func (k *Kubernetes) Transform(komposeObject kobject.KomposeObject, opt kobject.
|
|||||||
portsUses[key] = true
|
portsUses[key] = true
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Infof("Group Service %s to [%s]", service.Name, name)
|
log.Infof("Group Service %s to [%s]", service.Name, groupName)
|
||||||
service.WithKomposeAnnotation = opt.WithKomposeAnnotation
|
service.WithKomposeAnnotation = opt.WithKomposeAnnotation
|
||||||
podSpec.Append(AddContainer(service, opt))
|
podSpec.Append(AddContainer(service, opt))
|
||||||
|
|
||||||
@ -1495,17 +1498,17 @@ func (k *Kubernetes) Transform(komposeObject kobject.KomposeObject, opt kobject.
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
// override..
|
// override..
|
||||||
objects = append(objects, k.CreateWorkloadAndConfigMapObjects(name, service, opt)...)
|
objects = append(objects, k.CreateWorkloadAndConfigMapObjects(groupName, service, opt)...)
|
||||||
k.configKubeServiceAndIngressForService(service, name, &objects)
|
k.configKubeServiceAndIngressForService(service, groupName, &objects)
|
||||||
|
|
||||||
// Configure the container volumes.
|
// Configure the container volumes.
|
||||||
volumesMount, volumes, pvc, cms, err := k.ConfigVolumes(name, service)
|
volumesMount, volumes, pvc, cms, err := k.ConfigVolumes(groupName, service)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, "k.ConfigVolumes failed")
|
return nil, errors.Wrap(err, "k.ConfigVolumes failed")
|
||||||
}
|
}
|
||||||
// Configure Tmpfs
|
// Configure Tmpfs
|
||||||
if len(service.TmpFs) > 0 {
|
if len(service.TmpFs) > 0 {
|
||||||
TmpVolumesMount, TmpVolumes := k.ConfigTmpfs(name, service)
|
TmpVolumesMount, TmpVolumes := k.ConfigTmpfs(groupName, service)
|
||||||
volumes = append(volumes, TmpVolumes...)
|
volumes = append(volumes, TmpVolumes...)
|
||||||
volumesMount = append(volumesMount, TmpVolumesMount...)
|
volumesMount = append(volumesMount, TmpVolumesMount...)
|
||||||
}
|
}
|
||||||
@ -1527,14 +1530,14 @@ func (k *Kubernetes) Transform(komposeObject kobject.KomposeObject, opt kobject.
|
|||||||
|
|
||||||
podSpec.Append(
|
podSpec.Append(
|
||||||
SetPorts(service),
|
SetPorts(service),
|
||||||
ImagePullPolicy(name, service),
|
ImagePullPolicy(groupName, service),
|
||||||
RestartPolicy(name, service),
|
RestartPolicy(groupName, service),
|
||||||
SecurityContext(name, service),
|
SecurityContext(groupName, service),
|
||||||
HostName(service),
|
HostName(service),
|
||||||
DomainName(service),
|
DomainName(service),
|
||||||
ResourcesLimits(service),
|
ResourcesLimits(service),
|
||||||
ResourcesRequests(service),
|
ResourcesRequests(service),
|
||||||
TerminationGracePeriodSeconds(name, service),
|
TerminationGracePeriodSeconds(groupName, service),
|
||||||
TopologySpreadConstraints(service),
|
TopologySpreadConstraints(service),
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1542,7 +1545,7 @@ func (k *Kubernetes) Transform(komposeObject kobject.KomposeObject, opt kobject.
|
|||||||
podSpec.Append(ServiceAccountName(serviceAccountName))
|
podSpec.Append(ServiceAccountName(serviceAccountName))
|
||||||
}
|
}
|
||||||
|
|
||||||
err = k.UpdateKubernetesObjectsMultipleContainers(name, service, &objects, podSpec)
|
err = k.UpdateKubernetesObjectsMultipleContainers(groupName, service, &objects, podSpec)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, "Error transforming Kubernetes objects")
|
return nil, errors.Wrap(err, "Error transforming Kubernetes objects")
|
||||||
}
|
}
|
||||||
@ -1557,7 +1560,7 @@ func (k *Kubernetes) Transform(komposeObject kobject.KomposeObject, opt kobject.
|
|||||||
allobjects = append(allobjects, objects...)
|
allobjects = append(allobjects, objects...)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sortedKeys := SortedKeys(komposeObject)
|
sortedKeys := SortedKeys(komposeObject.ServiceConfigs)
|
||||||
for _, name := range sortedKeys {
|
for _, name := range sortedKeys {
|
||||||
service := komposeObject.ServiceConfigs[name]
|
service := komposeObject.ServiceConfigs[name]
|
||||||
|
|
||||||
|
|||||||
@ -280,7 +280,7 @@ func (o *OpenShift) Transform(komposeObject kobject.KomposeObject, opt kobject.C
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sortedKeys := kubernetes.SortedKeys(komposeObject)
|
sortedKeys := kubernetes.SortedKeys(komposeObject.ServiceConfigs)
|
||||||
for _, name := range sortedKeys {
|
for _, name := range sortedKeys {
|
||||||
service := komposeObject.ServiceConfigs[name]
|
service := komposeObject.ServiceConfigs[name]
|
||||||
var objects []runtime.Object
|
var objects []runtime.Object
|
||||||
|
|||||||
12
script/test/fixtures/env/output-k8s.yaml
vendored
12
script/test/fixtures/env/output-k8s.yaml
vendored
@ -67,12 +67,12 @@ spec:
|
|||||||
valueFrom:
|
valueFrom:
|
||||||
configMapKeyRef:
|
configMapKeyRef:
|
||||||
key: BAR
|
key: BAR
|
||||||
name: home-runner-work-kompose-kompose-script-test-fixtures-env-hadoop-hive-namenode-env
|
name: Users-ahmedgrati-projects-kompose-script-test-fixtures-env-hadoop-hive-namenode-env
|
||||||
- name: FOO
|
- name: FOO
|
||||||
valueFrom:
|
valueFrom:
|
||||||
configMapKeyRef:
|
configMapKeyRef:
|
||||||
key: FOO
|
key: FOO
|
||||||
name: home-runner-work-kompose-kompose-script-test-fixtures-env-hadoop-hive-namenode-env
|
name: Users-ahmedgrati-projects-kompose-script-test-fixtures-env-hadoop-hive-namenode-env
|
||||||
image: bde2020/hadoop-namenode:2.0.0-hadoop2.7.4-java8
|
image: bde2020/hadoop-namenode:2.0.0-hadoop2.7.4-java8
|
||||||
name: another-namenode
|
name: another-namenode
|
||||||
ports:
|
ports:
|
||||||
@ -95,8 +95,8 @@ kind: ConfigMap
|
|||||||
metadata:
|
metadata:
|
||||||
creationTimestamp: null
|
creationTimestamp: null
|
||||||
labels:
|
labels:
|
||||||
io.kompose.service: another-namenode-home-runner-work-kompose-kompose-script-test-fixtures-env-hadoop-hive-namenode-env
|
io.kompose.service: another-namenode-Users-ahmedgrati-projects-kompose-script-test-fixtures-env-hadoop-hive-namenode-env
|
||||||
name: home-runner-work-kompose-kompose-script-test-fixtures-env-hadoop-hive-namenode-env
|
name: Users-ahmedgrati-projects-kompose-script-test-fixtures-env-hadoop-hive-namenode-env
|
||||||
|
|
||||||
---
|
---
|
||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
@ -125,14 +125,14 @@ spec:
|
|||||||
valueFrom:
|
valueFrom:
|
||||||
configMapKeyRef:
|
configMapKeyRef:
|
||||||
key: BAR
|
key: BAR
|
||||||
name: home-runner-work-kompose-kompose-script-test-fixtures-env-hadoop-hive-namenode-env
|
name: Users-ahmedgrati-projects-kompose-script-test-fixtures-env-hadoop-hive-namenode-env
|
||||||
- name: CLUSTER_NAME
|
- name: CLUSTER_NAME
|
||||||
value: test
|
value: test
|
||||||
- name: FOO
|
- name: FOO
|
||||||
valueFrom:
|
valueFrom:
|
||||||
configMapKeyRef:
|
configMapKeyRef:
|
||||||
key: FOO
|
key: FOO
|
||||||
name: home-runner-work-kompose-kompose-script-test-fixtures-env-hadoop-hive-namenode-env
|
name: Users-ahmedgrati-projects-kompose-script-test-fixtures-env-hadoop-hive-namenode-env
|
||||||
image: bde2020/hadoop-namenode:2.0.0-hadoop2.7.4-java8
|
image: bde2020/hadoop-namenode:2.0.0-hadoop2.7.4-java8
|
||||||
name: namenode
|
name: namenode
|
||||||
ports:
|
ports:
|
||||||
|
|||||||
12
script/test/fixtures/env/output-os.yaml
vendored
12
script/test/fixtures/env/output-os.yaml
vendored
@ -49,8 +49,8 @@ kind: ConfigMap
|
|||||||
metadata:
|
metadata:
|
||||||
creationTimestamp: null
|
creationTimestamp: null
|
||||||
labels:
|
labels:
|
||||||
io.kompose.service: another-namenode-home-runner-work-kompose-kompose-script-test-fixtures-env-hadoop-hive-namenode-env
|
io.kompose.service: another-namenode-Users-ahmedgrati-projects-kompose-script-test-fixtures-env-hadoop-hive-namenode-env
|
||||||
name: home-runner-work-kompose-kompose-script-test-fixtures-env-hadoop-hive-namenode-env
|
name: Users-ahmedgrati-projects-kompose-script-test-fixtures-env-hadoop-hive-namenode-env
|
||||||
|
|
||||||
---
|
---
|
||||||
apiVersion: apps.openshift.io/v1
|
apiVersion: apps.openshift.io/v1
|
||||||
@ -79,12 +79,12 @@ spec:
|
|||||||
valueFrom:
|
valueFrom:
|
||||||
configMapKeyRef:
|
configMapKeyRef:
|
||||||
key: BAR
|
key: BAR
|
||||||
name: home-runner-work-kompose-kompose-script-test-fixtures-env-hadoop-hive-namenode-env
|
name: Users-ahmedgrati-projects-kompose-script-test-fixtures-env-hadoop-hive-namenode-env
|
||||||
- name: FOO
|
- name: FOO
|
||||||
valueFrom:
|
valueFrom:
|
||||||
configMapKeyRef:
|
configMapKeyRef:
|
||||||
key: FOO
|
key: FOO
|
||||||
name: home-runner-work-kompose-kompose-script-test-fixtures-env-hadoop-hive-namenode-env
|
name: Users-ahmedgrati-projects-kompose-script-test-fixtures-env-hadoop-hive-namenode-env
|
||||||
image: ' '
|
image: ' '
|
||||||
name: another-namenode
|
name: another-namenode
|
||||||
ports:
|
ports:
|
||||||
@ -166,14 +166,14 @@ spec:
|
|||||||
valueFrom:
|
valueFrom:
|
||||||
configMapKeyRef:
|
configMapKeyRef:
|
||||||
key: BAR
|
key: BAR
|
||||||
name: home-runner-work-kompose-kompose-script-test-fixtures-env-hadoop-hive-namenode-env
|
name: Users-ahmedgrati-projects-kompose-script-test-fixtures-env-hadoop-hive-namenode-env
|
||||||
- name: CLUSTER_NAME
|
- name: CLUSTER_NAME
|
||||||
value: test
|
value: test
|
||||||
- name: FOO
|
- name: FOO
|
||||||
valueFrom:
|
valueFrom:
|
||||||
configMapKeyRef:
|
configMapKeyRef:
|
||||||
key: FOO
|
key: FOO
|
||||||
name: home-runner-work-kompose-kompose-script-test-fixtures-env-hadoop-hive-namenode-env
|
name: Users-ahmedgrati-projects-kompose-script-test-fixtures-env-hadoop-hive-namenode-env
|
||||||
image: ' '
|
image: ' '
|
||||||
name: namenode
|
name: namenode
|
||||||
ports:
|
ports:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user