github.com/vnpaycloud-console/gophercloud/v2@v2.0.5/internal/acceptance/openstack/networking/v2/extensions/mtu/mtu_test.go (about) 1 //go:build acceptance || networking || mtu 2 3 package mtu 4 5 import ( 6 "context" 7 "testing" 8 9 "github.com/vnpaycloud-console/gophercloud/v2/internal/acceptance/clients" 10 networking "github.com/vnpaycloud-console/gophercloud/v2/internal/acceptance/openstack/networking/v2" 11 "github.com/vnpaycloud-console/gophercloud/v2/internal/acceptance/tools" 12 "github.com/vnpaycloud-console/gophercloud/v2/openstack/common/extensions" 13 "github.com/vnpaycloud-console/gophercloud/v2/openstack/networking/v2/extensions/mtu" 14 "github.com/vnpaycloud-console/gophercloud/v2/openstack/networking/v2/networks" 15 "github.com/vnpaycloud-console/gophercloud/v2/pagination" 16 th "github.com/vnpaycloud-console/gophercloud/v2/testhelper" 17 ) 18 19 func TestMTUNetworkCRUDL(t *testing.T) { 20 clients.RequireAdmin(t) 21 22 client, err := clients.NewNetworkV2Client() 23 th.AssertNoErr(t, err) 24 25 // Skip these tests if we don't have the required extension 26 networking.RequireNeutronExtension(t, client, "net-mtu") 27 28 mtuWritable, _ := extensions.Get(context.TODO(), client, "net-mtu-writable").Extract() 29 tools.PrintResource(t, mtuWritable) 30 31 // Create Network 32 var networkMTU int 33 if mtuWritable != nil { 34 networkMTU = 1440 35 } 36 network, err := CreateNetworkWithMTU(t, client, &networkMTU) 37 th.AssertNoErr(t, err) 38 defer networking.DeleteNetwork(t, client, network.ID) 39 40 // MTU filtering is supported only in read-only MTU extension 41 // https://bugs.launchpad.net/neutron/+bug/1818317 42 if mtuWritable == nil { 43 // List network successfully 44 var listOpts networks.ListOptsBuilder 45 listOpts = mtu.ListOptsExt{ 46 ListOptsBuilder: networks.ListOpts{}, 47 MTU: networkMTU, 48 } 49 var listedNetworks []NetworkMTU 50 i := 0 51 err = networks.List(client, listOpts).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { 52 i++ 53 err := networks.ExtractNetworksInto(page, &listedNetworks) 54 if err != nil { 55 t.Errorf("Failed to extract networks: %v", err) 56 return false, err 57 } 58 59 tools.PrintResource(t, listedNetworks) 60 61 th.AssertEquals(t, 1, len(listedNetworks)) 62 th.CheckDeepEquals(t, *network, listedNetworks[0]) 63 64 return true, nil 65 }) 66 th.AssertNoErr(t, err) 67 th.AssertEquals(t, 1, i) 68 69 // List network unsuccessfully 70 listOpts = mtu.ListOptsExt{ 71 ListOptsBuilder: networks.ListOpts{}, 72 MTU: 1, 73 } 74 i = 0 75 err = networks.List(client, listOpts).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { 76 i++ 77 err := networks.ExtractNetworksInto(page, &listedNetworks) 78 if err != nil { 79 t.Errorf("Failed to extract networks: %v", err) 80 return false, err 81 } 82 83 tools.PrintResource(t, listedNetworks) 84 85 th.AssertEquals(t, 1, len(listedNetworks)) 86 th.CheckDeepEquals(t, *network, listedNetworks[0]) 87 88 return true, nil 89 }) 90 th.AssertNoErr(t, err) 91 th.AssertEquals(t, 0, i) 92 } 93 94 // Get network 95 var getNetwork NetworkMTU 96 err = networks.Get(context.TODO(), client, network.ID).ExtractInto(&getNetwork) 97 th.AssertNoErr(t, err) 98 99 tools.PrintResource(t, getNetwork) 100 th.AssertDeepEquals(t, *network, getNetwork) 101 102 if mtuWritable != nil { 103 // Update network 104 newNetworkDescription := "" 105 newNetworkMTU := 1350 106 networkUpdateOpts := networks.UpdateOpts{ 107 Description: &newNetworkDescription, 108 } 109 updateOpts := mtu.UpdateOptsExt{ 110 UpdateOptsBuilder: networkUpdateOpts, 111 MTU: newNetworkMTU, 112 } 113 114 var newNetwork NetworkMTU 115 err = networks.Update(context.TODO(), client, network.ID, updateOpts).ExtractInto(&newNetwork) 116 th.AssertNoErr(t, err) 117 118 tools.PrintResource(t, newNetwork) 119 th.AssertEquals(t, newNetwork.Description, newNetworkDescription) 120 th.AssertEquals(t, newNetwork.MTU, newNetworkMTU) 121 122 // Get updated network 123 var getNewNetwork NetworkMTU 124 err = networks.Get(context.TODO(), client, network.ID).ExtractInto(&getNewNetwork) 125 th.AssertNoErr(t, err) 126 127 tools.PrintResource(t, getNewNetwork) 128 th.AssertEquals(t, getNewNetwork.Description, newNetworkDescription) 129 th.AssertEquals(t, getNewNetwork.MTU, newNetworkMTU) 130 } 131 }