@@ -101,3 +101,63 @@ func deploymentSubTest(t *testing.T, mode api.DeploymentMode, engine api.Storage
101101
102102 return nil
103103}
104+
105+ // test setup containing multiple deployments
106+ func TestMultiDeployment1 (t * testing.T ) {
107+ longOrSkip (t )
108+
109+ k8sNameSpace := getNamespace (t )
110+ k8sClient := mustNewKubeClient (t )
111+ deploymentClient := kubeArangoClient .MustNewInCluster ()
112+
113+ // Prepare deployment config
114+ deploymentTemplate1 := newDeployment ("test-multidep1-1-" + uniuri .NewLen (4 ))
115+ deploymentTemplate1 .Spec .Mode = api .NewMode (api .DeploymentModeCluster )
116+ deploymentTemplate1 .Spec .StorageEngine = api .NewStorageEngine (api .StorageEngineRocksDB )
117+ deploymentTemplate1 .Spec .TLS = api.TLSSpec {} // should auto-generate cert
118+ deploymentTemplate1 .Spec .SetDefaults (deploymentTemplate1 .GetName ()) // this must be last
119+
120+ deploymentTemplate2 := newDeployment ("test-multidep1-2-" + uniuri .NewLen (4 ))
121+ deploymentTemplate2 .Spec .Mode = api .NewMode (api .DeploymentModeSingle )
122+ deploymentTemplate2 .Spec .StorageEngine = api .NewStorageEngine (api .StorageEngineMMFiles )
123+ deploymentTemplate2 .Spec .TLS = api.TLSSpec {} // should auto-generate cert
124+ deploymentTemplate2 .Spec .SetDefaults (deploymentTemplate2 .GetName ()) // this must be last
125+
126+ // Create deployment
127+ deployment1 , err := deploymentClient .DatabaseV1alpha ().ArangoDeployments (k8sNameSpace ).Create (deploymentTemplate1 )
128+ if err != nil {
129+ t .Fatalf ("Create deployment failed: %v" , err )
130+ }
131+
132+ deployment2 , err := deploymentClient .DatabaseV2alpha ().ArangoDeployments (k8sNameSpace ).Create (deploymentTemplate2 )
133+ if err != nil {
134+ t .Fatalf ("Create deployment failed: %v" , err )
135+ }
136+
137+ // Wait for deployment to be ready
138+ deployment1 , err = waitUntilDeployment (deploymentClient , deploymentTemplate1 .GetName (), k8sNameSpace , deploymentIsReady ())
139+ if err != nil {
140+ t .Fatalf ("Deployment not running in time: %v" , err )
141+ }
142+
143+ deployment2 , err = waitUntilDeployment (deploymentClient , deploymentTemplate2 .GetName (), k8sNameSpace , deploymentIsReady ())
144+ if err != nil {
145+ t .Fatalf ("Deployment not running in time: %v" , err )
146+ }
147+
148+ // Create a database client
149+ ctx := context .Background ()
150+
151+ DBClient1 := mustNewArangodDatabaseClient (ctx , k8sClient , deployment1 , t )
152+ if err := waitUntilArangoDeploymentHealthy (deployment1 , DBClient1 , k8sClient , "" ); err != nil {
153+ t .Fatalf ("Deployment not healthy in time: %v" , err )
154+ }
155+ DBClient2 := mustNewArangodDatabaseClient (ctx , k8sClient , deployment2 , t )
156+ if err := waitUntilArangoDeploymentHealthy (deployment2 , DBClient2 , k8sClient , "" ); err != nil {
157+ t .Fatalf ("Deployment not healthy in time: %v" , err )
158+ }
159+
160+ // Cleanup
161+ removeDeployment (deploymentClient , deploymentTemplate1 .GetName (), k8sNameSpace )
162+ removeDeployment (deploymentClient , deploymentTemplate2 .GetName (), k8sNameSpace )
163+ }
0 commit comments