github.com/gophercloud/gophercloud@v1.11.0/openstack/sharedfilesystems/v2/replicas/testing/request_test.go (about)

     1  package testing
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	"github.com/gophercloud/gophercloud"
     8  	"github.com/gophercloud/gophercloud/openstack/sharedfilesystems/v2/replicas"
     9  	th "github.com/gophercloud/gophercloud/testhelper"
    10  	"github.com/gophercloud/gophercloud/testhelper/client"
    11  )
    12  
    13  func getClient(microVersion string) *gophercloud.ServiceClient {
    14  	c := client.ServiceClient()
    15  	c.Type = "sharev2"
    16  	c.Microversion = microVersion
    17  	return c
    18  }
    19  
    20  func TestCreate(t *testing.T) {
    21  	th.SetupHTTP()
    22  	defer th.TeardownHTTP()
    23  
    24  	MockCreateResponse(t)
    25  
    26  	options := &replicas.CreateOpts{
    27  		ShareID:          "65a34695-f9e5-4eea-b48d-a0b261d82943",
    28  		AvailabilityZone: "zone-1",
    29  	}
    30  	actual, err := replicas.Create(getClient("2.11"), options).Extract()
    31  
    32  	expected := &replicas.Replica{
    33  		ID:               "3b9c33e8-b136-45c6-84a6-019c8db1d550",
    34  		ShareID:          "65a34695-f9e5-4eea-b48d-a0b261d82943",
    35  		AvailabilityZone: "zone-1",
    36  		Status:           "creating",
    37  		ShareNetworkID:   "ca0163c8-3941-4420-8b01-41517e19e366",
    38  		CreatedAt:        time.Date(2023, time.May, 26, 12, 32, 56, 391337000, time.UTC), //"2023-05-26T12:32:56.391337",
    39  	}
    40  
    41  	th.AssertNoErr(t, err)
    42  	th.AssertDeepEquals(t, expected, actual)
    43  }
    44  
    45  func TestDelete(t *testing.T) {
    46  	th.SetupHTTP()
    47  	defer th.TeardownHTTP()
    48  
    49  	MockDeleteResponse(t)
    50  
    51  	result := replicas.Delete(getClient("2.11"), replicaID)
    52  	th.AssertNoErr(t, result.Err)
    53  }
    54  
    55  func TestForceDeleteSuccess(t *testing.T) {
    56  	th.SetupHTTP()
    57  	defer th.TeardownHTTP()
    58  
    59  	MockForceDeleteResponse(t)
    60  
    61  	err := replicas.ForceDelete(getClient("2.11"), replicaID).ExtractErr()
    62  	th.AssertNoErr(t, err)
    63  }
    64  
    65  func TestGet(t *testing.T) {
    66  	th.SetupHTTP()
    67  	defer th.TeardownHTTP()
    68  
    69  	MockGetResponse(t)
    70  
    71  	actual, err := replicas.Get(getClient("2.11"), replicaID).Extract()
    72  
    73  	expected := &replicas.Replica{
    74  		AvailabilityZone: "zone-1",
    75  		ShareNetworkID:   "ca0163c8-3941-4420-8b01-41517e19e366",
    76  		ShareServerID:    "5ccc1b0c-334a-4e46-81e6-b52e03223060",
    77  		ShareID:          "65a34695-f9e5-4eea-b48d-a0b261d82943",
    78  		ID:               replicaID,
    79  		Status:           "available",
    80  		State:            "active",
    81  		CreatedAt:        time.Date(2023, time.May, 26, 12, 32, 56, 391337000, time.UTC),
    82  		UpdatedAt:        time.Date(2023, time.May, 26, 12, 33, 28, 265716000, time.UTC),
    83  	}
    84  
    85  	th.AssertNoErr(t, err)
    86  	th.AssertDeepEquals(t, expected, actual)
    87  }
    88  
    89  func TestList(t *testing.T) {
    90  	th.SetupHTTP()
    91  	defer th.TeardownHTTP()
    92  
    93  	MockListResponse(t)
    94  
    95  	listOpts := &replicas.ListOpts{
    96  		ShareID: "65a34695-f9e5-4eea-b48d-a0b261d82943",
    97  	}
    98  	allPages, err := replicas.List(getClient("2.11"), listOpts).AllPages()
    99  	th.AssertNoErr(t, err)
   100  
   101  	actual, err := replicas.ExtractReplicas(allPages)
   102  	th.AssertNoErr(t, err)
   103  
   104  	expected := []replicas.Replica{
   105  		{
   106  			ID:      replicaID,
   107  			ShareID: "65a34695-f9e5-4eea-b48d-a0b261d82943",
   108  			Status:  "available",
   109  			State:   "active",
   110  		},
   111  		{
   112  			ID:      "4b70c2e2-eec7-4699-880d-4da9051ca162",
   113  			ShareID: "65a34695-f9e5-4eea-b48d-a0b261d82943",
   114  			Status:  "available",
   115  			State:   "out_of_sync",
   116  		},
   117  		{
   118  			ID:      "920bb037-bdd7-48a1-98f0-1aa1787ca3eb",
   119  			ShareID: "65a34695-f9e5-4eea-b48d-a0b261d82943",
   120  			Status:  "available",
   121  			State:   "in_sync",
   122  		},
   123  	}
   124  
   125  	th.AssertDeepEquals(t, expected, actual)
   126  }
   127  
   128  func TestListDetail(t *testing.T) {
   129  	th.SetupHTTP()
   130  	defer th.TeardownHTTP()
   131  
   132  	MockListDetailResponse(t)
   133  
   134  	listOpts := &replicas.ListOpts{
   135  		ShareID: "65a34695-f9e5-4eea-b48d-a0b261d82943",
   136  	}
   137  	allPages, err := replicas.ListDetail(getClient("2.11"), listOpts).AllPages()
   138  	th.AssertNoErr(t, err)
   139  
   140  	actual, err := replicas.ExtractReplicas(allPages)
   141  	th.AssertNoErr(t, err)
   142  
   143  	expected := []replicas.Replica{
   144  		{
   145  			AvailabilityZone: "zone-1",
   146  			ShareNetworkID:   "ca0163c8-3941-4420-8b01-41517e19e366",
   147  			ShareServerID:    "5ccc1b0c-334a-4e46-81e6-b52e03223060",
   148  			ShareID:          "65a34695-f9e5-4eea-b48d-a0b261d82943",
   149  			ID:               replicaID,
   150  			Status:           "available",
   151  			State:            "active",
   152  			CreatedAt:        time.Date(2023, time.May, 26, 12, 32, 56, 391337000, time.UTC),
   153  			UpdatedAt:        time.Date(2023, time.May, 26, 12, 33, 28, 265716000, time.UTC),
   154  		},
   155  		{
   156  			AvailabilityZone: "zone-2",
   157  			ShareNetworkID:   "ca0163c8-3941-4420-8b01-41517e19e366",
   158  			ShareServerID:    "81aa586e-3a03-4f92-98bd-807d87a61c1a",
   159  			ShareID:          "65a34695-f9e5-4eea-b48d-a0b261d82943",
   160  			ID:               "4b70c2e2-eec7-4699-880d-4da9051ca162",
   161  			Status:           "available",
   162  			State:            "out_of_sync",
   163  			CreatedAt:        time.Date(2023, time.May, 26, 11, 59, 38, 313089000, time.UTC),
   164  			UpdatedAt:        time.Date(2023, time.May, 26, 12, 00, 04, 321081000, time.UTC),
   165  		},
   166  		{
   167  			AvailabilityZone: "zone-1",
   168  			ShareNetworkID:   "ca0163c8-3941-4420-8b01-41517e19e366",
   169  			ShareServerID:    "b87ea601-7d4c-47f3-8956-6876b7a6b6db",
   170  			ShareID:          "65a34695-f9e5-4eea-b48d-a0b261d82943",
   171  			ID:               "920bb037-bdd7-48a1-98f0-1aa1787ca3eb",
   172  			Status:           "available",
   173  			State:            "in_sync",
   174  			CreatedAt:        time.Date(2023, time.May, 26, 12, 32, 45, 751834000, time.UTC),
   175  			UpdatedAt:        time.Date(2023, time.May, 26, 12, 36, 04, 110328000, time.UTC),
   176  		},
   177  	}
   178  
   179  	th.AssertDeepEquals(t, expected, actual)
   180  }
   181  
   182  func TestListExportLocationsSuccess(t *testing.T) {
   183  	th.SetupHTTP()
   184  	defer th.TeardownHTTP()
   185  
   186  	MockListExportLocationsResponse(t)
   187  
   188  	actual, err := replicas.ListExportLocations(getClient("2.47"), replicaID).Extract()
   189  
   190  	expected := []replicas.ExportLocation{
   191  		{
   192  			ID:               "3fc02d3c-da47-42a2-88b8-2d48f8c276bd",
   193  			Path:             "192.168.1.123:/var/lib/manila/mnt/share-3b9c33e8-b136-45c6-84a6-019c8db1d550",
   194  			Preferred:        true,
   195  			State:            "active",
   196  			AvailabilityZone: "zone-1",
   197  		},
   198  		{
   199  			ID:               "ae73e762-e8b9-4aad-aad3-23afb7cd6825",
   200  			Path:             "192.168.1.124:/var/lib/manila/mnt/share-3b9c33e8-b136-45c6-84a6-019c8db1d550",
   201  			Preferred:        false,
   202  			State:            "active",
   203  			AvailabilityZone: "zone-1",
   204  		},
   205  	}
   206  
   207  	th.AssertNoErr(t, err)
   208  	th.AssertDeepEquals(t, expected, actual)
   209  }
   210  
   211  func TestGetExportLocationSuccess(t *testing.T) {
   212  	th.SetupHTTP()
   213  	defer th.TeardownHTTP()
   214  
   215  	MockGetExportLocationResponse(t)
   216  
   217  	s, err := replicas.GetExportLocation(getClient("2.47"), replicaID, "ae73e762-e8b9-4aad-aad3-23afb7cd6825").Extract()
   218  
   219  	th.AssertNoErr(t, err)
   220  	th.AssertDeepEquals(t, s, &replicas.ExportLocation{
   221  		Path:             "192.168.1.124:/var/lib/manila/mnt/share-3b9c33e8-b136-45c6-84a6-019c8db1d550",
   222  		ID:               "ae73e762-e8b9-4aad-aad3-23afb7cd6825",
   223  		Preferred:        false,
   224  		State:            "active",
   225  		AvailabilityZone: "zone-1",
   226  		CreatedAt:        time.Date(2023, time.May, 26, 12, 44, 33, 987960000, time.UTC),
   227  		UpdatedAt:        time.Date(2023, time.May, 26, 12, 44, 33, 958363000, time.UTC),
   228  	})
   229  }
   230  
   231  func TestResetStatusSuccess(t *testing.T) {
   232  	th.SetupHTTP()
   233  	defer th.TeardownHTTP()
   234  
   235  	MockResetStatusResponse(t)
   236  
   237  	err := replicas.ResetStatus(getClient("2.11"), replicaID, &replicas.ResetStatusOpts{Status: "available"}).ExtractErr()
   238  	th.AssertNoErr(t, err)
   239  }
   240  
   241  func TestResetStateSuccess(t *testing.T) {
   242  	th.SetupHTTP()
   243  	defer th.TeardownHTTP()
   244  
   245  	MockResetStateResponse(t)
   246  
   247  	err := replicas.ResetState(getClient("2.11"), replicaID, &replicas.ResetStateOpts{State: "active"}).ExtractErr()
   248  	th.AssertNoErr(t, err)
   249  }
   250  
   251  func TestResyncSuccess(t *testing.T) {
   252  	th.SetupHTTP()
   253  	defer th.TeardownHTTP()
   254  
   255  	MockResyncResponse(t)
   256  
   257  	err := replicas.Resync(getClient("2.11"), replicaID).ExtractErr()
   258  	th.AssertNoErr(t, err)
   259  }
   260  
   261  func TestPromoteSuccess(t *testing.T) {
   262  	th.SetupHTTP()
   263  	defer th.TeardownHTTP()
   264  
   265  	MockPromoteResponse(t)
   266  
   267  	err := replicas.Promote(getClient("2.11"), replicaID, &replicas.PromoteOpts{QuiesceWaitTime: 30}).ExtractErr()
   268  	th.AssertNoErr(t, err)
   269  }