Skip to content

Commit

Permalink
add unit test and examples
Browse files Browse the repository at this point in the history
Signed-off-by: Chun Lin Yang <[email protected]>
  • Loading branch information
clyang82 committed Nov 6, 2018
1 parent efb43df commit 707b1f6
Show file tree
Hide file tree
Showing 10 changed files with 553 additions and 13 deletions.
20 changes: 20 additions & 0 deletions deploy/examples/simple-prod-with-volumes.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# setup an elasticsearch with `make es`
apiVersion: io.jaegertracing/v1alpha1
kind: Jaeger
metadata:
name: simple-prod
spec:
strategy: production
storage:
type: elasticsearch
options:
es:
server-urls: http://elasticsearch:9200
username: elastic
password: changeme
volumeMounts:
- name: elastic-data
mountPath: /usr/share/elasticsearch/data
volumes:
- name: elastic-data
emptyDir: {}
8 changes: 3 additions & 5 deletions pkg/deployment/agent.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,10 +77,9 @@ func (a *Agent) Get() *appsv1.DaemonSet {
},
Spec: v1.PodSpec{
Containers: []v1.Container{{
Image: a.jaeger.Spec.Agent.Image,
Name: "jaeger-agent-daemonset",
Args: args,
VolumeMounts: append(a.jaeger.Spec.VolumeMounts, a.jaeger.Spec.Agent.VolumeMounts...),
Image: a.jaeger.Spec.Agent.Image,
Name: "jaeger-agent-daemonset",
Args: args,
Ports: []v1.ContainerPort{
{
ContainerPort: 5775,
Expand Down Expand Up @@ -116,7 +115,6 @@ func (a *Agent) Get() *appsv1.DaemonSet {
InitialDelaySeconds: 1,
},
}},
Volumes: append(a.jaeger.Spec.Volumes, a.jaeger.Spec.Agent.Volumes...),
},
},
},
Expand Down
5 changes: 3 additions & 2 deletions pkg/deployment/all-in-one.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import (
"github.com/jaegertracing/jaeger-operator/pkg/apis/io/v1alpha1"
"github.com/jaegertracing/jaeger-operator/pkg/ingress"
"github.com/jaegertracing/jaeger-operator/pkg/service"
"github.com/jaegertracing/jaeger-operator/pkg/util"
)

// AllInOne builds pods for jaegertracing/all-in-one
Expand Down Expand Up @@ -83,7 +84,7 @@ func (a *AllInOne) Get() *appsv1.Deployment {
Value: "9411",
},
},
VolumeMounts: append(a.jaeger.Spec.VolumeMounts, a.jaeger.Spec.AllInOne.VolumeMounts...),
VolumeMounts: util.RemoveDuplicatedVolumeMounts(append(a.jaeger.Spec.AllInOne.VolumeMounts, a.jaeger.Spec.VolumeMounts...)),
Ports: []v1.ContainerPort{
{
ContainerPort: 5775,
Expand Down Expand Up @@ -131,7 +132,7 @@ func (a *AllInOne) Get() *appsv1.Deployment {
InitialDelaySeconds: 1,
},
}},
Volumes: append(a.jaeger.Spec.Volumes, a.jaeger.Spec.AllInOne.Volumes...),
Volumes: util.RemoveDuplicatedVolumes(append(a.jaeger.Spec.AllInOne.Volumes, a.jaeger.Spec.Volumes...)),
},
},
},
Expand Down
141 changes: 141 additions & 0 deletions pkg/deployment/all-in-one_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,3 +94,144 @@ func TestAllInOneNumberOfIngresses(t *testing.T) {
})
}
}

func TestAllInOneVolumeMountsWithVolumes(t *testing.T) {
name := "TestAllInOneVolumeMountsWithVolumes"

globalVolumes := []v1.Volume{
v1.Volume{
Name: "globalVolume",
VolumeSource: v1.VolumeSource{},
},
}

globalVolumeMounts := []v1.VolumeMount{
v1.VolumeMount{
Name: "globalVolume",
},
}

allInOneVolumes := []v1.Volume{
v1.Volume{
Name: "allInOneVolume",
VolumeSource: v1.VolumeSource{},
},
}

allInOneVolumeMounts := []v1.VolumeMount{
v1.VolumeMount{
Name: "allInOneVolume",
},
}

jaeger := v1alpha1.NewJaeger(name)
jaeger.Spec.Volumes = globalVolumes
jaeger.Spec.VolumeMounts = globalVolumeMounts
jaeger.Spec.AllInOne.Volumes = allInOneVolumes
jaeger.Spec.AllInOne.VolumeMounts = allInOneVolumeMounts
podSpec := NewAllInOne(jaeger).Get().Spec.Template.Spec

assert.Len(t, podSpec.Volumes, len(append(allInOneVolumes, globalVolumes...)))
assert.Len(t, podSpec.Containers[0].VolumeMounts, len(append(allInOneVolumeMounts, globalVolumeMounts...)))

// AllInOne is first while global is second
for index, volume := range podSpec.Volumes {
if index == 0 {
assert.Equal(t, "allInOneVolume", volume.Name)
} else if index == 1 {
assert.Equal(t, "globalVolume", volume.Name)
}
}

for index, volumeMount := range podSpec.Containers[0].VolumeMounts {
if index == 0 {
assert.Equal(t, "allInOneVolume", volumeMount.Name)
} else if index == 1 {
assert.Equal(t, "globalVolume", volumeMount.Name)
}
}

}

func TestAllInOneMountGlobalVolumes(t *testing.T) {
name := "TestAllInOneMountGlobalVolumes"

globalVolumes := []v1.Volume{
v1.Volume{
Name: "globalVolume",
VolumeSource: v1.VolumeSource{},
},
}

allInOneVolumeMounts := []v1.VolumeMount{
v1.VolumeMount{
Name: "globalVolume",
ReadOnly: true,
},
}

jaeger := v1alpha1.NewJaeger(name)
jaeger.Spec.Volumes = globalVolumes
jaeger.Spec.AllInOne.VolumeMounts = allInOneVolumeMounts
podSpec := NewAllInOne(jaeger).Get().Spec.Template.Spec

assert.Len(t, podSpec.Containers[0].VolumeMounts, 1)
// allInOne volume is mounted
assert.Equal(t, podSpec.Containers[0].VolumeMounts[0].Name, "globalVolume")

}
func TestAllInOneVolumeMountsWithSameName(t *testing.T) {
name := "TestAllInOneVolumeMountsWithSameName"

globalVolumeMounts := []v1.VolumeMount{
v1.VolumeMount{
Name: "data",
ReadOnly: true,
},
}

allInOneVolumeMounts := []v1.VolumeMount{
v1.VolumeMount{
Name: "data",
ReadOnly: false,
},
}

jaeger := v1alpha1.NewJaeger(name)
jaeger.Spec.VolumeMounts = globalVolumeMounts
jaeger.Spec.AllInOne.VolumeMounts = allInOneVolumeMounts
podSpec := NewAllInOne(jaeger).Get().Spec.Template.Spec

assert.Len(t, podSpec.Containers[0].VolumeMounts, 1)
// allInOne volume is mounted
assert.Equal(t, podSpec.Containers[0].VolumeMounts[0].ReadOnly, false)

}

func TestAllInOneVolumeWithSameName(t *testing.T) {
name := "TestAllInOneVolumeWithSameName"

globalVolumes := []v1.Volume{
v1.Volume{
Name: "data",
VolumeSource: v1.VolumeSource{HostPath: &v1.HostPathVolumeSource{Path: "/data1"}},
},
}

allInOneVolumes := []v1.Volume{
v1.Volume{
Name: "data",
VolumeSource: v1.VolumeSource{HostPath: &v1.HostPathVolumeSource{Path: "/data2"}},
},
}

jaeger := v1alpha1.NewJaeger(name)
jaeger.Spec.Volumes = globalVolumes
jaeger.Spec.AllInOne.Volumes = allInOneVolumes
podSpec := NewAllInOne(jaeger).Get().Spec.Template.Spec

assert.Len(t, podSpec.Volumes, 1)
// collector volume is mounted
assert.Equal(t, podSpec.Volumes[0].VolumeSource.HostPath.Path, "/data2")

}
5 changes: 3 additions & 2 deletions pkg/deployment/collector.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (

"github.com/jaegertracing/jaeger-operator/pkg/apis/io/v1alpha1"
"github.com/jaegertracing/jaeger-operator/pkg/service"
"github.com/jaegertracing/jaeger-operator/pkg/util"
)

// Collector builds pods for jaegertracing/jaeger-collector
Expand Down Expand Up @@ -88,7 +89,7 @@ func (c *Collector) Get() *appsv1.Deployment {
Value: "9411",
},
},
VolumeMounts: append(c.jaeger.Spec.VolumeMounts, c.jaeger.Spec.Collector.VolumeMounts...),
VolumeMounts: util.RemoveDuplicatedVolumeMounts(append(c.jaeger.Spec.Collector.VolumeMounts, c.jaeger.Spec.VolumeMounts...)),
Ports: []v1.ContainerPort{
{
ContainerPort: 9411,
Expand All @@ -113,7 +114,7 @@ func (c *Collector) Get() *appsv1.Deployment {
InitialDelaySeconds: 1,
},
}},
Volumes: append(c.jaeger.Spec.Volumes, c.jaeger.Spec.Collector.Volumes...),
Volumes: util.RemoveDuplicatedVolumes(append(c.jaeger.Spec.Collector.Volumes, c.jaeger.Spec.Volumes...)),
},
},
},
Expand Down
141 changes: 141 additions & 0 deletions pkg/deployment/collector_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,3 +71,144 @@ func TestDefaultCollectorImage(t *testing.T) {

assert.Equal(t, "false", dep.Spec.Template.ObjectMeta.Annotations["sidecar.istio.io/inject"])
}

func TestCollectorVolumeMountsWithVolumes(t *testing.T) {
name := "TestCollectorVolumeMountsWithVolumes"

globalVolumes := []v1.Volume{
v1.Volume{
Name: "globalVolume",
VolumeSource: v1.VolumeSource{},
},
}

globalVolumeMounts := []v1.VolumeMount{
v1.VolumeMount{
Name: "globalVolume",
},
}

collectorVolumes := []v1.Volume{
v1.Volume{
Name: "collectorVolume",
VolumeSource: v1.VolumeSource{},
},
}

collectorVolumeMounts := []v1.VolumeMount{
v1.VolumeMount{
Name: "collectorVolume",
},
}

jaeger := v1alpha1.NewJaeger(name)
jaeger.Spec.Volumes = globalVolumes
jaeger.Spec.VolumeMounts = globalVolumeMounts
jaeger.Spec.Collector.Volumes = collectorVolumes
jaeger.Spec.Collector.VolumeMounts = collectorVolumeMounts
podSpec := NewCollector(jaeger).Get().Spec.Template.Spec

assert.Len(t, podSpec.Volumes, len(append(collectorVolumes, globalVolumes...)))
assert.Len(t, podSpec.Containers[0].VolumeMounts, len(append(collectorVolumeMounts, globalVolumeMounts...)))

// collector is first while global is second
for index, volume := range podSpec.Volumes {
if index == 0 {
assert.Equal(t, "collectorVolume", volume.Name)
} else if index == 1 {
assert.Equal(t, "globalVolume", volume.Name)
}
}

for index, volumeMount := range podSpec.Containers[0].VolumeMounts {
if index == 0 {
assert.Equal(t, "collectorVolume", volumeMount.Name)
} else if index == 1 {
assert.Equal(t, "globalVolume", volumeMount.Name)
}
}

}

func TestCollectorMountGlobalVolumes(t *testing.T) {
name := "TestCollectorMountGlobalVolumes"

globalVolumes := []v1.Volume{
v1.Volume{
Name: "globalVolume",
VolumeSource: v1.VolumeSource{},
},
}

collectorVolumeMounts := []v1.VolumeMount{
v1.VolumeMount{
Name: "globalVolume",
ReadOnly: true,
},
}

jaeger := v1alpha1.NewJaeger(name)
jaeger.Spec.Volumes = globalVolumes
jaeger.Spec.Collector.VolumeMounts = collectorVolumeMounts
podSpec := NewCollector(jaeger).Get().Spec.Template.Spec

assert.Len(t, podSpec.Containers[0].VolumeMounts, 1)
// collector volume is mounted
assert.Equal(t, podSpec.Containers[0].VolumeMounts[0].Name, "globalVolume")

}
func TestCollectorVolumeMountsWithSameName(t *testing.T) {
name := "TestCollectorVolumeMountsWithSameName"

globalVolumeMounts := []v1.VolumeMount{
v1.VolumeMount{
Name: "data",
ReadOnly: true,
},
}

collectorVolumeMounts := []v1.VolumeMount{
v1.VolumeMount{
Name: "data",
ReadOnly: false,
},
}

jaeger := v1alpha1.NewJaeger(name)
jaeger.Spec.VolumeMounts = globalVolumeMounts
jaeger.Spec.Collector.VolumeMounts = collectorVolumeMounts
podSpec := NewCollector(jaeger).Get().Spec.Template.Spec

assert.Len(t, podSpec.Containers[0].VolumeMounts, 1)
// collector volume is mounted
assert.Equal(t, podSpec.Containers[0].VolumeMounts[0].ReadOnly, false)

}

func TestCollectorVolumeWithSameName(t *testing.T) {
name := "TestCollectorVolumeWithSameName"

globalVolumes := []v1.Volume{
v1.Volume{
Name: "data",
VolumeSource: v1.VolumeSource{HostPath: &v1.HostPathVolumeSource{Path: "/data1"}},
},
}

collectorVolumes := []v1.Volume{
v1.Volume{
Name: "data",
VolumeSource: v1.VolumeSource{HostPath: &v1.HostPathVolumeSource{Path: "/data2"}},
},
}

jaeger := v1alpha1.NewJaeger(name)
jaeger.Spec.Volumes = globalVolumes
jaeger.Spec.Collector.Volumes = collectorVolumes
podSpec := NewCollector(jaeger).Get().Spec.Template.Spec

assert.Len(t, podSpec.Volumes, 1)
// collector volume is mounted
assert.Equal(t, podSpec.Volumes[0].VolumeSource.HostPath.Path, "/data2")

}
Loading

0 comments on commit 707b1f6

Please sign in to comment.