...

Source file src/edge-infra.dev/pkg/edge/datasync/cushion/resource_migration_test.go

Documentation: edge-infra.dev/pkg/edge/datasync/cushion

     1  package cushion
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	corev1 "k8s.io/api/core/v1"
     8  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     9  	"k8s.io/apimachinery/pkg/runtime"
    10  	"k8s.io/apimachinery/pkg/types"
    11  	utilruntime "k8s.io/apimachinery/pkg/util/runtime"
    12  	"sigs.k8s.io/controller-runtime/pkg/client"
    13  	"sigs.k8s.io/controller-runtime/pkg/client/fake"
    14  
    15  	dsapi "edge-infra.dev/pkg/edge/datasync/apis/v1alpha1"
    16  	"edge-infra.dev/pkg/edge/datasync/couchdb"
    17  )
    18  
    19  type namePair struct {
    20  	DBName    string
    21  	K8sDBName string
    22  }
    23  
    24  var (
    25  	namePairs = []namePair{
    26  		{"db_1", "db-1"},
    27  		{"DB-2", "db-2"},
    28  	}
    29  )
    30  
    31  func TestResourceMigration(t *testing.T) {
    32  	ctx := context.Background()
    33  	scheme := runtime.NewScheme()
    34  	utilruntime.Must(corev1.AddToScheme(scheme))
    35  	utilruntime.Must(dsapi.AddToScheme(scheme))
    36  
    37  	cl := fake.NewClientBuilder().
    38  		WithScheme(scheme).
    39  		WithRuntimeObjects(&corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: cushionNamespace}}).
    40  		Build()
    41  
    42  	for _, np := range namePairs {
    43  		nn := types.NamespacedName{Name: np.K8sDBName, Namespace: cushionNamespace}
    44  		k8sDB := newCouchDBDatabase(nn, normalizeDBName(np.DBName), couchdb.Namespace)
    45  		k8sDB.SetLabels(map[string]string{}) // old k8sDB has no labels
    46  		err := cl.Create(ctx, k8sDB)
    47  		if err != nil {
    48  			t.Errorf("Error creating k8s db %s: %v", k8sDB.Name, err)
    49  		}
    50  	}
    51  
    52  	k8sDBs := &dsapi.CouchDBDatabaseList{}
    53  	err := cl.List(ctx, k8sDBs, &client.ListOptions{Namespace: cushionNamespace})
    54  	if err != nil {
    55  		t.Errorf("Error listing k8s dbs: %v", err)
    56  	}
    57  	err = migrateCushionK8sDBs(ctx, cl)
    58  	if err != nil {
    59  		t.Errorf("Error migrating cushion k8s dbs: %v", err)
    60  	}
    61  	for _, np := range namePairs {
    62  		k8sDB := &dsapi.CouchDBDatabase{}
    63  		nn := types.NamespacedName{Name: K8sDBName(np.DBName), Namespace: cushionNamespace}
    64  		err = cl.Get(ctx, nn, k8sDB)
    65  		if err != nil {
    66  			t.Errorf("Error getting k8s db %s: %s, %v", k8sDB.Name, nn, err)
    67  		}
    68  		if _, ok := k8sDB.Labels[componentLabel]; !ok {
    69  			t.Errorf("Component label not found on k8s db %s", k8sDB.Name)
    70  		}
    71  	}
    72  }
    73  

View as plain text