| /* |
| Copyright 2024. |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| */ |
| |
| package controller |
| |
| import ( |
| "context" |
| |
| . "github.com/onsi/ginkgo/v2" |
| . "github.com/onsi/gomega" |
| "k8s.io/apimachinery/pkg/api/errors" |
| "k8s.io/apimachinery/pkg/types" |
| "sigs.k8s.io/controller-runtime/pkg/reconcile" |
| |
| metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" |
| |
| iotdbv1 "github.com/apache/iotdb-operator/api/v1" |
| ) |
| |
| var _ = Describe("DataNode Controller", func() { |
| Context("When reconciling a resource", func() { |
| const resourceName = "test-resource" |
| |
| ctx := context.Background() |
| |
| typeNamespacedName := types.NamespacedName{ |
| Name: resourceName, |
| Namespace: "default", // TODO(user):Modify as needed |
| } |
| datanode := &iotdbv1.DataNode{} |
| |
| BeforeEach(func() { |
| By("creating the custom resource for the Kind DataNode") |
| err := k8sClient.Get(ctx, typeNamespacedName, datanode) |
| if err != nil && errors.IsNotFound(err) { |
| resource := &iotdbv1.DataNode{ |
| ObjectMeta: metav1.ObjectMeta{ |
| Name: resourceName, |
| Namespace: "default", |
| }, |
| // TODO(user): Specify other spec details if needed. |
| } |
| Expect(k8sClient.Create(ctx, resource)).To(Succeed()) |
| } |
| }) |
| |
| AfterEach(func() { |
| // TODO(user): Cleanup logic after each test, like removing the resource instance. |
| resource := &iotdbv1.DataNode{} |
| err := k8sClient.Get(ctx, typeNamespacedName, resource) |
| Expect(err).NotTo(HaveOccurred()) |
| |
| By("Cleanup the specific resource instance DataNode") |
| Expect(k8sClient.Delete(ctx, resource)).To(Succeed()) |
| }) |
| It("should successfully reconcile the resource", func() { |
| By("Reconciling the created resource") |
| controllerReconciler := &DataNodeReconciler{ |
| Client: k8sClient, |
| Scheme: k8sClient.Scheme(), |
| } |
| |
| _, err := controllerReconciler.Reconcile(ctx, reconcile.Request{ |
| NamespacedName: typeNamespacedName, |
| }) |
| Expect(err).NotTo(HaveOccurred()) |
| // TODO(user): Add more specific assertions depending on your controller's reconciliation logic. |
| // Example: If you expect a certain status condition after reconciliation, verify it here. |
| }) |
| }) |
| }) |