@@ -19,6 +19,7 @@ import (
19
19
"errors"
20
20
"fmt"
21
21
"reflect"
22
+ "strconv"
22
23
"strings"
23
24
"testing"
24
25
)
@@ -501,6 +502,101 @@ func TestClientVSwitchSetBridgeProtocolsOK(t *testing.T) {
501
502
}
502
503
}
503
504
505
+ func TestClientVSwitchGetPortOptionsOK (t * testing.T ) {
506
+ const port = "bond0"
507
+ vlanModeStr := "trunk"
508
+ vlanMode := & vlanModeStr
509
+ trunk := []int {1 , 2 , 3 , 4 , 5 }
510
+
511
+ c := testClient ([]OptionFunc {Timeout (1 )}, func (cmd string , args ... string ) ([]byte , error ) {
512
+ if want , got := "ovs-vsctl" , cmd ; want != got {
513
+ t .Fatalf ("incorrect command:\n - want: %v\n - got: %v" ,
514
+ want , got )
515
+ }
516
+
517
+ wantArgs := []string {
518
+ "--timeout=1" ,
519
+ "--format=json" ,
520
+ "get" ,
521
+ "port" ,
522
+ port ,
523
+ "tag" ,
524
+ "vlan_mode" ,
525
+ "trunk" ,
526
+ }
527
+ if want , got := wantArgs , args ; ! reflect .DeepEqual (want , got ) {
528
+ t .Fatalf ("incorrect arguments\n - want: %v\n - got: %v" ,
529
+ want , got )
530
+ }
531
+
532
+ // Make the return value with newline to simulate
533
+ // the ovs-vsctl output.
534
+ data := "[]\n "
535
+ data += fmt .Sprintf ("%s\n " , vlanModeStr )
536
+ t , err := json .Marshal (& trunk )
537
+ if err != nil {
538
+ return nil , err
539
+ }
540
+ data += fmt .Sprintf ("%s\n " , string (t ))
541
+ return []byte (fmt .Sprintln (data )), err
542
+ })
543
+
544
+ got , err := c .VSwitch .Get .Port (port )
545
+ if err != nil {
546
+ t .Fatalf ("unexpected error for Client.VSwitch.Get.Port: %v" , err )
547
+ }
548
+ if got .Tag != nil {
549
+ t .Fatalf ("unexpected tag for Client.VSwitch.Get.Port: %v" , * got .Tag )
550
+ }
551
+ if ! reflect .DeepEqual (* got .VLANMode , * vlanMode ) {
552
+ t .Fatalf ("unexpected vlan_mode for Client.VSwitch.Get.Port: %v" , * got .VLANMode )
553
+ }
554
+ if ! reflect .DeepEqual (got .Trunk , trunk ) {
555
+ t .Fatalf ("unexpected trunk for Client.VSwitch.Get.Port: %v" , got .Trunk )
556
+ }
557
+ }
558
+
559
+ func TestClientVSwitchSetPortOptionsOK (t * testing.T ) {
560
+ const port = "bond0"
561
+ vlanModeStr := "trunk"
562
+ vlanMode := & vlanModeStr
563
+ trunk := []int {1 , 2 , 3 , 4 , 5 }
564
+
565
+ c := testClient ([]OptionFunc {Timeout (1 )}, func (cmd string , args ... string ) ([]byte , error ) {
566
+ if want , got := "ovs-vsctl" , cmd ; want != got {
567
+ t .Fatalf ("incorrect command:\n - want: %v\n - got: %v" ,
568
+ want , got )
569
+ }
570
+
571
+ var trunkSequence string
572
+ for _ , trunk := range trunk {
573
+ trunkSequence += fmt .Sprintf ("%s," , strconv .Itoa (int (trunk )))
574
+ }
575
+ wantArgs := []string {
576
+ "--timeout=1" ,
577
+ "set" ,
578
+ "port" ,
579
+ port ,
580
+ fmt .Sprintf ("vlan_mode=%p" , vlanMode ),
581
+ fmt .Sprintf ("trunk=%s" , trunkSequence ),
582
+ }
583
+ if want , got := wantArgs , args ; ! reflect .DeepEqual (want , got ) {
584
+ t .Fatalf ("incorrect arguments\n - want: %v\n - got: %v" ,
585
+ want , got )
586
+ }
587
+
588
+ return nil , nil
589
+ })
590
+
591
+ err := c .VSwitch .Set .Port (port , PortOptions {
592
+ VLANMode : vlanMode ,
593
+ Trunk : trunk ,
594
+ })
595
+ if err != nil {
596
+ t .Fatalf ("unexpected error for Client.VSwitch.Set.Bridge: %v" , err )
597
+ }
598
+ }
599
+
504
600
func TestClientVSwitchSetInterfaceTypeOK (t * testing.T ) {
505
601
ifi := "bond0"
506
602
ifiType := InterfaceTypePatch
0 commit comments