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