Merge pull request #15707 from eparis/no-test-godeps
Remove all _test.go files from Godeps
This commit is contained in:
21
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/example_simple_test.go
generated
vendored
21
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/example_simple_test.go
generated
vendored
@@ -1,21 +0,0 @@
|
|||||||
// Copyright (c) 2013 Phillip Bond
|
|
||||||
// Licensed under the MIT License
|
|
||||||
// see file LICENSE
|
|
||||||
|
|
||||||
package systemstat_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bitbucket.org/bertimus9/systemstat"
|
|
||||||
"fmt"
|
|
||||||
)
|
|
||||||
|
|
||||||
var sample systemstat.MemSample
|
|
||||||
|
|
||||||
// This example shows how easy it is to get memory information
|
|
||||||
func Example_simple() {
|
|
||||||
sample = systemstat.GetMemSample()
|
|
||||||
fmt.Println("Total available RAM in kb:", sample.MemTotal, "k total")
|
|
||||||
fmt.Println("Used RAM in kb:", sample.MemUsed, "k used")
|
|
||||||
fmt.Println("Free RAM in kb:", sample.MemFree, "k free")
|
|
||||||
fmt.Printf("The output is similar to, but somewhat different than:\n\ttop -n1 | grep Mem:\n")
|
|
||||||
}
|
|
||||||
35
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/systemstat_test.go
generated
vendored
35
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/systemstat_test.go
generated
vendored
@@ -1,35 +0,0 @@
|
|||||||
// Copyright (c) 2013 Phillip Bond
|
|
||||||
// Licensed under the MIT License
|
|
||||||
// see file LICENSE
|
|
||||||
|
|
||||||
package systemstat
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
msgFail = "%v method fails. Expects %v, returns %v"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestGetUptime(t *testing.T) {
|
|
||||||
s := getUptime("testdata/uptime")
|
|
||||||
if s.Uptime != 18667.53 {
|
|
||||||
t.Errorf(msgFail, "getUptime", "18667.53", s.Uptime)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestGetLoadAvgSample(t *testing.T) {
|
|
||||||
s := getLoadAvgSample("testdata/loadavg")
|
|
||||||
fmt.Printf("%#v\n", s)
|
|
||||||
if s.One != 0.1 {
|
|
||||||
t.Errorf(msgFail, "getUptime", "0.1", s.One)
|
|
||||||
}
|
|
||||||
if s.Five != 0.15 {
|
|
||||||
t.Errorf(msgFail, "getUptime", "0.15", s.Five)
|
|
||||||
}
|
|
||||||
if s.Fifteen != 0.14 {
|
|
||||||
t.Errorf(msgFail, "getUptime", "0.14", s.Fifteen)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
1
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/loadavg
generated
vendored
1
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/loadavg
generated
vendored
@@ -1 +0,0 @@
|
|||||||
0.10 0.15 0.14 1/538 27757
|
|
||||||
42
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/meminfo
generated
vendored
42
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/meminfo
generated
vendored
@@ -1,42 +0,0 @@
|
|||||||
MemTotal: 3768292 kB
|
|
||||||
MemFree: 831872 kB
|
|
||||||
Buffers: 153268 kB
|
|
||||||
Cached: 1622412 kB
|
|
||||||
SwapCached: 0 kB
|
|
||||||
Active: 1287508 kB
|
|
||||||
Inactive: 1297924 kB
|
|
||||||
Active(anon): 811384 kB
|
|
||||||
Inactive(anon): 227652 kB
|
|
||||||
Active(file): 476124 kB
|
|
||||||
Inactive(file): 1070272 kB
|
|
||||||
Unevictable: 196 kB
|
|
||||||
Mlocked: 196 kB
|
|
||||||
SwapTotal: 7907324 kB
|
|
||||||
SwapFree: 7907324 kB
|
|
||||||
Dirty: 228 kB
|
|
||||||
Writeback: 0 kB
|
|
||||||
AnonPages: 809948 kB
|
|
||||||
Mapped: 226452 kB
|
|
||||||
Shmem: 229284 kB
|
|
||||||
Slab: 210268 kB
|
|
||||||
SReclaimable: 148028 kB
|
|
||||||
SUnreclaim: 62240 kB
|
|
||||||
KernelStack: 4344 kB
|
|
||||||
PageTables: 37932 kB
|
|
||||||
NFS_Unstable: 0 kB
|
|
||||||
Bounce: 0 kB
|
|
||||||
WritebackTmp: 0 kB
|
|
||||||
CommitLimit: 9791468 kB
|
|
||||||
Committed_AS: 4513904 kB
|
|
||||||
VmallocTotal: 34359738367 kB
|
|
||||||
VmallocUsed: 368496 kB
|
|
||||||
VmallocChunk: 34359365956 kB
|
|
||||||
HardwareCorrupted: 0 kB
|
|
||||||
AnonHugePages: 0 kB
|
|
||||||
HugePages_Total: 0
|
|
||||||
HugePages_Free: 0
|
|
||||||
HugePages_Rsvd: 0
|
|
||||||
HugePages_Surp: 0
|
|
||||||
Hugepagesize: 2048 kB
|
|
||||||
DirectMap4k: 126592 kB
|
|
||||||
DirectMap2M: 3786752 kB
|
|
||||||
1
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat0
generated
vendored
1
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat0
generated
vendored
@@ -1 +0,0 @@
|
|||||||
28267 (go-top) S 28256 28256 27864 34816 28256 4202496 736 0 0 0 17470 14 0 0 20 0 7 0 1882735 274173952 571 18446744073709551615 4194368 5592552 140737466979680 139798064197344 4333379 0 0 0 2143420159 18446744073709551615 0 0 17 1 0 0 0 0 0
|
|
||||||
1
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat1
generated
vendored
1
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat1
generated
vendored
@@ -1 +0,0 @@
|
|||||||
28267 (go-top) R 28256 28256 27864 34816 28256 4202496 736 0 0 0 18773 16 0 0 20 0 7 0 1882735 274173952 571 18446744073709551615 4194368 5592552 140737466979680 139798065368712 4457862 0 0 0 2143420159 18446744073709551615 0 0 17 3 0 0 0 0 0
|
|
||||||
1
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat2
generated
vendored
1
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat2
generated
vendored
@@ -1 +0,0 @@
|
|||||||
28267 (go-top) R 28256 28256 27864 34816 28256 4202496 738 0 0 0 20618 18 0 0 20 0 7 0 1882735 274239488 571 18446744073709551615 4194368 5592552 140737466979680 140737466979424 4203351 0 0 0 2143420159 18446744073709551615 0 0 17 0 0 0 0 0 0
|
|
||||||
1
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat3
generated
vendored
1
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat3
generated
vendored
@@ -1 +0,0 @@
|
|||||||
28267 (go-top) R 28256 28256 27864 34816 28256 4202496 738 0 0 0 21641 19 0 0 20 0 7 0 1882735 274239488 571 18446744073709551615 4194368 5592552 140737466979680 139798065356424 4333379 0 0 0 2143420159 18446744073709551615 0 0 17 0 0 0 0 0 0
|
|
||||||
1
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat5
generated
vendored
1
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat5
generated
vendored
@@ -1 +0,0 @@
|
|||||||
28267 (go-top) R 28256 28256 27864 34816 28256 4202496 738 0 0 0 23722 21 0 0 20 0 7 0 1882735 274239488 571 18446744073709551615 4194368 5592552 140737466979680 139798065368712 4203351 0 0 0 2143420159 18446744073709551615 0 0 17 1 0 0 0 0 0
|
|
||||||
1
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat6
generated
vendored
1
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/procstat6
generated
vendored
@@ -1 +0,0 @@
|
|||||||
28267 (go-top) S 28256 28256 27864 34816 28256 4202496 741 0 0 0 25512 22 0 0 20 0 7 0 1882735 274305024 571 18446744073709551615 4194368 5592552 140737466979680 140737466979424 4333379 0 0 0 2143420159 18446744073709551615 0 0 17 2 0 0 0 0 0
|
|
||||||
12
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat
generated
vendored
12
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat
generated
vendored
@@ -1,12 +0,0 @@
|
|||||||
cpu 17313 714 8241 717906 1456 0 364 0 0 0
|
|
||||||
cpu0 6642 289 3526 173411 1162 0 355 0 0 0
|
|
||||||
cpu1 2193 88 1066 183608 86 0 2 0 0 0
|
|
||||||
cpu2 6463 217 2578 177186 141 0 4 0 0 0
|
|
||||||
cpu3 2014 118 1070 183699 65 0 2 0 0 0
|
|
||||||
intr 2312829 54 5540 0 0 0 0 0 0 1 24723 0 0 262321 0 0 0 733 0 0 34 0 0 0 141 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 124099 1226 121928 26 141511 145 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
ctxt 3689186
|
|
||||||
btime 1374442803
|
|
||||||
processes 27752
|
|
||||||
procs_running 1
|
|
||||||
procs_blocked 0
|
|
||||||
softirq 923034 6 201522 63 2716 129127 6 168304 89194 629 331467
|
|
||||||
12
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat2
generated
vendored
12
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat2
generated
vendored
@@ -1,12 +0,0 @@
|
|||||||
cpu 17328 714 8254 725156 1457 0 366 0 0 0
|
|
||||||
cpu0 6648 289 3531 175213 1164 0 356 0 0 0
|
|
||||||
cpu1 2198 88 1066 185425 86 0 2 0 0 0
|
|
||||||
cpu2 6466 217 2584 178996 141 0 4 0 0 0
|
|
||||||
cpu3 2015 118 1071 185521 65 0 2 0 0 0
|
|
||||||
intr 2316896 54 5562 0 0 0 0 0 0 1 24939 0 0 262321 0 0 0 733 0 0 34 0 0 0 141 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 124124 1226 123058 26 142249 145 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
ctxt 3694091
|
|
||||||
btime 1374442803
|
|
||||||
processes 27777
|
|
||||||
procs_running 1
|
|
||||||
procs_blocked 0
|
|
||||||
softirq 925673 6 202044 63 2716 129146 6 169061 89550 633 332448
|
|
||||||
12
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat3
generated
vendored
12
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat3
generated
vendored
@@ -1,12 +0,0 @@
|
|||||||
cpu 18661 714 8322 736828 1463 0 367 0 0 0
|
|
||||||
cpu0 6715 289 3555 178374 1170 0 358 0 0 0
|
|
||||||
cpu1 3134 88 1080 187754 86 0 2 0 0 0
|
|
||||||
cpu2 6769 217 2603 181942 141 0 4 0 0 0
|
|
||||||
cpu3 2042 118 1082 188756 65 0 2 0 0 0
|
|
||||||
intr 2346985 54 5673 0 0 0 0 0 0 1 25358 0 0 269347 0 0 0 733 0 0 34 0 0 0 141 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 124230 1226 125412 26 143648 145 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
ctxt 3722386
|
|
||||||
btime 1374442803
|
|
||||||
processes 27939
|
|
||||||
procs_running 2
|
|
||||||
procs_blocked 0
|
|
||||||
softirq 939514 6 208124 63 2720 129245 6 170565 91355 637 336793
|
|
||||||
12
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat4
generated
vendored
12
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat4
generated
vendored
@@ -1,12 +0,0 @@
|
|||||||
cpu 24106 714 8436 758512 1472 0 372 0 0 0
|
|
||||||
cpu0 7831 289 3602 183989 1177 0 361 0 0 0
|
|
||||||
cpu1 5075 88 1096 192627 86 0 3 0 0 0
|
|
||||||
cpu2 7667 217 2640 187814 142 0 5 0 0 0
|
|
||||||
cpu3 3531 118 1096 194081 66 0 2 0 0 0
|
|
||||||
intr 2425351 54 5880 0 0 0 0 0 0 1 26243 0 0 282247 0 0 0 733 0 0 34 0 0 0 141 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 124425 1226 130129 26 146647 145 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
ctxt 3788723
|
|
||||||
btime 1374442803
|
|
||||||
processes 28152
|
|
||||||
procs_running 1
|
|
||||||
procs_blocked 0
|
|
||||||
softirq 975972 6 226788 63 2738 129419 6 173753 98111 659 344429
|
|
||||||
12
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat5
generated
vendored
12
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat5
generated
vendored
@@ -1,12 +0,0 @@
|
|||||||
cpu 25797 714 8461 761860 1472 0 375 0 0 0
|
|
||||||
cpu0 8406 289 3611 184664 1177 0 364 0 0 0
|
|
||||||
cpu1 5391 88 1102 193577 86 0 3 0 0 0
|
|
||||||
cpu2 8115 217 2646 188622 142 0 5 0 0 0
|
|
||||||
cpu3 3884 118 1100 194996 66 0 2 0 0 0
|
|
||||||
intr 2446830 54 5896 0 0 0 0 0 0 1 26399 0 0 286933 0 0 0 733 0 0 34 0 0 0 141 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 124455 1226 131103 26 147182 145 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
ctxt 3804378
|
|
||||||
btime 1374442803
|
|
||||||
processes 28177
|
|
||||||
procs_running 3
|
|
||||||
procs_blocked 0
|
|
||||||
softirq 985047 6 231802 63 2740 129448 6 174303 100182 665 345832
|
|
||||||
12
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat6
generated
vendored
12
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat6
generated
vendored
@@ -1,12 +0,0 @@
|
|||||||
cpu 31643 714 8507 766175 1477 0 377 0 0 0
|
|
||||||
cpu0 9865 289 3628 185726 1182 0 366 0 0 0
|
|
||||||
cpu1 6867 88 1110 194656 86 0 3 0 0 0
|
|
||||||
cpu2 9658 217 2661 189610 142 0 5 0 0 0
|
|
||||||
cpu3 5252 118 1108 196181 66 0 2 0 0 0
|
|
||||||
intr 2492898 54 5942 0 0 0 0 0 0 1 26734 0 0 291667 0 0 0 733 0 0 34 0 0 0 141 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 124574 1226 133046 26 148246 145 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
ctxt 3836141
|
|
||||||
btime 1374442803
|
|
||||||
processes 28244
|
|
||||||
procs_running 5
|
|
||||||
procs_blocked 0
|
|
||||||
softirq 1009821 6 247713 63 2748 129565 6 175417 104452 670 349181
|
|
||||||
12
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat7
generated
vendored
12
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/stat7
generated
vendored
@@ -1,12 +0,0 @@
|
|||||||
cpu 32813 714 8513 766223 1477 0 377 0 0 0
|
|
||||||
cpu0 10159 289 3628 185737 1182 0 367 0 0 0
|
|
||||||
cpu1 7162 88 1110 194668 86 0 3 0 0 0
|
|
||||||
cpu2 9945 217 2664 189623 142 0 5 0 0 0
|
|
||||||
cpu3 5546 118 1109 196193 66 0 2 0 0 0
|
|
||||||
intr 2498999 54 5954 0 0 0 0 0 0 1 26770 0 0 291667 0 0 0 733 0 0 34 0 0 0 141 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 124585 1226 133246 26 148377 145 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
ctxt 3839591
|
|
||||||
btime 1374442803
|
|
||||||
processes 28269
|
|
||||||
procs_running 5
|
|
||||||
procs_blocked 0
|
|
||||||
softirq 1014220 6 250668 63 2748 129576 6 175558 105038 670 349887
|
|
||||||
1
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/uptime
generated
vendored
1
Godeps/_workspace/src/bitbucket.org/bertimus9/systemstat/testdata/uptime
generated
vendored
@@ -1 +0,0 @@
|
|||||||
18667.53 7140.26
|
|
||||||
33
Godeps/_workspace/src/bitbucket.org/ww/goautoneg/autoneg_test.go
generated
vendored
33
Godeps/_workspace/src/bitbucket.org/ww/goautoneg/autoneg_test.go
generated
vendored
@@ -1,33 +0,0 @@
|
|||||||
package goautoneg
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
var chrome = "application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"
|
|
||||||
|
|
||||||
func TestParseAccept(t *testing.T) {
|
|
||||||
alternatives := []string{"text/html", "image/png"}
|
|
||||||
content_type := Negotiate(chrome, alternatives)
|
|
||||||
if content_type != "image/png" {
|
|
||||||
t.Errorf("got %s expected image/png", content_type)
|
|
||||||
}
|
|
||||||
|
|
||||||
alternatives = []string{"text/html", "text/plain", "text/n3"}
|
|
||||||
content_type = Negotiate(chrome, alternatives)
|
|
||||||
if content_type != "text/html" {
|
|
||||||
t.Errorf("got %s expected text/html", content_type)
|
|
||||||
}
|
|
||||||
|
|
||||||
alternatives = []string{"text/n3", "text/plain"}
|
|
||||||
content_type = Negotiate(chrome, alternatives)
|
|
||||||
if content_type != "text/plain" {
|
|
||||||
t.Errorf("got %s expected text/plain", content_type)
|
|
||||||
}
|
|
||||||
|
|
||||||
alternatives = []string{"text/n3", "application/rdf+xml"}
|
|
||||||
content_type = Negotiate(chrome, alternatives)
|
|
||||||
if content_type != "text/n3" {
|
|
||||||
t.Errorf("got %s expected text/n3", content_type)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
316
Godeps/_workspace/src/github.com/ClusterHQ/flocker-go/client_test.go
generated
vendored
316
Godeps/_workspace/src/github.com/ClusterHQ/flocker-go/client_test.go
generated
vendored
@@ -1,316 +0,0 @@
|
|||||||
package flocker
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
|
||||||
"io/ioutil"
|
|
||||||
"net/http"
|
|
||||||
"net/http/httptest"
|
|
||||||
"net/url"
|
|
||||||
"strconv"
|
|
||||||
"strings"
|
|
||||||
"testing"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/volume"
|
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestMaximumSizeIs1024Multiple(t *testing.T) {
|
|
||||||
assert := assert.New(t)
|
|
||||||
|
|
||||||
n, err := strconv.Atoi(string(defaultVolumeSize))
|
|
||||||
assert.NoError(err)
|
|
||||||
assert.Equal(0, n%1024)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestPost(t *testing.T) {
|
|
||||||
const (
|
|
||||||
expectedPayload = "foobar"
|
|
||||||
expectedStatusCode = 418
|
|
||||||
)
|
|
||||||
|
|
||||||
assert := assert.New(t)
|
|
||||||
|
|
||||||
type payload struct {
|
|
||||||
Test string `json:"test"`
|
|
||||||
}
|
|
||||||
|
|
||||||
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
||||||
var result payload
|
|
||||||
err := json.NewDecoder(r.Body).Decode(&result)
|
|
||||||
assert.NoError(err)
|
|
||||||
assert.Equal(expectedPayload, result.Test)
|
|
||||||
w.WriteHeader(expectedStatusCode)
|
|
||||||
}))
|
|
||||||
defer ts.Close()
|
|
||||||
|
|
||||||
c := Client{Client: &http.Client{}}
|
|
||||||
|
|
||||||
resp, err := c.post(ts.URL, payload{expectedPayload})
|
|
||||||
assert.NoError(err)
|
|
||||||
assert.Equal(expectedStatusCode, resp.StatusCode)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestGet(t *testing.T) {
|
|
||||||
const (
|
|
||||||
expectedStatusCode = 418
|
|
||||||
)
|
|
||||||
|
|
||||||
assert := assert.New(t)
|
|
||||||
|
|
||||||
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
||||||
w.WriteHeader(expectedStatusCode)
|
|
||||||
}))
|
|
||||||
defer ts.Close()
|
|
||||||
|
|
||||||
c := Client{Client: &http.Client{}}
|
|
||||||
|
|
||||||
resp, err := c.get(ts.URL)
|
|
||||||
assert.NoError(err)
|
|
||||||
assert.Equal(expectedStatusCode, resp.StatusCode)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestFindIDInConfigurationsPayload(t *testing.T) {
|
|
||||||
const (
|
|
||||||
searchedName = "search-for-this-name"
|
|
||||||
expected = "The-42-id"
|
|
||||||
)
|
|
||||||
assert := assert.New(t)
|
|
||||||
|
|
||||||
c := Client{}
|
|
||||||
|
|
||||||
payload := fmt.Sprintf(
|
|
||||||
`[{"dataset_id": "1-2-3", "metadata": {"name": "test"}}, {"dataset_id": "The-42-id", "metadata": {"name": "%s"}}]`,
|
|
||||||
searchedName,
|
|
||||||
)
|
|
||||||
|
|
||||||
id, err := c.findIDInConfigurationsPayload(
|
|
||||||
ioutil.NopCloser(bytes.NewBufferString(payload)), searchedName,
|
|
||||||
)
|
|
||||||
assert.NoError(err)
|
|
||||||
assert.Equal(expected, id)
|
|
||||||
|
|
||||||
id, err = c.findIDInConfigurationsPayload(
|
|
||||||
ioutil.NopCloser(bytes.NewBufferString(payload)), "it will not be found",
|
|
||||||
)
|
|
||||||
assert.Equal(errConfigurationNotFound, err)
|
|
||||||
|
|
||||||
id, err = c.findIDInConfigurationsPayload(
|
|
||||||
ioutil.NopCloser(bytes.NewBufferString("invalid { json")), "",
|
|
||||||
)
|
|
||||||
assert.Error(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestFindPrimaryUUID(t *testing.T) {
|
|
||||||
const expectedPrimary = "primary-uuid"
|
|
||||||
assert := assert.New(t)
|
|
||||||
|
|
||||||
var (
|
|
||||||
mockedHost = "127.0.0.1"
|
|
||||||
mockedPrimary = expectedPrimary
|
|
||||||
)
|
|
||||||
|
|
||||||
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
||||||
assert.Equal("GET", r.Method)
|
|
||||||
assert.Equal("/v1/state/nodes", r.URL.Path)
|
|
||||||
w.Write([]byte(fmt.Sprintf(`[{"host": "%s", "uuid": "%s"}]`, mockedHost, mockedPrimary)))
|
|
||||||
}))
|
|
||||||
|
|
||||||
host, port, err := getHostAndPortFromTestServer(ts)
|
|
||||||
assert.NoError(err)
|
|
||||||
|
|
||||||
c := newFlockerTestClient(host, port)
|
|
||||||
assert.NoError(err)
|
|
||||||
|
|
||||||
mockedPrimary = expectedPrimary
|
|
||||||
primary, err := c.GetPrimaryUUID()
|
|
||||||
assert.NoError(err)
|
|
||||||
assert.Equal(expectedPrimary, primary)
|
|
||||||
|
|
||||||
c.clientIP = "not.found"
|
|
||||||
_, err = c.GetPrimaryUUID()
|
|
||||||
assert.Equal(errStateNotFound, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestGetURL(t *testing.T) {
|
|
||||||
const (
|
|
||||||
expectedHost = "host"
|
|
||||||
expectedPort = 42
|
|
||||||
)
|
|
||||||
|
|
||||||
assert := assert.New(t)
|
|
||||||
|
|
||||||
c := newFlockerTestClient(expectedHost, expectedPort)
|
|
||||||
var expectedURL = fmt.Sprintf("%s://%s:%d/v1/test", c.schema, expectedHost, expectedPort)
|
|
||||||
|
|
||||||
url := c.getURL("test")
|
|
||||||
assert.Equal(expectedURL, url)
|
|
||||||
}
|
|
||||||
|
|
||||||
func getHostAndPortFromTestServer(ts *httptest.Server) (string, int, error) {
|
|
||||||
tsURL, err := url.Parse(ts.URL)
|
|
||||||
if err != nil {
|
|
||||||
return "", 0, err
|
|
||||||
}
|
|
||||||
|
|
||||||
hostSplits := strings.Split(tsURL.Host, ":")
|
|
||||||
|
|
||||||
port, err := strconv.Atoi(hostSplits[1])
|
|
||||||
if err != nil {
|
|
||||||
return "", 0, nil
|
|
||||||
}
|
|
||||||
return hostSplits[0], port, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func getVolumeConfig(host string, port int) volume.VolumeConfig {
|
|
||||||
return volume.VolumeConfig{
|
|
||||||
OtherAttributes: map[string]string{
|
|
||||||
"CONTROL_SERVICE_HOST": host,
|
|
||||||
"CONTROL_SERVICE_PORT": strconv.Itoa(port),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestHappyPathCreateDatasetFromNonExistent(t *testing.T) {
|
|
||||||
const (
|
|
||||||
expectedDatasetName = "dir"
|
|
||||||
expectedPrimary = "A-B-C-D"
|
|
||||||
expectedDatasetID = "datasetID"
|
|
||||||
)
|
|
||||||
expectedPath := fmt.Sprintf("/flocker/%s", expectedDatasetID)
|
|
||||||
|
|
||||||
assert := assert.New(t)
|
|
||||||
var (
|
|
||||||
numCalls int
|
|
||||||
err error
|
|
||||||
)
|
|
||||||
|
|
||||||
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
||||||
numCalls++
|
|
||||||
switch numCalls {
|
|
||||||
case 1:
|
|
||||||
assert.Equal("GET", r.Method)
|
|
||||||
assert.Equal("/v1/state/nodes", r.URL.Path)
|
|
||||||
w.Write([]byte(fmt.Sprintf(`[{"host": "127.0.0.1", "uuid": "%s"}]`, expectedPrimary)))
|
|
||||||
case 2:
|
|
||||||
assert.Equal("POST", r.Method)
|
|
||||||
assert.Equal("/v1/configuration/datasets", r.URL.Path)
|
|
||||||
|
|
||||||
var c configurationPayload
|
|
||||||
err := json.NewDecoder(r.Body).Decode(&c)
|
|
||||||
assert.NoError(err)
|
|
||||||
assert.Equal(expectedPrimary, c.Primary)
|
|
||||||
assert.Equal(defaultVolumeSize, c.MaximumSize)
|
|
||||||
assert.Equal(expectedDatasetName, c.Metadata.Name)
|
|
||||||
|
|
||||||
w.Write([]byte(fmt.Sprintf(`{"dataset_id": "%s"}`, expectedDatasetID)))
|
|
||||||
case 3:
|
|
||||||
assert.Equal("GET", r.Method)
|
|
||||||
assert.Equal("/v1/state/datasets", r.URL.Path)
|
|
||||||
w.Write([]byte(`[]`))
|
|
||||||
case 4:
|
|
||||||
assert.Equal("GET", r.Method)
|
|
||||||
assert.Equal("/v1/state/datasets", r.URL.Path)
|
|
||||||
w.Write([]byte(fmt.Sprintf(`[{"dataset_id": "%s", "path": "/flocker/%s"}]`, expectedDatasetID, expectedDatasetID)))
|
|
||||||
}
|
|
||||||
}))
|
|
||||||
|
|
||||||
host, port, err := getHostAndPortFromTestServer(ts)
|
|
||||||
assert.NoError(err)
|
|
||||||
|
|
||||||
c := newFlockerTestClient(host, port)
|
|
||||||
assert.NoError(err)
|
|
||||||
|
|
||||||
tickerWaitingForVolume = 1 * time.Millisecond // TODO: this is overriding globally
|
|
||||||
|
|
||||||
s, err := c.CreateDataset(expectedDatasetName)
|
|
||||||
assert.NoError(err)
|
|
||||||
assert.Equal(expectedPath, s.Path)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestCreateDatasetThatAlreadyExists(t *testing.T) {
|
|
||||||
const (
|
|
||||||
datasetName = "dir"
|
|
||||||
expectedPrimary = "A-B-C-D"
|
|
||||||
)
|
|
||||||
|
|
||||||
assert := assert.New(t)
|
|
||||||
var numCalls int
|
|
||||||
|
|
||||||
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
||||||
numCalls++
|
|
||||||
switch numCalls {
|
|
||||||
case 1:
|
|
||||||
assert.Equal("GET", r.Method)
|
|
||||||
assert.Equal("/v1/state/nodes", r.URL.Path)
|
|
||||||
w.Write([]byte(fmt.Sprintf(`[{"host": "127.0.0.1", "uuid": "%s"}]`, expectedPrimary)))
|
|
||||||
case 2:
|
|
||||||
assert.Equal("POST", r.Method)
|
|
||||||
assert.Equal("/v1/configuration/datasets", r.URL.Path)
|
|
||||||
w.WriteHeader(http.StatusConflict)
|
|
||||||
}
|
|
||||||
}))
|
|
||||||
|
|
||||||
host, port, err := getHostAndPortFromTestServer(ts)
|
|
||||||
assert.NoError(err)
|
|
||||||
|
|
||||||
c := newFlockerTestClient(host, port)
|
|
||||||
assert.NoError(err)
|
|
||||||
|
|
||||||
_, err = c.CreateDataset(datasetName)
|
|
||||||
assert.Equal(errVolumeAlreadyExists, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestUpdatePrimaryForDataset(t *testing.T) {
|
|
||||||
const (
|
|
||||||
dir = "dir"
|
|
||||||
expectedPrimary = "the-new-primary"
|
|
||||||
expectedDatasetID = "datasetID"
|
|
||||||
)
|
|
||||||
expectedURL := fmt.Sprintf("/v1/configuration/datasets/%s", expectedDatasetID)
|
|
||||||
|
|
||||||
assert := assert.New(t)
|
|
||||||
|
|
||||||
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
||||||
assert.Equal("POST", r.Method)
|
|
||||||
assert.Equal(expectedURL, r.URL.Path)
|
|
||||||
|
|
||||||
var c configurationPayload
|
|
||||||
err := json.NewDecoder(r.Body).Decode(&c)
|
|
||||||
assert.NoError(err)
|
|
||||||
|
|
||||||
assert.Equal(expectedPrimary, c.Primary)
|
|
||||||
|
|
||||||
w.Write([]byte(fmt.Sprintf(`{"dataset_id": "%s", "path": "just-to-double-check"}`, expectedDatasetID)))
|
|
||||||
}))
|
|
||||||
|
|
||||||
host, port, err := getHostAndPortFromTestServer(ts)
|
|
||||||
assert.NoError(err)
|
|
||||||
|
|
||||||
c := newFlockerTestClient(host, port)
|
|
||||||
assert.NoError(err)
|
|
||||||
|
|
||||||
s, err := c.UpdatePrimaryForDataset(expectedPrimary, expectedDatasetID)
|
|
||||||
assert.NoError(err)
|
|
||||||
assert.Equal(expectedDatasetID, s.DatasetID)
|
|
||||||
assert.NotEqual("", s.Path)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestInterfaceIsImplemented(t *testing.T) {
|
|
||||||
assert.Implements(t, (*Clientable)(nil), Client{})
|
|
||||||
}
|
|
||||||
|
|
||||||
func newFlockerTestClient(host string, port int) *Client {
|
|
||||||
return &Client{
|
|
||||||
Client: &http.Client{},
|
|
||||||
host: host,
|
|
||||||
port: port,
|
|
||||||
version: "v1",
|
|
||||||
schema: "http",
|
|
||||||
maximumSize: defaultVolumeSize,
|
|
||||||
clientIP: "127.0.0.1",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
53
Godeps/_workspace/src/github.com/Sirupsen/logrus/entry_test.go
generated
vendored
53
Godeps/_workspace/src/github.com/Sirupsen/logrus/entry_test.go
generated
vendored
@@ -1,53 +0,0 @@
|
|||||||
package logrus
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"fmt"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestEntryPanicln(t *testing.T) {
|
|
||||||
errBoom := fmt.Errorf("boom time")
|
|
||||||
|
|
||||||
defer func() {
|
|
||||||
p := recover()
|
|
||||||
assert.NotNil(t, p)
|
|
||||||
|
|
||||||
switch pVal := p.(type) {
|
|
||||||
case *Entry:
|
|
||||||
assert.Equal(t, "kaboom", pVal.Message)
|
|
||||||
assert.Equal(t, errBoom, pVal.Data["err"])
|
|
||||||
default:
|
|
||||||
t.Fatalf("want type *Entry, got %T: %#v", pVal, pVal)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
logger := New()
|
|
||||||
logger.Out = &bytes.Buffer{}
|
|
||||||
entry := NewEntry(logger)
|
|
||||||
entry.WithField("err", errBoom).Panicln("kaboom")
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestEntryPanicf(t *testing.T) {
|
|
||||||
errBoom := fmt.Errorf("boom again")
|
|
||||||
|
|
||||||
defer func() {
|
|
||||||
p := recover()
|
|
||||||
assert.NotNil(t, p)
|
|
||||||
|
|
||||||
switch pVal := p.(type) {
|
|
||||||
case *Entry:
|
|
||||||
assert.Equal(t, "kaboom true", pVal.Message)
|
|
||||||
assert.Equal(t, errBoom, pVal.Data["err"])
|
|
||||||
default:
|
|
||||||
t.Fatalf("want type *Entry, got %T: %#v", pVal, pVal)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
logger := New()
|
|
||||||
logger.Out = &bytes.Buffer{}
|
|
||||||
entry := NewEntry(logger)
|
|
||||||
entry.WithField("err", errBoom).Panicf("kaboom %v", true)
|
|
||||||
}
|
|
||||||
88
Godeps/_workspace/src/github.com/Sirupsen/logrus/formatter_bench_test.go
generated
vendored
88
Godeps/_workspace/src/github.com/Sirupsen/logrus/formatter_bench_test.go
generated
vendored
@@ -1,88 +0,0 @@
|
|||||||
package logrus
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
// smallFields is a small size data set for benchmarking
|
|
||||||
var smallFields = Fields{
|
|
||||||
"foo": "bar",
|
|
||||||
"baz": "qux",
|
|
||||||
"one": "two",
|
|
||||||
"three": "four",
|
|
||||||
}
|
|
||||||
|
|
||||||
// largeFields is a large size data set for benchmarking
|
|
||||||
var largeFields = Fields{
|
|
||||||
"foo": "bar",
|
|
||||||
"baz": "qux",
|
|
||||||
"one": "two",
|
|
||||||
"three": "four",
|
|
||||||
"five": "six",
|
|
||||||
"seven": "eight",
|
|
||||||
"nine": "ten",
|
|
||||||
"eleven": "twelve",
|
|
||||||
"thirteen": "fourteen",
|
|
||||||
"fifteen": "sixteen",
|
|
||||||
"seventeen": "eighteen",
|
|
||||||
"nineteen": "twenty",
|
|
||||||
"a": "b",
|
|
||||||
"c": "d",
|
|
||||||
"e": "f",
|
|
||||||
"g": "h",
|
|
||||||
"i": "j",
|
|
||||||
"k": "l",
|
|
||||||
"m": "n",
|
|
||||||
"o": "p",
|
|
||||||
"q": "r",
|
|
||||||
"s": "t",
|
|
||||||
"u": "v",
|
|
||||||
"w": "x",
|
|
||||||
"y": "z",
|
|
||||||
"this": "will",
|
|
||||||
"make": "thirty",
|
|
||||||
"entries": "yeah",
|
|
||||||
}
|
|
||||||
|
|
||||||
func BenchmarkSmallTextFormatter(b *testing.B) {
|
|
||||||
doBenchmark(b, &TextFormatter{DisableColors: true}, smallFields)
|
|
||||||
}
|
|
||||||
|
|
||||||
func BenchmarkLargeTextFormatter(b *testing.B) {
|
|
||||||
doBenchmark(b, &TextFormatter{DisableColors: true}, largeFields)
|
|
||||||
}
|
|
||||||
|
|
||||||
func BenchmarkSmallColoredTextFormatter(b *testing.B) {
|
|
||||||
doBenchmark(b, &TextFormatter{ForceColors: true}, smallFields)
|
|
||||||
}
|
|
||||||
|
|
||||||
func BenchmarkLargeColoredTextFormatter(b *testing.B) {
|
|
||||||
doBenchmark(b, &TextFormatter{ForceColors: true}, largeFields)
|
|
||||||
}
|
|
||||||
|
|
||||||
func BenchmarkSmallJSONFormatter(b *testing.B) {
|
|
||||||
doBenchmark(b, &JSONFormatter{}, smallFields)
|
|
||||||
}
|
|
||||||
|
|
||||||
func BenchmarkLargeJSONFormatter(b *testing.B) {
|
|
||||||
doBenchmark(b, &JSONFormatter{}, largeFields)
|
|
||||||
}
|
|
||||||
|
|
||||||
func doBenchmark(b *testing.B, formatter Formatter, fields Fields) {
|
|
||||||
entry := &Entry{
|
|
||||||
Time: time.Time{},
|
|
||||||
Level: InfoLevel,
|
|
||||||
Message: "message",
|
|
||||||
Data: fields,
|
|
||||||
}
|
|
||||||
var d []byte
|
|
||||||
var err error
|
|
||||||
for i := 0; i < b.N; i++ {
|
|
||||||
d, err = formatter.Format(entry)
|
|
||||||
if err != nil {
|
|
||||||
b.Fatal(err)
|
|
||||||
}
|
|
||||||
b.SetBytes(int64(len(d)))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
122
Godeps/_workspace/src/github.com/Sirupsen/logrus/hook_test.go
generated
vendored
122
Godeps/_workspace/src/github.com/Sirupsen/logrus/hook_test.go
generated
vendored
@@ -1,122 +0,0 @@
|
|||||||
package logrus
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
)
|
|
||||||
|
|
||||||
type TestHook struct {
|
|
||||||
Fired bool
|
|
||||||
}
|
|
||||||
|
|
||||||
func (hook *TestHook) Fire(entry *Entry) error {
|
|
||||||
hook.Fired = true
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (hook *TestHook) Levels() []Level {
|
|
||||||
return []Level{
|
|
||||||
DebugLevel,
|
|
||||||
InfoLevel,
|
|
||||||
WarnLevel,
|
|
||||||
ErrorLevel,
|
|
||||||
FatalLevel,
|
|
||||||
PanicLevel,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestHookFires(t *testing.T) {
|
|
||||||
hook := new(TestHook)
|
|
||||||
|
|
||||||
LogAndAssertJSON(t, func(log *Logger) {
|
|
||||||
log.Hooks.Add(hook)
|
|
||||||
assert.Equal(t, hook.Fired, false)
|
|
||||||
|
|
||||||
log.Print("test")
|
|
||||||
}, func(fields Fields) {
|
|
||||||
assert.Equal(t, hook.Fired, true)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
type ModifyHook struct {
|
|
||||||
}
|
|
||||||
|
|
||||||
func (hook *ModifyHook) Fire(entry *Entry) error {
|
|
||||||
entry.Data["wow"] = "whale"
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (hook *ModifyHook) Levels() []Level {
|
|
||||||
return []Level{
|
|
||||||
DebugLevel,
|
|
||||||
InfoLevel,
|
|
||||||
WarnLevel,
|
|
||||||
ErrorLevel,
|
|
||||||
FatalLevel,
|
|
||||||
PanicLevel,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestHookCanModifyEntry(t *testing.T) {
|
|
||||||
hook := new(ModifyHook)
|
|
||||||
|
|
||||||
LogAndAssertJSON(t, func(log *Logger) {
|
|
||||||
log.Hooks.Add(hook)
|
|
||||||
log.WithField("wow", "elephant").Print("test")
|
|
||||||
}, func(fields Fields) {
|
|
||||||
assert.Equal(t, fields["wow"], "whale")
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestCanFireMultipleHooks(t *testing.T) {
|
|
||||||
hook1 := new(ModifyHook)
|
|
||||||
hook2 := new(TestHook)
|
|
||||||
|
|
||||||
LogAndAssertJSON(t, func(log *Logger) {
|
|
||||||
log.Hooks.Add(hook1)
|
|
||||||
log.Hooks.Add(hook2)
|
|
||||||
|
|
||||||
log.WithField("wow", "elephant").Print("test")
|
|
||||||
}, func(fields Fields) {
|
|
||||||
assert.Equal(t, fields["wow"], "whale")
|
|
||||||
assert.Equal(t, hook2.Fired, true)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
type ErrorHook struct {
|
|
||||||
Fired bool
|
|
||||||
}
|
|
||||||
|
|
||||||
func (hook *ErrorHook) Fire(entry *Entry) error {
|
|
||||||
hook.Fired = true
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (hook *ErrorHook) Levels() []Level {
|
|
||||||
return []Level{
|
|
||||||
ErrorLevel,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestErrorHookShouldntFireOnInfo(t *testing.T) {
|
|
||||||
hook := new(ErrorHook)
|
|
||||||
|
|
||||||
LogAndAssertJSON(t, func(log *Logger) {
|
|
||||||
log.Hooks.Add(hook)
|
|
||||||
log.Info("test")
|
|
||||||
}, func(fields Fields) {
|
|
||||||
assert.Equal(t, hook.Fired, false)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestErrorHookShouldFireOnError(t *testing.T) {
|
|
||||||
hook := new(ErrorHook)
|
|
||||||
|
|
||||||
LogAndAssertJSON(t, func(log *Logger) {
|
|
||||||
log.Hooks.Add(hook)
|
|
||||||
log.Error("test")
|
|
||||||
}, func(fields Fields) {
|
|
||||||
assert.Equal(t, hook.Fired, true)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
26
Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/papertrail/papertrail_test.go
generated
vendored
26
Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/papertrail/papertrail_test.go
generated
vendored
@@ -1,26 +0,0 @@
|
|||||||
package logrus_papertrail
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/Sirupsen/logrus"
|
|
||||||
"github.com/stvp/go-udp-testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestWritingToUDP(t *testing.T) {
|
|
||||||
port := 16661
|
|
||||||
udp.SetAddr(fmt.Sprintf(":%d", port))
|
|
||||||
|
|
||||||
hook, err := NewPapertrailHook("localhost", port, "test")
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("Unable to connect to local UDP server.")
|
|
||||||
}
|
|
||||||
|
|
||||||
log := logrus.New()
|
|
||||||
log.Hooks.Add(hook)
|
|
||||||
|
|
||||||
udp.ShouldReceive(t, "foo", func() {
|
|
||||||
log.Info("foo")
|
|
||||||
})
|
|
||||||
}
|
|
||||||
97
Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/sentry/sentry_test.go
generated
vendored
97
Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/sentry/sentry_test.go
generated
vendored
@@ -1,97 +0,0 @@
|
|||||||
package logrus_sentry
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
|
||||||
"io/ioutil"
|
|
||||||
"net/http"
|
|
||||||
"net/http/httptest"
|
|
||||||
"strings"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/Sirupsen/logrus"
|
|
||||||
"github.com/getsentry/raven-go"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
message = "error message"
|
|
||||||
server_name = "testserver.internal"
|
|
||||||
logger_name = "test.logger"
|
|
||||||
)
|
|
||||||
|
|
||||||
func getTestLogger() *logrus.Logger {
|
|
||||||
l := logrus.New()
|
|
||||||
l.Out = ioutil.Discard
|
|
||||||
return l
|
|
||||||
}
|
|
||||||
|
|
||||||
func WithTestDSN(t *testing.T, tf func(string, <-chan *raven.Packet)) {
|
|
||||||
pch := make(chan *raven.Packet, 1)
|
|
||||||
s := httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
|
|
||||||
defer req.Body.Close()
|
|
||||||
d := json.NewDecoder(req.Body)
|
|
||||||
p := &raven.Packet{}
|
|
||||||
err := d.Decode(p)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err.Error())
|
|
||||||
}
|
|
||||||
|
|
||||||
pch <- p
|
|
||||||
}))
|
|
||||||
defer s.Close()
|
|
||||||
|
|
||||||
fragments := strings.SplitN(s.URL, "://", 2)
|
|
||||||
dsn := fmt.Sprintf(
|
|
||||||
"%s://public:secret@%s/sentry/project-id",
|
|
||||||
fragments[0],
|
|
||||||
fragments[1],
|
|
||||||
)
|
|
||||||
tf(dsn, pch)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSpecialFields(t *testing.T) {
|
|
||||||
WithTestDSN(t, func(dsn string, pch <-chan *raven.Packet) {
|
|
||||||
logger := getTestLogger()
|
|
||||||
|
|
||||||
hook, err := NewSentryHook(dsn, []logrus.Level{
|
|
||||||
logrus.ErrorLevel,
|
|
||||||
})
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err.Error())
|
|
||||||
}
|
|
||||||
logger.Hooks.Add(hook)
|
|
||||||
logger.WithFields(logrus.Fields{
|
|
||||||
"server_name": server_name,
|
|
||||||
"logger": logger_name,
|
|
||||||
}).Error(message)
|
|
||||||
|
|
||||||
packet := <-pch
|
|
||||||
if packet.Logger != logger_name {
|
|
||||||
t.Errorf("logger should have been %s, was %s", logger_name, packet.Logger)
|
|
||||||
}
|
|
||||||
|
|
||||||
if packet.ServerName != server_name {
|
|
||||||
t.Errorf("server_name should have been %s, was %s", server_name, packet.ServerName)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSentryHandler(t *testing.T) {
|
|
||||||
WithTestDSN(t, func(dsn string, pch <-chan *raven.Packet) {
|
|
||||||
logger := getTestLogger()
|
|
||||||
hook, err := NewSentryHook(dsn, []logrus.Level{
|
|
||||||
logrus.ErrorLevel,
|
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err.Error())
|
|
||||||
}
|
|
||||||
logger.Hooks.Add(hook)
|
|
||||||
|
|
||||||
logger.Error(message)
|
|
||||||
packet := <-pch
|
|
||||||
if packet.Message != message {
|
|
||||||
t.Errorf("message should have been %s, was %s", message, packet.Message)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
26
Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/syslog/syslog_test.go
generated
vendored
26
Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/syslog/syslog_test.go
generated
vendored
@@ -1,26 +0,0 @@
|
|||||||
package logrus_syslog
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/Sirupsen/logrus"
|
|
||||||
"log/syslog"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestLocalhostAddAndPrint(t *testing.T) {
|
|
||||||
log := logrus.New()
|
|
||||||
hook, err := NewSyslogHook("udp", "localhost:514", syslog.LOG_INFO, "")
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("Unable to connect to local syslog.")
|
|
||||||
}
|
|
||||||
|
|
||||||
log.Hooks.Add(hook)
|
|
||||||
|
|
||||||
for _, level := range hook.Levels() {
|
|
||||||
if len(log.Hooks[level]) != 1 {
|
|
||||||
t.Errorf("SyslogHook was not added. The length of log.Hooks[%v]: %v", level, len(log.Hooks[level]))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
log.Info("Congratulations!")
|
|
||||||
}
|
|
||||||
283
Godeps/_workspace/src/github.com/Sirupsen/logrus/logrus_test.go
generated
vendored
283
Godeps/_workspace/src/github.com/Sirupsen/logrus/logrus_test.go
generated
vendored
@@ -1,283 +0,0 @@
|
|||||||
package logrus
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"encoding/json"
|
|
||||||
"strconv"
|
|
||||||
"strings"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
)
|
|
||||||
|
|
||||||
func LogAndAssertJSON(t *testing.T, log func(*Logger), assertions func(fields Fields)) {
|
|
||||||
var buffer bytes.Buffer
|
|
||||||
var fields Fields
|
|
||||||
|
|
||||||
logger := New()
|
|
||||||
logger.Out = &buffer
|
|
||||||
logger.Formatter = new(JSONFormatter)
|
|
||||||
|
|
||||||
log(logger)
|
|
||||||
|
|
||||||
err := json.Unmarshal(buffer.Bytes(), &fields)
|
|
||||||
assert.Nil(t, err)
|
|
||||||
|
|
||||||
assertions(fields)
|
|
||||||
}
|
|
||||||
|
|
||||||
func LogAndAssertText(t *testing.T, log func(*Logger), assertions func(fields map[string]string)) {
|
|
||||||
var buffer bytes.Buffer
|
|
||||||
|
|
||||||
logger := New()
|
|
||||||
logger.Out = &buffer
|
|
||||||
logger.Formatter = &TextFormatter{
|
|
||||||
DisableColors: true,
|
|
||||||
}
|
|
||||||
|
|
||||||
log(logger)
|
|
||||||
|
|
||||||
fields := make(map[string]string)
|
|
||||||
for _, kv := range strings.Split(buffer.String(), " ") {
|
|
||||||
if !strings.Contains(kv, "=") {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
kvArr := strings.Split(kv, "=")
|
|
||||||
key := strings.TrimSpace(kvArr[0])
|
|
||||||
val := kvArr[1]
|
|
||||||
if kvArr[1][0] == '"' {
|
|
||||||
var err error
|
|
||||||
val, err = strconv.Unquote(val)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
}
|
|
||||||
fields[key] = val
|
|
||||||
}
|
|
||||||
assertions(fields)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestPrint(t *testing.T) {
|
|
||||||
LogAndAssertJSON(t, func(log *Logger) {
|
|
||||||
log.Print("test")
|
|
||||||
}, func(fields Fields) {
|
|
||||||
assert.Equal(t, fields["msg"], "test")
|
|
||||||
assert.Equal(t, fields["level"], "info")
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestInfo(t *testing.T) {
|
|
||||||
LogAndAssertJSON(t, func(log *Logger) {
|
|
||||||
log.Info("test")
|
|
||||||
}, func(fields Fields) {
|
|
||||||
assert.Equal(t, fields["msg"], "test")
|
|
||||||
assert.Equal(t, fields["level"], "info")
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestWarn(t *testing.T) {
|
|
||||||
LogAndAssertJSON(t, func(log *Logger) {
|
|
||||||
log.Warn("test")
|
|
||||||
}, func(fields Fields) {
|
|
||||||
assert.Equal(t, fields["msg"], "test")
|
|
||||||
assert.Equal(t, fields["level"], "warning")
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestInfolnShouldAddSpacesBetweenStrings(t *testing.T) {
|
|
||||||
LogAndAssertJSON(t, func(log *Logger) {
|
|
||||||
log.Infoln("test", "test")
|
|
||||||
}, func(fields Fields) {
|
|
||||||
assert.Equal(t, fields["msg"], "test test")
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestInfolnShouldAddSpacesBetweenStringAndNonstring(t *testing.T) {
|
|
||||||
LogAndAssertJSON(t, func(log *Logger) {
|
|
||||||
log.Infoln("test", 10)
|
|
||||||
}, func(fields Fields) {
|
|
||||||
assert.Equal(t, fields["msg"], "test 10")
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestInfolnShouldAddSpacesBetweenTwoNonStrings(t *testing.T) {
|
|
||||||
LogAndAssertJSON(t, func(log *Logger) {
|
|
||||||
log.Infoln(10, 10)
|
|
||||||
}, func(fields Fields) {
|
|
||||||
assert.Equal(t, fields["msg"], "10 10")
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestInfoShouldAddSpacesBetweenTwoNonStrings(t *testing.T) {
|
|
||||||
LogAndAssertJSON(t, func(log *Logger) {
|
|
||||||
log.Infoln(10, 10)
|
|
||||||
}, func(fields Fields) {
|
|
||||||
assert.Equal(t, fields["msg"], "10 10")
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestInfoShouldNotAddSpacesBetweenStringAndNonstring(t *testing.T) {
|
|
||||||
LogAndAssertJSON(t, func(log *Logger) {
|
|
||||||
log.Info("test", 10)
|
|
||||||
}, func(fields Fields) {
|
|
||||||
assert.Equal(t, fields["msg"], "test10")
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestInfoShouldNotAddSpacesBetweenStrings(t *testing.T) {
|
|
||||||
LogAndAssertJSON(t, func(log *Logger) {
|
|
||||||
log.Info("test", "test")
|
|
||||||
}, func(fields Fields) {
|
|
||||||
assert.Equal(t, fields["msg"], "testtest")
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestWithFieldsShouldAllowAssignments(t *testing.T) {
|
|
||||||
var buffer bytes.Buffer
|
|
||||||
var fields Fields
|
|
||||||
|
|
||||||
logger := New()
|
|
||||||
logger.Out = &buffer
|
|
||||||
logger.Formatter = new(JSONFormatter)
|
|
||||||
|
|
||||||
localLog := logger.WithFields(Fields{
|
|
||||||
"key1": "value1",
|
|
||||||
})
|
|
||||||
|
|
||||||
localLog.WithField("key2", "value2").Info("test")
|
|
||||||
err := json.Unmarshal(buffer.Bytes(), &fields)
|
|
||||||
assert.Nil(t, err)
|
|
||||||
|
|
||||||
assert.Equal(t, "value2", fields["key2"])
|
|
||||||
assert.Equal(t, "value1", fields["key1"])
|
|
||||||
|
|
||||||
buffer = bytes.Buffer{}
|
|
||||||
fields = Fields{}
|
|
||||||
localLog.Info("test")
|
|
||||||
err = json.Unmarshal(buffer.Bytes(), &fields)
|
|
||||||
assert.Nil(t, err)
|
|
||||||
|
|
||||||
_, ok := fields["key2"]
|
|
||||||
assert.Equal(t, false, ok)
|
|
||||||
assert.Equal(t, "value1", fields["key1"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestUserSuppliedFieldDoesNotOverwriteDefaults(t *testing.T) {
|
|
||||||
LogAndAssertJSON(t, func(log *Logger) {
|
|
||||||
log.WithField("msg", "hello").Info("test")
|
|
||||||
}, func(fields Fields) {
|
|
||||||
assert.Equal(t, fields["msg"], "test")
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestUserSuppliedMsgFieldHasPrefix(t *testing.T) {
|
|
||||||
LogAndAssertJSON(t, func(log *Logger) {
|
|
||||||
log.WithField("msg", "hello").Info("test")
|
|
||||||
}, func(fields Fields) {
|
|
||||||
assert.Equal(t, fields["msg"], "test")
|
|
||||||
assert.Equal(t, fields["fields.msg"], "hello")
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestUserSuppliedTimeFieldHasPrefix(t *testing.T) {
|
|
||||||
LogAndAssertJSON(t, func(log *Logger) {
|
|
||||||
log.WithField("time", "hello").Info("test")
|
|
||||||
}, func(fields Fields) {
|
|
||||||
assert.Equal(t, fields["fields.time"], "hello")
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestUserSuppliedLevelFieldHasPrefix(t *testing.T) {
|
|
||||||
LogAndAssertJSON(t, func(log *Logger) {
|
|
||||||
log.WithField("level", 1).Info("test")
|
|
||||||
}, func(fields Fields) {
|
|
||||||
assert.Equal(t, fields["level"], "info")
|
|
||||||
assert.Equal(t, fields["fields.level"], 1)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestDefaultFieldsAreNotPrefixed(t *testing.T) {
|
|
||||||
LogAndAssertText(t, func(log *Logger) {
|
|
||||||
ll := log.WithField("herp", "derp")
|
|
||||||
ll.Info("hello")
|
|
||||||
ll.Info("bye")
|
|
||||||
}, func(fields map[string]string) {
|
|
||||||
for _, fieldName := range []string{"fields.level", "fields.time", "fields.msg"} {
|
|
||||||
if _, ok := fields[fieldName]; ok {
|
|
||||||
t.Fatalf("should not have prefixed %q: %v", fieldName, fields)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestDoubleLoggingDoesntPrefixPreviousFields(t *testing.T) {
|
|
||||||
|
|
||||||
var buffer bytes.Buffer
|
|
||||||
var fields Fields
|
|
||||||
|
|
||||||
logger := New()
|
|
||||||
logger.Out = &buffer
|
|
||||||
logger.Formatter = new(JSONFormatter)
|
|
||||||
|
|
||||||
llog := logger.WithField("context", "eating raw fish")
|
|
||||||
|
|
||||||
llog.Info("looks delicious")
|
|
||||||
|
|
||||||
err := json.Unmarshal(buffer.Bytes(), &fields)
|
|
||||||
assert.NoError(t, err, "should have decoded first message")
|
|
||||||
assert.Len(t, fields, 4, "should only have msg/time/level/context fields")
|
|
||||||
assert.Equal(t, fields["msg"], "looks delicious")
|
|
||||||
assert.Equal(t, fields["context"], "eating raw fish")
|
|
||||||
|
|
||||||
buffer.Reset()
|
|
||||||
|
|
||||||
llog.Warn("omg it is!")
|
|
||||||
|
|
||||||
err = json.Unmarshal(buffer.Bytes(), &fields)
|
|
||||||
assert.NoError(t, err, "should have decoded second message")
|
|
||||||
assert.Len(t, fields, 4, "should only have msg/time/level/context fields")
|
|
||||||
assert.Equal(t, fields["msg"], "omg it is!")
|
|
||||||
assert.Equal(t, fields["context"], "eating raw fish")
|
|
||||||
assert.Nil(t, fields["fields.msg"], "should not have prefixed previous `msg` entry")
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestConvertLevelToString(t *testing.T) {
|
|
||||||
assert.Equal(t, "debug", DebugLevel.String())
|
|
||||||
assert.Equal(t, "info", InfoLevel.String())
|
|
||||||
assert.Equal(t, "warning", WarnLevel.String())
|
|
||||||
assert.Equal(t, "error", ErrorLevel.String())
|
|
||||||
assert.Equal(t, "fatal", FatalLevel.String())
|
|
||||||
assert.Equal(t, "panic", PanicLevel.String())
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestParseLevel(t *testing.T) {
|
|
||||||
l, err := ParseLevel("panic")
|
|
||||||
assert.Nil(t, err)
|
|
||||||
assert.Equal(t, PanicLevel, l)
|
|
||||||
|
|
||||||
l, err = ParseLevel("fatal")
|
|
||||||
assert.Nil(t, err)
|
|
||||||
assert.Equal(t, FatalLevel, l)
|
|
||||||
|
|
||||||
l, err = ParseLevel("error")
|
|
||||||
assert.Nil(t, err)
|
|
||||||
assert.Equal(t, ErrorLevel, l)
|
|
||||||
|
|
||||||
l, err = ParseLevel("warn")
|
|
||||||
assert.Nil(t, err)
|
|
||||||
assert.Equal(t, WarnLevel, l)
|
|
||||||
|
|
||||||
l, err = ParseLevel("warning")
|
|
||||||
assert.Nil(t, err)
|
|
||||||
assert.Equal(t, WarnLevel, l)
|
|
||||||
|
|
||||||
l, err = ParseLevel("info")
|
|
||||||
assert.Nil(t, err)
|
|
||||||
assert.Equal(t, InfoLevel, l)
|
|
||||||
|
|
||||||
l, err = ParseLevel("debug")
|
|
||||||
assert.Nil(t, err)
|
|
||||||
assert.Equal(t, DebugLevel, l)
|
|
||||||
|
|
||||||
l, err = ParseLevel("invalid")
|
|
||||||
assert.Equal(t, "not a valid logrus Level: \"invalid\"", err.Error())
|
|
||||||
}
|
|
||||||
33
Godeps/_workspace/src/github.com/Sirupsen/logrus/text_formatter_test.go
generated
vendored
33
Godeps/_workspace/src/github.com/Sirupsen/logrus/text_formatter_test.go
generated
vendored
@@ -1,33 +0,0 @@
|
|||||||
package logrus
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"errors"
|
|
||||||
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestQuoting(t *testing.T) {
|
|
||||||
tf := &TextFormatter{DisableColors: true}
|
|
||||||
|
|
||||||
checkQuoting := func(q bool, value interface{}) {
|
|
||||||
b, _ := tf.Format(WithField("test", value))
|
|
||||||
idx := bytes.Index(b, ([]byte)("test="))
|
|
||||||
cont := bytes.Contains(b[idx+5:], []byte{'"'})
|
|
||||||
if cont != q {
|
|
||||||
if q {
|
|
||||||
t.Errorf("quoting expected for: %#v", value)
|
|
||||||
} else {
|
|
||||||
t.Errorf("quoting not expected for: %#v", value)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
checkQuoting(false, "abcd")
|
|
||||||
checkQuoting(false, "v1.0")
|
|
||||||
checkQuoting(true, "/foobar")
|
|
||||||
checkQuoting(true, "x y")
|
|
||||||
checkQuoting(true, "x,y")
|
|
||||||
checkQuoting(false, errors.New("invalid"))
|
|
||||||
checkQuoting(true, errors.New("invalid argument"))
|
|
||||||
}
|
|
||||||
38
Godeps/_workspace/src/github.com/abbot/go-http-auth/basic_test.go
generated
vendored
38
Godeps/_workspace/src/github.com/abbot/go-http-auth/basic_test.go
generated
vendored
@@ -1,38 +0,0 @@
|
|||||||
package auth
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/base64"
|
|
||||||
"net/http"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestAuthBasic(t *testing.T) {
|
|
||||||
secrets := HtpasswdFileProvider("test.htpasswd")
|
|
||||||
a := &BasicAuth{Realm: "example.com", Secrets: secrets}
|
|
||||||
r := &http.Request{}
|
|
||||||
r.Method = "GET"
|
|
||||||
if a.CheckAuth(r) != "" {
|
|
||||||
t.Fatal("CheckAuth passed on empty headers")
|
|
||||||
}
|
|
||||||
r.Header = http.Header(make(map[string][]string))
|
|
||||||
r.Header.Set("Authorization", "Digest blabla ololo")
|
|
||||||
if a.CheckAuth(r) != "" {
|
|
||||||
t.Fatal("CheckAuth passed on bad headers")
|
|
||||||
}
|
|
||||||
r.Header.Set("Authorization", "Basic !@#")
|
|
||||||
if a.CheckAuth(r) != "" {
|
|
||||||
t.Fatal("CheckAuth passed on bad base64 data")
|
|
||||||
}
|
|
||||||
|
|
||||||
data := [][]string{
|
|
||||||
{"test", "hello"},
|
|
||||||
{"test2", "hello2"},
|
|
||||||
}
|
|
||||||
for _, tc := range data {
|
|
||||||
auth := base64.StdEncoding.EncodeToString([]byte(tc[0] + ":" + tc[1]))
|
|
||||||
r.Header.Set("Authorization", "Basic "+auth)
|
|
||||||
if a.CheckAuth(r) != tc[0] {
|
|
||||||
t.Fatalf("CheckAuth failed for user '%s'", tc[0])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
57
Godeps/_workspace/src/github.com/abbot/go-http-auth/digest_test.go
generated
vendored
57
Godeps/_workspace/src/github.com/abbot/go-http-auth/digest_test.go
generated
vendored
@@ -1,57 +0,0 @@
|
|||||||
package auth
|
|
||||||
|
|
||||||
import (
|
|
||||||
"net/http"
|
|
||||||
"net/url"
|
|
||||||
"testing"
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestAuthDigest(t *testing.T) {
|
|
||||||
secrets := HtdigestFileProvider("test.htdigest")
|
|
||||||
da := &DigestAuth{Opaque: "U7H+ier3Ae8Skd/g",
|
|
||||||
Realm: "example.com",
|
|
||||||
Secrets: secrets,
|
|
||||||
clients: map[string]*digest_client{}}
|
|
||||||
r := &http.Request{}
|
|
||||||
r.Method = "GET"
|
|
||||||
if u, _ := da.CheckAuth(r); u != "" {
|
|
||||||
t.Fatal("non-empty auth for empty request header")
|
|
||||||
}
|
|
||||||
r.Header = http.Header(make(map[string][]string))
|
|
||||||
r.Header.Set("Authorization", "Digest blabla")
|
|
||||||
if u, _ := da.CheckAuth(r); u != "" {
|
|
||||||
t.Fatal("non-empty auth for bad request header")
|
|
||||||
}
|
|
||||||
r.Header.Set("Authorization", `Digest username="test", realm="example.com", nonce="Vb9BP/h81n3GpTTB", uri="/t2", cnonce="NjE4MTM2", nc=00000001, qop="auth", response="ffc357c4eba74773c8687e0bc724c9a3", opaque="U7H+ier3Ae8Skd/g", algorithm="MD5"`)
|
|
||||||
if u, _ := da.CheckAuth(r); u != "" {
|
|
||||||
t.Fatal("non-empty auth for unknown client")
|
|
||||||
}
|
|
||||||
|
|
||||||
r.URL, _ = url.Parse("/t2")
|
|
||||||
da.clients["Vb9BP/h81n3GpTTB"] = &digest_client{nc: 0, last_seen: time.Now().UnixNano()}
|
|
||||||
if u, _ := da.CheckAuth(r); u != "test" {
|
|
||||||
t.Fatal("empty auth for legitimate client")
|
|
||||||
}
|
|
||||||
if u, _ := da.CheckAuth(r); u != "" {
|
|
||||||
t.Fatal("non-empty auth for outdated nc")
|
|
||||||
}
|
|
||||||
|
|
||||||
r.URL, _ = url.Parse("/")
|
|
||||||
da.clients["Vb9BP/h81n3GpTTB"] = &digest_client{nc: 0, last_seen: time.Now().UnixNano()}
|
|
||||||
if u, _ := da.CheckAuth(r); u != "" {
|
|
||||||
t.Fatal("non-empty auth for bad request path")
|
|
||||||
}
|
|
||||||
|
|
||||||
r.URL, _ = url.Parse("/t3")
|
|
||||||
da.clients["Vb9BP/h81n3GpTTB"] = &digest_client{nc: 0, last_seen: time.Now().UnixNano()}
|
|
||||||
if u, _ := da.CheckAuth(r); u != "" {
|
|
||||||
t.Fatal("non-empty auth for bad request path")
|
|
||||||
}
|
|
||||||
|
|
||||||
da.clients["+RbVXSbIoa1SaJk1"] = &digest_client{nc: 0, last_seen: time.Now().UnixNano()}
|
|
||||||
r.Header.Set("Authorization", `Digest username="test", realm="example.com", nonce="+RbVXSbIoa1SaJk1", uri="/", cnonce="NjE4NDkw", nc=00000001, qop="auth", response="c08918024d7faaabd5424654c4e3ad1c", opaque="U7H+ier3Ae8Skd/g", algorithm="MD5"`)
|
|
||||||
if u, _ := da.CheckAuth(r); u != "test" {
|
|
||||||
t.Fatal("empty auth for valid request in subpath")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
18
Godeps/_workspace/src/github.com/abbot/go-http-auth/md5crypt_test.go
generated
vendored
18
Godeps/_workspace/src/github.com/abbot/go-http-auth/md5crypt_test.go
generated
vendored
@@ -1,18 +0,0 @@
|
|||||||
package auth
|
|
||||||
|
|
||||||
import "testing"
|
|
||||||
|
|
||||||
func Test_MD5Crypt(t *testing.T) {
|
|
||||||
test_cases := [][]string{
|
|
||||||
{"apache", "$apr1$J.w5a/..$IW9y6DR0oO/ADuhlMF5/X1"},
|
|
||||||
{"pass", "$1$YeNsbWdH$wvOF8JdqsoiLix754LTW90"},
|
|
||||||
}
|
|
||||||
for _, tc := range test_cases {
|
|
||||||
e := NewMD5Entry(tc[1])
|
|
||||||
result := MD5Crypt([]byte(tc[0]), e.Salt, e.Magic)
|
|
||||||
if string(result) != tc[1] {
|
|
||||||
t.Fatalf("MD5Crypt returned '%s' instead of '%s'", string(result), tc[1])
|
|
||||||
}
|
|
||||||
t.Logf("MD5Crypt: '%s' (%s%s$) -> %s", tc[0], e.Magic, e.Salt, result)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
12
Godeps/_workspace/src/github.com/abbot/go-http-auth/misc_test.go
generated
vendored
12
Godeps/_workspace/src/github.com/abbot/go-http-auth/misc_test.go
generated
vendored
@@ -1,12 +0,0 @@
|
|||||||
package auth
|
|
||||||
|
|
||||||
import "testing"
|
|
||||||
|
|
||||||
func TestH(t *testing.T) {
|
|
||||||
const hello = "Hello, world!"
|
|
||||||
const hello_md5 = "6cd3556deb0da54bca060b4c39479839"
|
|
||||||
h := H(hello)
|
|
||||||
if h != hello_md5 {
|
|
||||||
t.Fatal("Incorrect digest for test string:", h, "instead of", hello_md5)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
33
Godeps/_workspace/src/github.com/abbot/go-http-auth/users_test.go
generated
vendored
33
Godeps/_workspace/src/github.com/abbot/go-http-auth/users_test.go
generated
vendored
@@ -1,33 +0,0 @@
|
|||||||
package auth
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestHtdigestFile(t *testing.T) {
|
|
||||||
secrets := HtdigestFileProvider("test.htdigest")
|
|
||||||
digest := secrets("test", "example.com")
|
|
||||||
if digest != "aa78524fceb0e50fd8ca96dd818b8cf9" {
|
|
||||||
t.Fatal("Incorrect digest for test user:", digest)
|
|
||||||
}
|
|
||||||
digest = secrets("test", "example1.com")
|
|
||||||
if digest != "" {
|
|
||||||
t.Fatal("Got digest for user in non-existant realm:", digest)
|
|
||||||
}
|
|
||||||
digest = secrets("test1", "example.com")
|
|
||||||
if digest != "" {
|
|
||||||
t.Fatal("Got digest for non-existant user:", digest)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestHtpasswdFile(t *testing.T) {
|
|
||||||
secrets := HtpasswdFileProvider("test.htpasswd")
|
|
||||||
passwd := secrets("test", "blah")
|
|
||||||
if passwd != "{SHA}qvTGHdzF6KLavt4PO0gs2a6pQ00=" {
|
|
||||||
t.Fatal("Incorrect passwd for test user:", passwd)
|
|
||||||
}
|
|
||||||
passwd = secrets("test3", "blah")
|
|
||||||
if passwd != "" {
|
|
||||||
t.Fatal("Got passwd for non-existant user:", passwd)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
62
Godeps/_workspace/src/github.com/appc/spec/schema/image_test.go
generated
vendored
62
Godeps/_workspace/src/github.com/appc/spec/schema/image_test.go
generated
vendored
@@ -1,62 +0,0 @@
|
|||||||
// Copyright 2015 The appc Authors
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
package schema
|
|
||||||
|
|
||||||
import "testing"
|
|
||||||
|
|
||||||
func TestEmptyApp(t *testing.T) {
|
|
||||||
imj := `
|
|
||||||
{
|
|
||||||
"acKind": "ImageManifest",
|
|
||||||
"acVersion": "0.6.1",
|
|
||||||
"name": "example.com/test"
|
|
||||||
}
|
|
||||||
`
|
|
||||||
|
|
||||||
var im ImageManifest
|
|
||||||
|
|
||||||
err := im.UnmarshalJSON([]byte(imj))
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("unexpected error: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Marshal and Unmarshal to verify that no "app": {} is generated on
|
|
||||||
// Marshal and converted to empty struct on Unmarshal
|
|
||||||
buf, err := im.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("unexpected error: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
err = im.UnmarshalJSON(buf)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("unexpected error: %v", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestImageManifestMerge(t *testing.T) {
|
|
||||||
imj := `{"name": "example.com/test"}`
|
|
||||||
im := &ImageManifest{}
|
|
||||||
|
|
||||||
if im.UnmarshalJSON([]byte(imj)) == nil {
|
|
||||||
t.Fatal("Manifest JSON without acKind and acVersion unmarshalled successfully")
|
|
||||||
}
|
|
||||||
|
|
||||||
im = BlankImageManifest()
|
|
||||||
|
|
||||||
err := im.UnmarshalJSON([]byte(imj))
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("unexpected error: %v", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
73
Godeps/_workspace/src/github.com/appc/spec/schema/pod_test.go
generated
vendored
73
Godeps/_workspace/src/github.com/appc/spec/schema/pod_test.go
generated
vendored
@@ -1,73 +0,0 @@
|
|||||||
// Copyright 2015 The appc Authors
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
package schema
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/appc/spec/schema/types"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestPodManifestMerge(t *testing.T) {
|
|
||||||
pmj := `{}`
|
|
||||||
pm := &PodManifest{}
|
|
||||||
|
|
||||||
if pm.UnmarshalJSON([]byte(pmj)) == nil {
|
|
||||||
t.Fatal("Manifest JSON without acKind and acVersion unmarshalled successfully")
|
|
||||||
}
|
|
||||||
|
|
||||||
pm = BlankPodManifest()
|
|
||||||
|
|
||||||
err := pm.UnmarshalJSON([]byte(pmj))
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("unexpected error: %v", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestAppList(t *testing.T) {
|
|
||||||
ri := RuntimeImage{
|
|
||||||
ID: *types.NewHashSHA512([]byte{}),
|
|
||||||
}
|
|
||||||
al := AppList{
|
|
||||||
RuntimeApp{
|
|
||||||
Name: "foo",
|
|
||||||
Image: ri,
|
|
||||||
},
|
|
||||||
RuntimeApp{
|
|
||||||
Name: "bar",
|
|
||||||
Image: ri,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
if _, err := al.MarshalJSON(); err != nil {
|
|
||||||
t.Errorf("want err=nil, got %v", err)
|
|
||||||
}
|
|
||||||
dal := AppList{
|
|
||||||
RuntimeApp{
|
|
||||||
Name: "foo",
|
|
||||||
Image: ri,
|
|
||||||
},
|
|
||||||
RuntimeApp{
|
|
||||||
Name: "bar",
|
|
||||||
Image: ri,
|
|
||||||
},
|
|
||||||
RuntimeApp{
|
|
||||||
Name: "foo",
|
|
||||||
Image: ri,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
if _, err := dal.MarshalJSON(); err == nil {
|
|
||||||
t.Errorf("want err, got nil")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
279
Godeps/_workspace/src/github.com/appc/spec/schema/types/acidentifier_test.go
generated
vendored
279
Godeps/_workspace/src/github.com/appc/spec/schema/types/acidentifier_test.go
generated
vendored
@@ -1,279 +0,0 @@
|
|||||||
// Copyright 2015 The appc Authors
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
package types
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"reflect"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
goodIdentifiers = []string{
|
|
||||||
"asdf",
|
|
||||||
"foo-bar-baz",
|
|
||||||
"zab_rab_oof",
|
|
||||||
"database",
|
|
||||||
"my~database",
|
|
||||||
"example.com/database",
|
|
||||||
"example.com/~bob/database",
|
|
||||||
"example.com/ourapp-1.0.0",
|
|
||||||
"sub-domain.example.com/org/product/release-1.0.0",
|
|
||||||
"sub-domain.example.com/org/product/~alice/release-1.0.0",
|
|
||||||
}
|
|
||||||
badIdentifiers = []string{
|
|
||||||
"",
|
|
||||||
"BAR",
|
|
||||||
"foo#",
|
|
||||||
"EXAMPLE.com",
|
|
||||||
"foo.com/BAR",
|
|
||||||
"/app",
|
|
||||||
"app/",
|
|
||||||
"-app",
|
|
||||||
"app-",
|
|
||||||
".app",
|
|
||||||
"app.",
|
|
||||||
"_app",
|
|
||||||
"app_",
|
|
||||||
"~app",
|
|
||||||
"app~",
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestNewACIdentifier(t *testing.T) {
|
|
||||||
for i, in := range goodIdentifiers {
|
|
||||||
l, err := NewACIdentifier(in)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("#%d: got err=%v, want nil", i, err)
|
|
||||||
}
|
|
||||||
if l == nil {
|
|
||||||
t.Errorf("#%d: got l=nil, want non-nil", i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestNewACIdentifierBad(t *testing.T) {
|
|
||||||
for i, in := range badIdentifiers {
|
|
||||||
l, err := NewACIdentifier(in)
|
|
||||||
if l != nil {
|
|
||||||
t.Errorf("#%d: got l=%v, want nil", i, l)
|
|
||||||
}
|
|
||||||
if err == nil {
|
|
||||||
t.Errorf("#%d: got err=nil, want non-nil", i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestMustACIdentifier(t *testing.T) {
|
|
||||||
for i, in := range goodIdentifiers {
|
|
||||||
l := MustACIdentifier(in)
|
|
||||||
if l == nil {
|
|
||||||
t.Errorf("#%d: got l=nil, want non-nil", i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func expectPanicMustACIdentifier(i int, in string, t *testing.T) {
|
|
||||||
defer func() {
|
|
||||||
recover()
|
|
||||||
}()
|
|
||||||
_ = MustACIdentifier(in)
|
|
||||||
t.Errorf("#%d: panic expected", i)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestMustACIdentifierBad(t *testing.T) {
|
|
||||||
for i, in := range badIdentifiers {
|
|
||||||
expectPanicMustACIdentifier(i, in, t)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSanitizeACIdentifier(t *testing.T) {
|
|
||||||
tests := map[string]string{
|
|
||||||
"foo#": "foo",
|
|
||||||
"FOO": "foo",
|
|
||||||
"EXAMPLE.com": "example.com",
|
|
||||||
"foo.com/BAR": "foo.com/bar",
|
|
||||||
"/app": "app",
|
|
||||||
"app/": "app",
|
|
||||||
"-app": "app",
|
|
||||||
"app-": "app",
|
|
||||||
".app": "app",
|
|
||||||
"app.": "app",
|
|
||||||
"_app": "app",
|
|
||||||
"app_": "app",
|
|
||||||
"~app": "app",
|
|
||||||
"app~": "app",
|
|
||||||
"app///": "app",
|
|
||||||
"-/.app..": "app",
|
|
||||||
"-/app.name-test/-/": "app.name-test",
|
|
||||||
"sub-domain.example.com/org/product/~alice/release-1.0.0": "sub-domain.example.com/org/product/~alice/release-1.0.0",
|
|
||||||
}
|
|
||||||
for in, ex := range tests {
|
|
||||||
o, err := SanitizeACIdentifier(in)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("got err=%v, want nil", err)
|
|
||||||
}
|
|
||||||
if o != ex {
|
|
||||||
t.Errorf("got l=%s, want %s", o, ex)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestACIdentifierSetGood(t *testing.T) {
|
|
||||||
tests := map[string]ACIdentifier{
|
|
||||||
"blargh": ACIdentifier("blargh"),
|
|
||||||
"example-ourapp-1-0-0": ACIdentifier("example-ourapp-1-0-0"),
|
|
||||||
}
|
|
||||||
for in, w := range tests {
|
|
||||||
// Ensure an empty name is set appropriately
|
|
||||||
var a ACIdentifier
|
|
||||||
err := a.Set(in)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("%v: got err=%v, want nil", in, err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if !reflect.DeepEqual(a, w) {
|
|
||||||
t.Errorf("%v: a=%v, want %v", in, a, w)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ensure an existing name is overwritten
|
|
||||||
var b ACIdentifier = ACIdentifier("orig")
|
|
||||||
err = b.Set(in)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("%v: got err=%v, want nil", in, err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if !reflect.DeepEqual(b, w) {
|
|
||||||
t.Errorf("%v: b=%v, want %v", in, b, w)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestACIdentifierSetBad(t *testing.T) {
|
|
||||||
for i, in := range badIdentifiers {
|
|
||||||
// Ensure an empty name stays empty
|
|
||||||
var a ACIdentifier
|
|
||||||
err := a.Set(in)
|
|
||||||
if err == nil {
|
|
||||||
t.Errorf("#%d: err=%v, want nil", i, err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if w := ACIdentifier(""); !reflect.DeepEqual(a, w) {
|
|
||||||
t.Errorf("%d: a=%v, want %v", i, a, w)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ensure an existing name is not overwritten
|
|
||||||
var b ACIdentifier = ACIdentifier("orig")
|
|
||||||
err = b.Set(in)
|
|
||||||
if err == nil {
|
|
||||||
t.Errorf("#%d: err=%v, want nil", i, err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if w := ACIdentifier("orig"); !reflect.DeepEqual(b, w) {
|
|
||||||
t.Errorf("%d: b=%v, want %v", i, b, w)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSanitizeACIdentifierBad(t *testing.T) {
|
|
||||||
tests := []string{
|
|
||||||
"__",
|
|
||||||
"..",
|
|
||||||
"//",
|
|
||||||
"",
|
|
||||||
".//-"}
|
|
||||||
for i, in := range tests {
|
|
||||||
l, err := SanitizeACIdentifier(in)
|
|
||||||
if l != "" {
|
|
||||||
t.Errorf("#%d: got l=%v, want nil", i, l)
|
|
||||||
}
|
|
||||||
if err == nil {
|
|
||||||
t.Errorf("#%d: got err=nil, want non-nil", i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestACIdentifierUnmarshalBad(t *testing.T) {
|
|
||||||
tests := []string{
|
|
||||||
"",
|
|
||||||
"garbage",
|
|
||||||
`""`,
|
|
||||||
`"EXAMPLE"`,
|
|
||||||
`"example.com/app#1"`,
|
|
||||||
`"~example.com/app1"`,
|
|
||||||
}
|
|
||||||
for i, in := range tests {
|
|
||||||
var a, b ACIdentifier
|
|
||||||
err := a.UnmarshalJSON([]byte(in))
|
|
||||||
if err == nil {
|
|
||||||
t.Errorf("#%d: err=nil, want non-nil", i)
|
|
||||||
} else if !reflect.DeepEqual(a, b) {
|
|
||||||
t.Errorf("#%d: a=%v, want empty", i, a)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestACIdentifierUnmarshalGood(t *testing.T) {
|
|
||||||
tests := map[string]ACIdentifier{
|
|
||||||
`"example"`: ACIdentifier("example"),
|
|
||||||
`"foo-bar"`: ACIdentifier("foo-bar"),
|
|
||||||
}
|
|
||||||
for in, w := range tests {
|
|
||||||
var a ACIdentifier
|
|
||||||
err := json.Unmarshal([]byte(in), &a)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("%v: err=%v, want nil", in, err)
|
|
||||||
} else if !reflect.DeepEqual(a, w) {
|
|
||||||
t.Errorf("%v: a=%v, want %v", in, a, w)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestACIdentifierMarshalBad(t *testing.T) {
|
|
||||||
tests := map[string]error{
|
|
||||||
"Foo": ErrInvalidCharInACIdentifier,
|
|
||||||
"foo#": ErrInvalidCharInACIdentifier,
|
|
||||||
"-foo": ErrInvalidEdgeInACIdentifier,
|
|
||||||
"example-": ErrInvalidEdgeInACIdentifier,
|
|
||||||
"": ErrEmptyACIdentifier,
|
|
||||||
}
|
|
||||||
for in, werr := range tests {
|
|
||||||
a := ACIdentifier(in)
|
|
||||||
b, gerr := json.Marshal(a)
|
|
||||||
if b != nil {
|
|
||||||
t.Errorf("ACIdentifier(%q): want b=nil, got %v", in, b)
|
|
||||||
}
|
|
||||||
if jerr, ok := gerr.(*json.MarshalerError); !ok {
|
|
||||||
t.Errorf("expected JSONMarshalerError")
|
|
||||||
} else {
|
|
||||||
if e := jerr.Err; e != werr {
|
|
||||||
t.Errorf("err=%#v, want %#v", e, werr)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestACIdentifierMarshalGood(t *testing.T) {
|
|
||||||
for i, in := range goodIdentifiers {
|
|
||||||
a := ACIdentifier(in)
|
|
||||||
b, err := json.Marshal(a)
|
|
||||||
if !reflect.DeepEqual(b, []byte(`"`+in+`"`)) {
|
|
||||||
t.Errorf("#%d: marshalled=%v, want %v", i, b, []byte(in))
|
|
||||||
}
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("#%d: err=%v, want nil", i, err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
93
Godeps/_workspace/src/github.com/appc/spec/schema/types/ackind_test.go
generated
vendored
93
Godeps/_workspace/src/github.com/appc/spec/schema/types/ackind_test.go
generated
vendored
@@ -1,93 +0,0 @@
|
|||||||
// Copyright 2015 The appc Authors
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
package types
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"reflect"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestACKindMarshalBad(t *testing.T) {
|
|
||||||
tests := map[string]error{
|
|
||||||
"Foo": ACKindError("bad ACKind: Foo"),
|
|
||||||
"ApplicationManifest": ACKindError("bad ACKind: ApplicationManifest"),
|
|
||||||
"": ErrNoACKind,
|
|
||||||
}
|
|
||||||
for in, werr := range tests {
|
|
||||||
a := ACKind(in)
|
|
||||||
b, gerr := json.Marshal(a)
|
|
||||||
if b != nil {
|
|
||||||
t.Errorf("ACKind(%q): want b=nil, got %v", in, b)
|
|
||||||
}
|
|
||||||
if jerr, ok := gerr.(*json.MarshalerError); !ok {
|
|
||||||
t.Errorf("expected JSONMarshalerError")
|
|
||||||
} else {
|
|
||||||
if e := jerr.Err; e != werr {
|
|
||||||
t.Errorf("err=%#v, want %#v", e, werr)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestACKindMarshalGood(t *testing.T) {
|
|
||||||
for i, in := range []string{
|
|
||||||
"ImageManifest",
|
|
||||||
"PodManifest",
|
|
||||||
} {
|
|
||||||
a := ACKind(in)
|
|
||||||
b, err := json.Marshal(a)
|
|
||||||
if !reflect.DeepEqual(b, []byte(`"`+in+`"`)) {
|
|
||||||
t.Errorf("#%d: marshalled=%v, want %v", i, b, []byte(in))
|
|
||||||
}
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("#%d: err=%v, want nil", i, err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestACKindUnmarshalBad(t *testing.T) {
|
|
||||||
tests := []string{
|
|
||||||
"ImageManifest", // Not a valid JSON-encoded string
|
|
||||||
`"garbage"`,
|
|
||||||
`"AppManifest"`,
|
|
||||||
`""`,
|
|
||||||
}
|
|
||||||
for i, in := range tests {
|
|
||||||
var a, b ACKind
|
|
||||||
err := a.UnmarshalJSON([]byte(in))
|
|
||||||
if err == nil {
|
|
||||||
t.Errorf("#%d: err=nil, want non-nil", i)
|
|
||||||
} else if !reflect.DeepEqual(a, b) {
|
|
||||||
t.Errorf("#%d: a=%v, want empty", i, a)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestACKindUnmarshalGood(t *testing.T) {
|
|
||||||
tests := map[string]ACKind{
|
|
||||||
`"PodManifest"`: ACKind("PodManifest"),
|
|
||||||
`"ImageManifest"`: ACKind("ImageManifest"),
|
|
||||||
}
|
|
||||||
for in, w := range tests {
|
|
||||||
var a ACKind
|
|
||||||
err := json.Unmarshal([]byte(in), &a)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("%v: err=%v, want nil", in, err)
|
|
||||||
} else if !reflect.DeepEqual(a, w) {
|
|
||||||
t.Errorf("%v: a=%v, want %v", in, a, w)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
266
Godeps/_workspace/src/github.com/appc/spec/schema/types/acname_test.go
generated
vendored
266
Godeps/_workspace/src/github.com/appc/spec/schema/types/acname_test.go
generated
vendored
@@ -1,266 +0,0 @@
|
|||||||
// Copyright 2015 The appc Authors
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
package types
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"reflect"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
goodNames = []string{
|
|
||||||
"asdf",
|
|
||||||
"foo-bar-baz",
|
|
||||||
"database",
|
|
||||||
}
|
|
||||||
badNames = []string{
|
|
||||||
"",
|
|
||||||
"foo#",
|
|
||||||
"example.com",
|
|
||||||
"EXAMPLE.com",
|
|
||||||
"example/database",
|
|
||||||
"example/database-1.0.0",
|
|
||||||
"foo.com/BAR",
|
|
||||||
"example.com/app_1",
|
|
||||||
"/app",
|
|
||||||
"app/",
|
|
||||||
"-app",
|
|
||||||
"app-",
|
|
||||||
".app",
|
|
||||||
"app.",
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestNewACName(t *testing.T) {
|
|
||||||
for i, in := range goodNames {
|
|
||||||
l, err := NewACName(in)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("#%d: got err=%v, want nil", i, err)
|
|
||||||
}
|
|
||||||
if l == nil {
|
|
||||||
t.Errorf("#%d: got l=nil, want non-nil", i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestNewACNameBad(t *testing.T) {
|
|
||||||
for i, in := range badNames {
|
|
||||||
l, err := NewACName(in)
|
|
||||||
if l != nil {
|
|
||||||
t.Errorf("#%d: got l=%v, want nil", i, l)
|
|
||||||
}
|
|
||||||
if err == nil {
|
|
||||||
t.Errorf("#%d: got err=nil, want non-nil", i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestMustACName(t *testing.T) {
|
|
||||||
for i, in := range goodNames {
|
|
||||||
l := MustACName(in)
|
|
||||||
if l == nil {
|
|
||||||
t.Errorf("#%d: got l=nil, want non-nil", i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func expectPanicMustACName(i int, in string, t *testing.T) {
|
|
||||||
defer func() {
|
|
||||||
recover()
|
|
||||||
}()
|
|
||||||
_ = MustACName(in)
|
|
||||||
t.Errorf("#%d: panic expected", i)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestMustACNameBad(t *testing.T) {
|
|
||||||
for i, in := range badNames {
|
|
||||||
expectPanicMustACName(i, in, t)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSanitizeACName(t *testing.T) {
|
|
||||||
tests := map[string]string{
|
|
||||||
"foo#": "foo",
|
|
||||||
"EXAMPLE.com": "example-com",
|
|
||||||
"foo.com/BAR": "foo-com-bar",
|
|
||||||
"example.com/app_1": "example-com-app-1",
|
|
||||||
"/app": "app",
|
|
||||||
"app/": "app",
|
|
||||||
"-app": "app",
|
|
||||||
"app-": "app",
|
|
||||||
".app": "app",
|
|
||||||
"app.": "app",
|
|
||||||
"app///": "app",
|
|
||||||
"-/.app..": "app",
|
|
||||||
"-/app.name-test/-/": "app-name-test",
|
|
||||||
"sub-domain.example.com/org/product/release-1.0.0": "sub-domain-example-com-org-product-release-1-0-0",
|
|
||||||
}
|
|
||||||
for in, ex := range tests {
|
|
||||||
o, err := SanitizeACName(in)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("got err=%v, want nil", err)
|
|
||||||
}
|
|
||||||
if o != ex {
|
|
||||||
t.Errorf("got l=%s, want %s", o, ex)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestACNameSetGood(t *testing.T) {
|
|
||||||
tests := map[string]ACName{
|
|
||||||
"blargh": ACName("blargh"),
|
|
||||||
"example-ourapp-1-0-0": ACName("example-ourapp-1-0-0"),
|
|
||||||
}
|
|
||||||
for in, w := range tests {
|
|
||||||
// Ensure an empty name is set appropriately
|
|
||||||
var a ACName
|
|
||||||
err := a.Set(in)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("%v: got err=%v, want nil", in, err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if !reflect.DeepEqual(a, w) {
|
|
||||||
t.Errorf("%v: a=%v, want %v", in, a, w)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ensure an existing name is overwritten
|
|
||||||
var b ACName = ACName("orig")
|
|
||||||
err = b.Set(in)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("%v: got err=%v, want nil", in, err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if !reflect.DeepEqual(b, w) {
|
|
||||||
t.Errorf("%v: b=%v, want %v", in, b, w)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestACNameSetBad(t *testing.T) {
|
|
||||||
for i, in := range badNames {
|
|
||||||
// Ensure an empty name stays empty
|
|
||||||
var a ACName
|
|
||||||
err := a.Set(in)
|
|
||||||
if err == nil {
|
|
||||||
t.Errorf("#%d: err=%v, want nil", i, err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if w := ACName(""); !reflect.DeepEqual(a, w) {
|
|
||||||
t.Errorf("%d: a=%v, want %v", i, a, w)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ensure an existing name is not overwritten
|
|
||||||
var b ACName = ACName("orig")
|
|
||||||
err = b.Set(in)
|
|
||||||
if err == nil {
|
|
||||||
t.Errorf("#%d: err=%v, want nil", i, err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if w := ACName("orig"); !reflect.DeepEqual(b, w) {
|
|
||||||
t.Errorf("%d: b=%v, want %v", i, b, w)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSanitizeACNameBad(t *testing.T) {
|
|
||||||
tests := []string{
|
|
||||||
"__",
|
|
||||||
"..",
|
|
||||||
"//",
|
|
||||||
"",
|
|
||||||
".//-"}
|
|
||||||
for i, in := range tests {
|
|
||||||
l, err := SanitizeACName(in)
|
|
||||||
if l != "" {
|
|
||||||
t.Errorf("#%d: got l=%v, want nil", i, l)
|
|
||||||
}
|
|
||||||
if err == nil {
|
|
||||||
t.Errorf("#%d: got err=nil, want non-nil", i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestACNameUnmarshalBad(t *testing.T) {
|
|
||||||
tests := []string{
|
|
||||||
"",
|
|
||||||
"garbage",
|
|
||||||
`""`,
|
|
||||||
`"EXAMPLE"`,
|
|
||||||
`"example.com/app_1"`,
|
|
||||||
}
|
|
||||||
for i, in := range tests {
|
|
||||||
var a, b ACName
|
|
||||||
err := a.UnmarshalJSON([]byte(in))
|
|
||||||
if err == nil {
|
|
||||||
t.Errorf("#%d: err=nil, want non-nil", i)
|
|
||||||
} else if !reflect.DeepEqual(a, b) {
|
|
||||||
t.Errorf("#%d: a=%v, want empty", i, a)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestACNameUnmarshalGood(t *testing.T) {
|
|
||||||
tests := map[string]ACName{
|
|
||||||
`"example"`: ACName("example"),
|
|
||||||
`"foo-bar"`: ACName("foo-bar"),
|
|
||||||
}
|
|
||||||
for in, w := range tests {
|
|
||||||
var a ACName
|
|
||||||
err := json.Unmarshal([]byte(in), &a)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("%v: err=%v, want nil", in, err)
|
|
||||||
} else if !reflect.DeepEqual(a, w) {
|
|
||||||
t.Errorf("%v: a=%v, want %v", in, a, w)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestACNameMarshalBad(t *testing.T) {
|
|
||||||
tests := map[string]error{
|
|
||||||
"Foo": ErrInvalidCharInACName,
|
|
||||||
"foo#": ErrInvalidCharInACName,
|
|
||||||
"-foo": ErrInvalidEdgeInACName,
|
|
||||||
"example-": ErrInvalidEdgeInACName,
|
|
||||||
"": ErrEmptyACName,
|
|
||||||
}
|
|
||||||
for in, werr := range tests {
|
|
||||||
a := ACName(in)
|
|
||||||
b, gerr := json.Marshal(a)
|
|
||||||
if b != nil {
|
|
||||||
t.Errorf("ACName(%q): want b=nil, got %v", in, b)
|
|
||||||
}
|
|
||||||
if jerr, ok := gerr.(*json.MarshalerError); !ok {
|
|
||||||
t.Errorf("expected JSONMarshalerError")
|
|
||||||
} else {
|
|
||||||
if e := jerr.Err; e != werr {
|
|
||||||
t.Errorf("err=%#v, want %#v", e, werr)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestACNameMarshalGood(t *testing.T) {
|
|
||||||
for i, in := range goodNames {
|
|
||||||
a := ACName(in)
|
|
||||||
b, err := json.Marshal(a)
|
|
||||||
if !reflect.DeepEqual(b, []byte(`"`+in+`"`)) {
|
|
||||||
t.Errorf("#%d: marshalled=%v, want %v", i, b, []byte(in))
|
|
||||||
}
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("#%d: err=%v, want nil", i, err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
233
Godeps/_workspace/src/github.com/appc/spec/schema/types/annotations_test.go
generated
vendored
233
Godeps/_workspace/src/github.com/appc/spec/schema/types/annotations_test.go
generated
vendored
@@ -1,233 +0,0 @@
|
|||||||
// Copyright 2015 The appc Authors
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
package types
|
|
||||||
|
|
||||||
import (
|
|
||||||
"reflect"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func makeAnno(n, v string) Annotation {
|
|
||||||
name, err := NewACIdentifier(n)
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return Annotation{
|
|
||||||
Name: *name,
|
|
||||||
Value: v,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestAnnotationsAssertValid(t *testing.T) {
|
|
||||||
tests := []struct {
|
|
||||||
in []Annotation
|
|
||||||
werr bool
|
|
||||||
}{
|
|
||||||
// duplicate names should fail
|
|
||||||
{
|
|
||||||
[]Annotation{
|
|
||||||
makeAnno("foo", "bar"),
|
|
||||||
makeAnno("foo", "baz"),
|
|
||||||
},
|
|
||||||
true,
|
|
||||||
},
|
|
||||||
// bad created should fail
|
|
||||||
{
|
|
||||||
[]Annotation{
|
|
||||||
makeAnno("created", "garbage"),
|
|
||||||
},
|
|
||||||
true,
|
|
||||||
},
|
|
||||||
// bad homepage should fail
|
|
||||||
{
|
|
||||||
[]Annotation{
|
|
||||||
makeAnno("homepage", "not-A$@#URL"),
|
|
||||||
},
|
|
||||||
true,
|
|
||||||
},
|
|
||||||
// bad documentation should fail
|
|
||||||
{
|
|
||||||
[]Annotation{
|
|
||||||
makeAnno("documentation", "ftp://isnotallowed.com"),
|
|
||||||
},
|
|
||||||
true,
|
|
||||||
},
|
|
||||||
// good cases
|
|
||||||
{
|
|
||||||
[]Annotation{
|
|
||||||
makeAnno("created", "2004-05-14T23:11:14+00:00"),
|
|
||||||
makeAnno("documentation", "http://example.com/docs"),
|
|
||||||
},
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
[]Annotation{
|
|
||||||
makeAnno("foo", "bar"),
|
|
||||||
makeAnno("homepage", "https://homepage.com"),
|
|
||||||
},
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
// empty is OK
|
|
||||||
{
|
|
||||||
[]Annotation{},
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
for i, tt := range tests {
|
|
||||||
a := Annotations(tt.in)
|
|
||||||
err := a.assertValid()
|
|
||||||
if gerr := (err != nil); gerr != tt.werr {
|
|
||||||
t.Errorf("#%d: gerr=%t, want %t (err=%v)", i, gerr, tt.werr, err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestAnnotationsMarshal(t *testing.T) {
|
|
||||||
for i, tt := range []struct {
|
|
||||||
in []Annotation
|
|
||||||
wb []byte
|
|
||||||
werr bool
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
[]Annotation{
|
|
||||||
makeAnno("foo", "bar"),
|
|
||||||
makeAnno("foo", "baz"),
|
|
||||||
makeAnno("website", "http://example.com/anno"),
|
|
||||||
},
|
|
||||||
nil,
|
|
||||||
true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
[]Annotation{
|
|
||||||
makeAnno("a", "b"),
|
|
||||||
},
|
|
||||||
[]byte(`[{"name":"a","value":"b"}]`),
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
[]Annotation{
|
|
||||||
makeAnno("foo", "bar"),
|
|
||||||
makeAnno("website", "http://example.com/anno"),
|
|
||||||
},
|
|
||||||
[]byte(`[{"name":"foo","value":"bar"},{"name":"website","value":"http://example.com/anno"}]`),
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
} {
|
|
||||||
a := Annotations(tt.in)
|
|
||||||
b, err := a.MarshalJSON()
|
|
||||||
if !reflect.DeepEqual(b, tt.wb) {
|
|
||||||
t.Errorf("#%d: b=%s, want %s", i, b, tt.wb)
|
|
||||||
}
|
|
||||||
gerr := err != nil
|
|
||||||
if gerr != tt.werr {
|
|
||||||
t.Errorf("#%d: gerr=%t, want %t (err=%v)", i, gerr, tt.werr, err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestAnnotationsUnmarshal(t *testing.T) {
|
|
||||||
tests := []struct {
|
|
||||||
in string
|
|
||||||
wann *Annotations
|
|
||||||
werr bool
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
`garbage`,
|
|
||||||
&Annotations{},
|
|
||||||
true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`[{"name":"a","value":"b"},{"name":"a","value":"b"}]`,
|
|
||||||
&Annotations{},
|
|
||||||
true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`[{"name":"a","value":"b"}]`,
|
|
||||||
&Annotations{
|
|
||||||
makeAnno("a", "b"),
|
|
||||||
},
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
for i, tt := range tests {
|
|
||||||
a := &Annotations{}
|
|
||||||
err := a.UnmarshalJSON([]byte(tt.in))
|
|
||||||
gerr := err != nil
|
|
||||||
if gerr != tt.werr {
|
|
||||||
t.Errorf("#%d: gerr=%t, want %t (err=%v)", i, gerr, tt.werr, err)
|
|
||||||
}
|
|
||||||
if !reflect.DeepEqual(a, tt.wann) {
|
|
||||||
t.Errorf("#%d: ann=%#v, want %#v", i, a, tt.wann)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestAnnotationsGet(t *testing.T) {
|
|
||||||
for i, tt := range []struct {
|
|
||||||
in string
|
|
||||||
wval string
|
|
||||||
wok bool
|
|
||||||
}{
|
|
||||||
{"foo", "bar", true},
|
|
||||||
{"website", "http://example.com/anno", true},
|
|
||||||
{"baz", "", false},
|
|
||||||
{"wuuf", "", false},
|
|
||||||
} {
|
|
||||||
a := Annotations{
|
|
||||||
makeAnno("foo", "bar"),
|
|
||||||
makeAnno("website", "http://example.com/anno"),
|
|
||||||
}
|
|
||||||
gval, gok := a.Get(tt.in)
|
|
||||||
if gval != tt.wval {
|
|
||||||
t.Errorf("#%d: val=%v, want %v", i, gval, tt.wval)
|
|
||||||
}
|
|
||||||
if gok != tt.wok {
|
|
||||||
t.Errorf("#%d: ok=%t, want %t", i, gok, tt.wok)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestAnnotationsSet(t *testing.T) {
|
|
||||||
a := Annotations{}
|
|
||||||
|
|
||||||
a.Set("foo", "bar")
|
|
||||||
w := Annotations{
|
|
||||||
Annotation{ACIdentifier("foo"), "bar"},
|
|
||||||
}
|
|
||||||
if !reflect.DeepEqual(w, a) {
|
|
||||||
t.Fatalf("want %v, got %v", w, a)
|
|
||||||
}
|
|
||||||
|
|
||||||
a.Set("dog", "woof")
|
|
||||||
w = Annotations{
|
|
||||||
Annotation{ACIdentifier("foo"), "bar"},
|
|
||||||
Annotation{ACIdentifier("dog"), "woof"},
|
|
||||||
}
|
|
||||||
if !reflect.DeepEqual(w, a) {
|
|
||||||
t.Fatalf("want %v, got %v", w, a)
|
|
||||||
}
|
|
||||||
|
|
||||||
a.Set("foo", "baz")
|
|
||||||
a.Set("example.com/foo_bar", "quux")
|
|
||||||
w = Annotations{
|
|
||||||
Annotation{ACIdentifier("foo"), "baz"},
|
|
||||||
Annotation{ACIdentifier("dog"), "woof"},
|
|
||||||
Annotation{ACIdentifier("example.com/foo_bar"), "quux"},
|
|
||||||
}
|
|
||||||
if !reflect.DeepEqual(w, a) {
|
|
||||||
t.Fatalf("want %v, got %v", w, a)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
230
Godeps/_workspace/src/github.com/appc/spec/schema/types/app_test.go
generated
vendored
230
Godeps/_workspace/src/github.com/appc/spec/schema/types/app_test.go
generated
vendored
@@ -1,230 +0,0 @@
|
|||||||
// Copyright 2015 The appc Authors
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
package types
|
|
||||||
|
|
||||||
import (
|
|
||||||
"reflect"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestAppValid(t *testing.T) {
|
|
||||||
tests := []App{
|
|
||||||
App{
|
|
||||||
Exec: []string{"/bin/httpd"},
|
|
||||||
User: "0",
|
|
||||||
Group: "0",
|
|
||||||
WorkingDirectory: "/tmp",
|
|
||||||
},
|
|
||||||
App{
|
|
||||||
Exec: []string{"/app"},
|
|
||||||
User: "0",
|
|
||||||
Group: "0",
|
|
||||||
EventHandlers: []EventHandler{
|
|
||||||
{Name: "pre-start"},
|
|
||||||
{Name: "post-stop"},
|
|
||||||
},
|
|
||||||
Environment: []EnvironmentVariable{
|
|
||||||
{Name: "DEBUG", Value: "true"},
|
|
||||||
},
|
|
||||||
WorkingDirectory: "/tmp",
|
|
||||||
},
|
|
||||||
App{
|
|
||||||
Exec: []string{"/app", "arg1", "arg2"},
|
|
||||||
User: "0",
|
|
||||||
Group: "0",
|
|
||||||
WorkingDirectory: "/tmp",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
for i, tt := range tests {
|
|
||||||
if err := tt.assertValid(); err != nil {
|
|
||||||
t.Errorf("#%d: err == %v, want nil", i, err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestAppExecInvalid(t *testing.T) {
|
|
||||||
tests := []App{
|
|
||||||
App{
|
|
||||||
Exec: nil,
|
|
||||||
},
|
|
||||||
App{
|
|
||||||
Exec: []string{},
|
|
||||||
User: "0",
|
|
||||||
Group: "0",
|
|
||||||
},
|
|
||||||
App{
|
|
||||||
Exec: []string{"app"},
|
|
||||||
User: "0",
|
|
||||||
Group: "0",
|
|
||||||
},
|
|
||||||
App{
|
|
||||||
Exec: []string{"bin/app", "arg1"},
|
|
||||||
User: "0",
|
|
||||||
Group: "0",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
for i, tt := range tests {
|
|
||||||
if err := tt.assertValid(); err == nil {
|
|
||||||
t.Errorf("#%d: err == nil, want non-nil", i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestAppEventHandlersInvalid(t *testing.T) {
|
|
||||||
tests := []App{
|
|
||||||
App{
|
|
||||||
Exec: []string{"/bin/httpd"},
|
|
||||||
User: "0",
|
|
||||||
Group: "0",
|
|
||||||
EventHandlers: []EventHandler{
|
|
||||||
EventHandler{
|
|
||||||
Name: "pre-start",
|
|
||||||
},
|
|
||||||
EventHandler{
|
|
||||||
Name: "pre-start",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
App{
|
|
||||||
Exec: []string{"/bin/httpd"},
|
|
||||||
User: "0",
|
|
||||||
Group: "0",
|
|
||||||
EventHandlers: []EventHandler{
|
|
||||||
EventHandler{
|
|
||||||
Name: "post-stop",
|
|
||||||
},
|
|
||||||
EventHandler{
|
|
||||||
Name: "pre-start",
|
|
||||||
},
|
|
||||||
EventHandler{
|
|
||||||
Name: "post-stop",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
for i, tt := range tests {
|
|
||||||
if err := tt.assertValid(); err == nil {
|
|
||||||
t.Errorf("#%d: err == nil, want non-nil", i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestUserGroupInvalid(t *testing.T) {
|
|
||||||
tests := []App{
|
|
||||||
App{
|
|
||||||
Exec: []string{"/app"},
|
|
||||||
},
|
|
||||||
App{
|
|
||||||
Exec: []string{"/app"},
|
|
||||||
User: "0",
|
|
||||||
},
|
|
||||||
App{
|
|
||||||
Exec: []string{"app"},
|
|
||||||
Group: "0",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
for i, tt := range tests {
|
|
||||||
if err := tt.assertValid(); err == nil {
|
|
||||||
t.Errorf("#%d: err == nil, want non-nil", i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestAppWorkingDirectoryInvalid(t *testing.T) {
|
|
||||||
tests := []App{
|
|
||||||
App{
|
|
||||||
Exec: []string{"/app"},
|
|
||||||
User: "foo",
|
|
||||||
Group: "bar",
|
|
||||||
WorkingDirectory: "stuff",
|
|
||||||
},
|
|
||||||
App{
|
|
||||||
Exec: []string{"/app"},
|
|
||||||
User: "foo",
|
|
||||||
Group: "bar",
|
|
||||||
WorkingDirectory: "../home/fred",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
for i, tt := range tests {
|
|
||||||
if err := tt.assertValid(); err == nil {
|
|
||||||
t.Errorf("#%d: err == nil, want non-nil", i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestAppEnvironmentInvalid(t *testing.T) {
|
|
||||||
tests := []App{
|
|
||||||
App{
|
|
||||||
Exec: []string{"/app"},
|
|
||||||
User: "foo",
|
|
||||||
Group: "bar",
|
|
||||||
Environment: Environment{
|
|
||||||
EnvironmentVariable{"0DEBUG", "true"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
for i, tt := range tests {
|
|
||||||
if err := tt.assertValid(); err == nil {
|
|
||||||
t.Errorf("#%d: err == nil, want non-nil", i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestAppUnmarshal(t *testing.T) {
|
|
||||||
tests := []struct {
|
|
||||||
in string
|
|
||||||
wann *App
|
|
||||||
werr bool
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
`garbage`,
|
|
||||||
&App{},
|
|
||||||
true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`{"Exec":"not a list"}`,
|
|
||||||
&App{},
|
|
||||||
true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`{"Exec":["notfullyqualified"]}`,
|
|
||||||
&App{},
|
|
||||||
true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`{"Exec":["/a"],"User":"0","Group":"0"}`,
|
|
||||||
&App{
|
|
||||||
Exec: Exec{
|
|
||||||
"/a",
|
|
||||||
},
|
|
||||||
User: "0",
|
|
||||||
Group: "0",
|
|
||||||
Environment: make(Environment, 0),
|
|
||||||
},
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
for i, tt := range tests {
|
|
||||||
a := &App{}
|
|
||||||
err := a.UnmarshalJSON([]byte(tt.in))
|
|
||||||
gerr := err != nil
|
|
||||||
if gerr != tt.werr {
|
|
||||||
t.Errorf("#%d: gerr=%t, want %t (err=%v)", i, gerr, tt.werr, err)
|
|
||||||
}
|
|
||||||
if !reflect.DeepEqual(a, tt.wann) {
|
|
||||||
t.Errorf("#%d: ann=%#v, want %#v", i, a, tt.wann)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
80
Godeps/_workspace/src/github.com/appc/spec/schema/types/date_test.go
generated
vendored
80
Godeps/_workspace/src/github.com/appc/spec/schema/types/date_test.go
generated
vendored
@@ -1,80 +0,0 @@
|
|||||||
// Copyright 2015 The appc Authors
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
package types
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"testing"
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
pst = time.FixedZone("Pacific", -8*60*60)
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestUnmarshalDate(t *testing.T) {
|
|
||||||
tests := []struct {
|
|
||||||
in string
|
|
||||||
|
|
||||||
wt time.Time
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
`"2004-05-14T23:11:14+00:00"`,
|
|
||||||
|
|
||||||
time.Date(2004, 05, 14, 23, 11, 14, 0, time.UTC),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`"2001-02-03T04:05:06Z"`,
|
|
||||||
|
|
||||||
time.Date(2001, 02, 03, 04, 05, 06, 0, time.UTC),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`"2014-11-14T17:36:54-08:00"`,
|
|
||||||
|
|
||||||
time.Date(2014, 11, 14, 17, 36, 54, 0, pst),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`"2004-05-14T23:11:14+00:00"`,
|
|
||||||
|
|
||||||
time.Date(2004, 05, 14, 23, 11, 14, 0, time.UTC),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
for i, tt := range tests {
|
|
||||||
var d Date
|
|
||||||
if err := json.Unmarshal([]byte(tt.in), &d); err != nil {
|
|
||||||
t.Errorf("#%d: got err=%v, want nil", i, err)
|
|
||||||
}
|
|
||||||
if gt := time.Time(d); !gt.Equal(tt.wt) {
|
|
||||||
t.Errorf("#%d: got time=%v, want %v", i, gt, tt.wt)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestUnmarshalDateBad(t *testing.T) {
|
|
||||||
tests := []string{
|
|
||||||
`not a json string`,
|
|
||||||
`2014-11-14T17:36:54-08:00`,
|
|
||||||
`"garbage"`,
|
|
||||||
`"1416015188"`,
|
|
||||||
`"Fri Nov 14 17:53:02 PST 2014"`,
|
|
||||||
`"2014-11-1417:36:54"`,
|
|
||||||
}
|
|
||||||
for i, tt := range tests {
|
|
||||||
var d Date
|
|
||||||
if err := json.Unmarshal([]byte(tt), &d); err == nil {
|
|
||||||
t.Errorf("#%d: unexpected nil err", i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
40
Godeps/_workspace/src/github.com/appc/spec/schema/types/dependencies_test.go
generated
vendored
40
Godeps/_workspace/src/github.com/appc/spec/schema/types/dependencies_test.go
generated
vendored
@@ -1,40 +0,0 @@
|
|||||||
// Copyright 2015 The appc Authors
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
package types
|
|
||||||
|
|
||||||
import "testing"
|
|
||||||
|
|
||||||
func TestEmptyHash(t *testing.T) {
|
|
||||||
dj := `{"imageName": "example.com/reduce-worker-base"}`
|
|
||||||
|
|
||||||
var d Dependency
|
|
||||||
|
|
||||||
err := d.UnmarshalJSON([]byte(dj))
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("unexpected error: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Marshal to verify that marshalling works without validation errors
|
|
||||||
buf, err := d.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("unexpected error: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Unmarshal to verify that the generated json will not create wrong empty hash
|
|
||||||
err = d.UnmarshalJSON(buf)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("unexpected error: %v", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
76
Godeps/_workspace/src/github.com/appc/spec/schema/types/environment_test.go
generated
vendored
76
Godeps/_workspace/src/github.com/appc/spec/schema/types/environment_test.go
generated
vendored
@@ -1,76 +0,0 @@
|
|||||||
// Copyright 2015 The appc Authors
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
package types
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestEnvironmentAssertValid(t *testing.T) {
|
|
||||||
tests := []struct {
|
|
||||||
env Environment
|
|
||||||
werr bool
|
|
||||||
}{
|
|
||||||
// duplicate names should fail
|
|
||||||
{
|
|
||||||
Environment{
|
|
||||||
EnvironmentVariable{"DEBUG", "true"},
|
|
||||||
EnvironmentVariable{"DEBUG", "true"},
|
|
||||||
},
|
|
||||||
true,
|
|
||||||
},
|
|
||||||
// empty name should fail
|
|
||||||
{
|
|
||||||
Environment{
|
|
||||||
EnvironmentVariable{"", "value"},
|
|
||||||
},
|
|
||||||
true,
|
|
||||||
},
|
|
||||||
// name beginning with digit should fail
|
|
||||||
{
|
|
||||||
Environment{
|
|
||||||
EnvironmentVariable{"0DEBUG", "true"},
|
|
||||||
},
|
|
||||||
true,
|
|
||||||
},
|
|
||||||
// name with non [A-Za-z0-9_] should fail
|
|
||||||
{
|
|
||||||
Environment{
|
|
||||||
EnvironmentVariable{"VERBOSE-DEBUG", "true"},
|
|
||||||
},
|
|
||||||
true,
|
|
||||||
},
|
|
||||||
// accepted environment variable forms
|
|
||||||
{
|
|
||||||
Environment{
|
|
||||||
EnvironmentVariable{"DEBUG", "true"},
|
|
||||||
},
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Environment{
|
|
||||||
EnvironmentVariable{"_0_DEBUG_0_", "true"},
|
|
||||||
},
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
for i, test := range tests {
|
|
||||||
env := Environment(test.env)
|
|
||||||
err := env.assertValid()
|
|
||||||
if gerr := (err != nil); gerr != test.werr {
|
|
||||||
t.Errorf("#%d: gerr=%t, want %t (err=%v)", i, gerr, test.werr, err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
42
Godeps/_workspace/src/github.com/appc/spec/schema/types/exec_test.go
generated
vendored
42
Godeps/_workspace/src/github.com/appc/spec/schema/types/exec_test.go
generated
vendored
@@ -1,42 +0,0 @@
|
|||||||
// Copyright 2015 The appc Authors
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
package types
|
|
||||||
|
|
||||||
import "testing"
|
|
||||||
|
|
||||||
func TestExecValid(t *testing.T) {
|
|
||||||
tests := []Exec{
|
|
||||||
Exec{"/bin/httpd"},
|
|
||||||
Exec{"/app"},
|
|
||||||
Exec{"/app", "arg1", "arg2"},
|
|
||||||
}
|
|
||||||
for i, tt := range tests {
|
|
||||||
if err := tt.assertValid(); err != nil {
|
|
||||||
t.Errorf("#%d: err == %v, want nil", i, err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestExecInvalid(t *testing.T) {
|
|
||||||
tests := []Exec{
|
|
||||||
Exec{},
|
|
||||||
Exec{"app"},
|
|
||||||
}
|
|
||||||
for i, tt := range tests {
|
|
||||||
if err := tt.assertValid(); err == nil {
|
|
||||||
t.Errorf("#%d: err == nil, want non-nil", i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
96
Godeps/_workspace/src/github.com/appc/spec/schema/types/hash_test.go
generated
vendored
96
Godeps/_workspace/src/github.com/appc/spec/schema/types/hash_test.go
generated
vendored
@@ -1,96 +0,0 @@
|
|||||||
// Copyright 2015 The appc Authors
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
package types
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestMarshalHash(t *testing.T) {
|
|
||||||
tests := []struct {
|
|
||||||
typ string
|
|
||||||
val string
|
|
||||||
|
|
||||||
wout string
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
"sha512",
|
|
||||||
"abcdefghi",
|
|
||||||
|
|
||||||
`"sha512-abcdefghi"`,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"sha512",
|
|
||||||
"06c733b1838136838e6d2d3e8fa5aea4c7905e92",
|
|
||||||
|
|
||||||
`"sha512-06c733b1838136838e6d2d3e8fa5aea4c7905e92"`,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
for i, tt := range tests {
|
|
||||||
h := Hash{
|
|
||||||
typ: tt.typ,
|
|
||||||
Val: tt.val,
|
|
||||||
}
|
|
||||||
b, err := json.Marshal(h)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("#%d: unexpected err=%v", i, err)
|
|
||||||
}
|
|
||||||
if g := string(b); g != tt.wout {
|
|
||||||
t.Errorf("#%d: got string=%v, want %v", i, g, tt.wout)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestMarshalHashBad(t *testing.T) {
|
|
||||||
tests := []struct {
|
|
||||||
typ string
|
|
||||||
val string
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
// empty value
|
|
||||||
"sha512",
|
|
||||||
"",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// bad type
|
|
||||||
"sha1",
|
|
||||||
"abcdef",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// empty type
|
|
||||||
"",
|
|
||||||
"abcdef",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// empty empty
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
for i, tt := range tests {
|
|
||||||
h := Hash{
|
|
||||||
typ: tt.typ,
|
|
||||||
Val: tt.val,
|
|
||||||
}
|
|
||||||
g, err := json.Marshal(h)
|
|
||||||
if err == nil {
|
|
||||||
t.Errorf("#%d: unexpected nil err", i)
|
|
||||||
}
|
|
||||||
if g != nil {
|
|
||||||
t.Errorf("#%d: unexpected non-nil bytes: %v", i, g)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
262
Godeps/_workspace/src/github.com/appc/spec/schema/types/isolator_test.go
generated
vendored
262
Godeps/_workspace/src/github.com/appc/spec/schema/types/isolator_test.go
generated
vendored
@@ -1,262 +0,0 @@
|
|||||||
// Copyright 2015 The appc Authors
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
package types
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"reflect"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestIsolatorUnmarshal(t *testing.T) {
|
|
||||||
tests := []struct {
|
|
||||||
msg string
|
|
||||||
werr bool
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
`{
|
|
||||||
"name": "os/linux/capabilities-retain-set",
|
|
||||||
"value": {"set": ["CAP_KILL"]}
|
|
||||||
}`,
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`{
|
|
||||||
"name": "os/linux/capabilities-retain-set",
|
|
||||||
"value": {"set": ["CAP_PONIES"]}
|
|
||||||
}`,
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`{
|
|
||||||
"name": "os/linux/capabilities-retain-set",
|
|
||||||
"value": {"set": []}
|
|
||||||
}`,
|
|
||||||
true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`{
|
|
||||||
"name": "os/linux/capabilities-retain-set",
|
|
||||||
"value": {"set": "CAP_PONIES"}
|
|
||||||
}`,
|
|
||||||
true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`{
|
|
||||||
"name": "resource/block-bandwidth",
|
|
||||||
"value": {"default": true, "limit": "1G"}
|
|
||||||
}`,
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`{
|
|
||||||
"name": "resource/block-bandwidth",
|
|
||||||
"value": {"default": false, "limit": "1G"}
|
|
||||||
}`,
|
|
||||||
true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`{
|
|
||||||
"name": "resource/block-bandwidth",
|
|
||||||
"value": {"request": "30G", "limit": "1G"}
|
|
||||||
}`,
|
|
||||||
true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`{
|
|
||||||
"name": "resource/block-iops",
|
|
||||||
"value": {"default": true, "limit": "1G"}
|
|
||||||
}`,
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`{
|
|
||||||
"name": "resource/block-iops",
|
|
||||||
"value": {"default": false, "limit": "1G"}
|
|
||||||
}`,
|
|
||||||
true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`{
|
|
||||||
"name": "resource/block-iops",
|
|
||||||
"value": {"request": "30G", "limit": "1G"}
|
|
||||||
}`,
|
|
||||||
true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`{
|
|
||||||
"name": "resource/cpu",
|
|
||||||
"value": {"request": "30m", "limit": "1m"}
|
|
||||||
}`,
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`{
|
|
||||||
"name": "resource/memory",
|
|
||||||
"value": {"request": "1G", "limit": "2Gi"}
|
|
||||||
}`,
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`{
|
|
||||||
"name": "resource/memory",
|
|
||||||
"value": {"default": true, "request": "1G", "limit": "2G"}
|
|
||||||
}`,
|
|
||||||
true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`{
|
|
||||||
"name": "resource/network-bandwidth",
|
|
||||||
"value": {"default": true, "limit": "1G"}
|
|
||||||
}`,
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`{
|
|
||||||
"name": "resource/network-bandwidth",
|
|
||||||
"value": {"default": false, "limit": "1G"}
|
|
||||||
}`,
|
|
||||||
true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`{
|
|
||||||
"name": "resource/network-bandwidth",
|
|
||||||
"value": {"request": "30G", "limit": "1G"}
|
|
||||||
}`,
|
|
||||||
true,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
for i, tt := range tests {
|
|
||||||
var ii Isolator
|
|
||||||
err := ii.UnmarshalJSON([]byte(tt.msg))
|
|
||||||
if gerr := (err != nil); gerr != tt.werr {
|
|
||||||
t.Errorf("#%d: gerr=%t, want %t (err=%v)", i, gerr, tt.werr, err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestIsolatorsGetByName(t *testing.T) {
|
|
||||||
ex := `
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"name": "resource/cpu",
|
|
||||||
"value": {"request": "30m", "limit": "1m"}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "resource/memory",
|
|
||||||
"value": {"request": "1G", "limit": "2Gi"}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "os/linux/capabilities-retain-set",
|
|
||||||
"value": {"set": ["CAP_KILL"]}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "os/linux/capabilities-remove-set",
|
|
||||||
"value": {"set": ["CAP_KILL"]}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
`
|
|
||||||
|
|
||||||
tests := []struct {
|
|
||||||
name ACIdentifier
|
|
||||||
wlimit int64
|
|
||||||
wrequest int64
|
|
||||||
wset []LinuxCapability
|
|
||||||
}{
|
|
||||||
{"resource/cpu", 1, 30, nil},
|
|
||||||
{"resource/memory", 2147483648, 1000000000, nil},
|
|
||||||
{"os/linux/capabilities-retain-set", 0, 0, []LinuxCapability{"CAP_KILL"}},
|
|
||||||
{"os/linux/capabilities-remove-set", 0, 0, []LinuxCapability{"CAP_KILL"}},
|
|
||||||
}
|
|
||||||
|
|
||||||
var is Isolators
|
|
||||||
err := json.Unmarshal([]byte(ex), &is)
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(is) < 2 {
|
|
||||||
t.Fatalf("too few items %v", len(is))
|
|
||||||
}
|
|
||||||
|
|
||||||
for i, tt := range tests {
|
|
||||||
c := is.GetByName(tt.name)
|
|
||||||
if c == nil {
|
|
||||||
t.Fatalf("can't find item %v in %v items", tt.name, len(is))
|
|
||||||
}
|
|
||||||
switch v := c.Value().(type) {
|
|
||||||
case Resource:
|
|
||||||
var r Resource = v
|
|
||||||
glimit := r.Limit()
|
|
||||||
grequest := r.Request()
|
|
||||||
|
|
||||||
var vlimit, vrequest int64
|
|
||||||
if tt.name == "resource/cpu" {
|
|
||||||
vlimit, vrequest = glimit.MilliValue(), grequest.MilliValue()
|
|
||||||
} else {
|
|
||||||
vlimit, vrequest = glimit.Value(), grequest.Value()
|
|
||||||
}
|
|
||||||
|
|
||||||
if vlimit != tt.wlimit {
|
|
||||||
t.Errorf("#%d: glimit=%v, want %v", i, vlimit, tt.wlimit)
|
|
||||||
}
|
|
||||||
if vrequest != tt.wrequest {
|
|
||||||
t.Errorf("#%d: grequest=%v, want %v", i, vrequest, tt.wrequest)
|
|
||||||
}
|
|
||||||
|
|
||||||
case LinuxCapabilitiesSet:
|
|
||||||
var s LinuxCapabilitiesSet = v
|
|
||||||
if !reflect.DeepEqual(s.Set(), tt.wset) {
|
|
||||||
t.Errorf("#%d: gset=%v, want %v", i, s.Set(), tt.wset)
|
|
||||||
}
|
|
||||||
|
|
||||||
default:
|
|
||||||
panic("unexecpected type")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestIsolatorUnrecognized(t *testing.T) {
|
|
||||||
msg := `
|
|
||||||
[{
|
|
||||||
"name": "resource/network-bandwidth",
|
|
||||||
"value": {"default": true, "limit": "1G"}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "resource/network-ponies",
|
|
||||||
"value": 0
|
|
||||||
}]`
|
|
||||||
|
|
||||||
ex := Isolators{
|
|
||||||
{Name: "resource/network-ponies"},
|
|
||||||
}
|
|
||||||
|
|
||||||
is := Isolators{}
|
|
||||||
if err := json.Unmarshal([]byte(msg), &is); err != nil {
|
|
||||||
t.Fatalf("failed to unmarshal isolators: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
u := is.Unrecognized()
|
|
||||||
if len(u) != len(ex) {
|
|
||||||
t.Errorf("unrecognized isolator list is wrong len: want %v, got %v", len(ex), len(u))
|
|
||||||
}
|
|
||||||
|
|
||||||
for i, e := range ex {
|
|
||||||
if e.Name != u[i].Name {
|
|
||||||
t.Errorf("unrecognized isolator list mismatch: want %v, got %v", e.Name, u[i].Name)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
108
Godeps/_workspace/src/github.com/appc/spec/schema/types/labels_test.go
generated
vendored
108
Godeps/_workspace/src/github.com/appc/spec/schema/types/labels_test.go
generated
vendored
@@ -1,108 +0,0 @@
|
|||||||
// Copyright 2015 The appc Authors
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
package types
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"strings"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestLabels(t *testing.T) {
|
|
||||||
tests := []struct {
|
|
||||||
in string
|
|
||||||
errPrefix string
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
`[{"name": "os", "value": "linux"}, {"name": "arch", "value": "amd64"}]`,
|
|
||||||
"",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`[{"name": "os", "value": "linux"}, {"name": "arch", "value": "aarch64"}]`,
|
|
||||||
"",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`[{"name": "os", "value": "linux"}, {"name": "arch", "value": "arm64"}]`,
|
|
||||||
`bad arch "arm64" for linux`,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`[{"name": "os", "value": "linux"}, {"name": "arch", "value": "aarch64_be"}]`,
|
|
||||||
"",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`[{"name": "os", "value": "linux"}, {"name": "arch", "value": "arm64_be"}]`,
|
|
||||||
`bad arch "arm64_be" for linux`,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`[{"name": "os", "value": "linux"}, {"name": "arch", "value": "arm"}]`,
|
|
||||||
`bad arch "arm" for linux`,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`[{"name": "os", "value": "linux"}, {"name": "arch", "value": "armv6l"}]`,
|
|
||||||
"",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`[{"name": "os", "value": "linux"}, {"name": "arch", "value": "armv7l"}]`,
|
|
||||||
"",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`[{"name": "os", "value": "linux"}, {"name": "arch", "value": "armv7b"}]`,
|
|
||||||
"",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`[{"name": "os", "value": "freebsd"}, {"name": "arch", "value": "amd64"}]`,
|
|
||||||
"",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`[{"name": "os", "value": "OS/360"}, {"name": "arch", "value": "S/360"}]`,
|
|
||||||
`bad os "OS/360"`,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`[{"name": "os", "value": "freebsd"}, {"name": "arch", "value": "armv7b"}]`,
|
|
||||||
`bad arch "armv7b" for freebsd`,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`[{"name": "name"}]`,
|
|
||||||
`invalid label name: "name"`,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`[{"name": "os", "value": "linux"}, {"name": "os", "value": "freebsd"}]`,
|
|
||||||
`duplicate labels of name "os"`,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`[{"name": "arch", "value": "amd64"}, {"name": "os", "value": "freebsd"}, {"name": "arch", "value": "x86_64"}]`,
|
|
||||||
`duplicate labels of name "arch"`,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`[]`,
|
|
||||||
"",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
for i, tt := range tests {
|
|
||||||
var l Labels
|
|
||||||
if err := json.Unmarshal([]byte(tt.in), &l); err != nil {
|
|
||||||
if tt.errPrefix == "" {
|
|
||||||
t.Errorf("#%d: got err=%v, expected no error", i, err)
|
|
||||||
} else if !strings.HasPrefix(err.Error(), tt.errPrefix) {
|
|
||||||
t.Errorf("#%d: got err=%v, expected prefix %#v", i, err, tt.errPrefix)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
t.Log(l)
|
|
||||||
if tt.errPrefix != "" {
|
|
||||||
t.Errorf("#%d: got no err, expected prefix %#v", i, tt.errPrefix)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
83
Godeps/_workspace/src/github.com/appc/spec/schema/types/mountpoint_test.go
generated
vendored
83
Godeps/_workspace/src/github.com/appc/spec/schema/types/mountpoint_test.go
generated
vendored
@@ -1,83 +0,0 @@
|
|||||||
// Copyright 2015 The appc Authors
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
package types
|
|
||||||
|
|
||||||
import (
|
|
||||||
"reflect"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestMountPointFromString(t *testing.T) {
|
|
||||||
tests := []struct {
|
|
||||||
s string
|
|
||||||
mount MountPoint
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
"foobar,path=/tmp",
|
|
||||||
MountPoint{
|
|
||||||
Name: "foobar",
|
|
||||||
Path: "/tmp",
|
|
||||||
ReadOnly: false,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"foobar,path=/tmp,readOnly=false",
|
|
||||||
MountPoint{
|
|
||||||
Name: "foobar",
|
|
||||||
Path: "/tmp",
|
|
||||||
ReadOnly: false,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"foobar,path=/tmp,readOnly=true",
|
|
||||||
MountPoint{
|
|
||||||
Name: "foobar",
|
|
||||||
Path: "/tmp",
|
|
||||||
ReadOnly: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
for i, tt := range tests {
|
|
||||||
mount, err := MountPointFromString(tt.s)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("#%d: got err=%v, want nil", i, err)
|
|
||||||
}
|
|
||||||
if !reflect.DeepEqual(*mount, tt.mount) {
|
|
||||||
t.Errorf("#%d: mount=%v, want %v", i, *mount, tt.mount)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestMountPointFromStringBad(t *testing.T) {
|
|
||||||
tests := []string{
|
|
||||||
"#foobar,path=/tmp",
|
|
||||||
"foobar,path=/tmp,readOnly=true,asdf=asdf",
|
|
||||||
"foobar,path=/tmp,readOnly=maybe",
|
|
||||||
"foobar,path=/tmp,readOnly=",
|
|
||||||
"foobar,path=",
|
|
||||||
"foobar",
|
|
||||||
"",
|
|
||||||
",path=/",
|
|
||||||
}
|
|
||||||
for i, in := range tests {
|
|
||||||
l, err := MountPointFromString(in)
|
|
||||||
if l != nil {
|
|
||||||
t.Errorf("#%d: got l=%v, want nil", i, l)
|
|
||||||
}
|
|
||||||
if err == nil {
|
|
||||||
t.Errorf("#%d: got err=nil, want non-nil", i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
48
Godeps/_workspace/src/github.com/appc/spec/schema/types/port_test.go
generated
vendored
48
Godeps/_workspace/src/github.com/appc/spec/schema/types/port_test.go
generated
vendored
@@ -1,48 +0,0 @@
|
|||||||
// Copyright 2015 The appc Authors
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
package types
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestGoodPort(t *testing.T) {
|
|
||||||
p := Port{
|
|
||||||
Port: 32456,
|
|
||||||
Count: 100,
|
|
||||||
}
|
|
||||||
if err := p.assertValid(); err != nil {
|
|
||||||
t.Errorf("good port assertion failed: %v", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestBadPort(t *testing.T) {
|
|
||||||
p := Port{
|
|
||||||
Port: 88888,
|
|
||||||
}
|
|
||||||
if p.assertValid() == nil {
|
|
||||||
t.Errorf("bad port asserted valid")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestBadRange(t *testing.T) {
|
|
||||||
p := Port{
|
|
||||||
Port: 32456,
|
|
||||||
Count: 45678,
|
|
||||||
}
|
|
||||||
if p.assertValid() == nil {
|
|
||||||
t.Errorf("bad port range asserted valid")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
129
Godeps/_workspace/src/github.com/appc/spec/schema/types/semver_test.go
generated
vendored
129
Godeps/_workspace/src/github.com/appc/spec/schema/types/semver_test.go
generated
vendored
@@ -1,129 +0,0 @@
|
|||||||
// Copyright 2015 The appc Authors
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
package types
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"reflect"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/coreos/go-semver/semver"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestMarshalSemver(t *testing.T) {
|
|
||||||
tests := []struct {
|
|
||||||
sv SemVer
|
|
||||||
|
|
||||||
wd []byte
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
SemVer(semver.Version{Major: 1}),
|
|
||||||
|
|
||||||
[]byte(`"1.0.0"`),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
SemVer(semver.Version{Major: 3, Minor: 2, Patch: 1}),
|
|
||||||
|
|
||||||
[]byte(`"3.2.1"`),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
SemVer(semver.Version{Major: 3, Minor: 2, Patch: 1, PreRelease: "foo"}),
|
|
||||||
|
|
||||||
[]byte(`"3.2.1-foo"`),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
SemVer(semver.Version{Major: 1, Minor: 2, Patch: 3, PreRelease: "alpha", Metadata: "git"}),
|
|
||||||
|
|
||||||
[]byte(`"1.2.3-alpha+git"`),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
for i, tt := range tests {
|
|
||||||
d, err := json.Marshal(tt.sv)
|
|
||||||
if !reflect.DeepEqual(d, tt.wd) {
|
|
||||||
t.Errorf("#%d: d=%v, want %v", i, string(d), string(tt.wd))
|
|
||||||
}
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("#%d: err=%v, want nil", i, err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestUnmarshalSemver(t *testing.T) {
|
|
||||||
tests := []struct {
|
|
||||||
d []byte
|
|
||||||
|
|
||||||
wsv SemVer
|
|
||||||
werr bool
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
[]byte(`"1.0.0"`),
|
|
||||||
|
|
||||||
SemVer(semver.Version{Major: 1}),
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
[]byte(`"3.2.1"`),
|
|
||||||
SemVer(semver.Version{Major: 3, Minor: 2, Patch: 1}),
|
|
||||||
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
[]byte(`"3.2.1-foo"`),
|
|
||||||
|
|
||||||
SemVer(semver.Version{Major: 3, Minor: 2, Patch: 1, PreRelease: "foo"}),
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
[]byte(`"1.2.3-alpha+git"`),
|
|
||||||
|
|
||||||
SemVer(semver.Version{Major: 1, Minor: 2, Patch: 3, PreRelease: "alpha", Metadata: "git"}),
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
[]byte(`"1"`),
|
|
||||||
|
|
||||||
SemVer{},
|
|
||||||
true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
[]byte(`"1.2.3.4"`),
|
|
||||||
|
|
||||||
SemVer{},
|
|
||||||
true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
[]byte(`1.2.3`),
|
|
||||||
|
|
||||||
SemVer{},
|
|
||||||
true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
[]byte(`"v1.2.3"`),
|
|
||||||
|
|
||||||
SemVer{},
|
|
||||||
true,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
for i, tt := range tests {
|
|
||||||
var sv SemVer
|
|
||||||
err := json.Unmarshal(tt.d, &sv)
|
|
||||||
if !reflect.DeepEqual(sv, tt.wsv) {
|
|
||||||
t.Errorf("#%d: semver=%#v, want %#v", i, sv, tt.wsv)
|
|
||||||
}
|
|
||||||
if gerr := (err != nil); gerr != tt.werr {
|
|
||||||
t.Errorf("#%d: err==%v, want errstate %t", i, err, tt.werr)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
137
Godeps/_workspace/src/github.com/appc/spec/schema/types/url_test.go
generated
vendored
137
Godeps/_workspace/src/github.com/appc/spec/schema/types/url_test.go
generated
vendored
@@ -1,137 +0,0 @@
|
|||||||
// Copyright 2015 The appc Authors
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
package types
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"net/url"
|
|
||||||
"reflect"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func mustParseURL(t *testing.T, s string) url.URL {
|
|
||||||
u, err := url.Parse(s)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("error parsing URL: %v", err)
|
|
||||||
}
|
|
||||||
return *u
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestMarshalURL(t *testing.T) {
|
|
||||||
tests := []struct {
|
|
||||||
u url.URL
|
|
||||||
|
|
||||||
w string
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
mustParseURL(t, "http://foo.com"),
|
|
||||||
|
|
||||||
`"http://foo.com"`,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
mustParseURL(t, "http://foo.com/huh/what?is=this"),
|
|
||||||
|
|
||||||
`"http://foo.com/huh/what?is=this"`,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
mustParseURL(t, "https://example.com/bar"),
|
|
||||||
|
|
||||||
`"https://example.com/bar"`,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
for i, tt := range tests {
|
|
||||||
u := URL(tt.u)
|
|
||||||
b, err := json.Marshal(u)
|
|
||||||
if g := string(b); g != tt.w {
|
|
||||||
t.Errorf("#%d: got %q, want %q", i, g, tt.w)
|
|
||||||
}
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("#%d: err=%v, want nil", i, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestMarshalURLBad(t *testing.T) {
|
|
||||||
tests := []url.URL{
|
|
||||||
mustParseURL(t, "ftp://foo.com"),
|
|
||||||
mustParseURL(t, "unix:///hello"),
|
|
||||||
}
|
|
||||||
for i, tt := range tests {
|
|
||||||
u := URL(tt)
|
|
||||||
b, err := json.Marshal(u)
|
|
||||||
if b != nil {
|
|
||||||
t.Errorf("#%d: got %v, want nil", i, b)
|
|
||||||
}
|
|
||||||
if err == nil {
|
|
||||||
t.Errorf("#%d: got unexpected err=nil", i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestUnmarshalURL(t *testing.T) {
|
|
||||||
tests := []struct {
|
|
||||||
in string
|
|
||||||
|
|
||||||
w URL
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
`"http://foo.com"`,
|
|
||||||
|
|
||||||
URL(mustParseURL(t, "http://foo.com")),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`"http://yis.com/hello?goodbye=yes"`,
|
|
||||||
|
|
||||||
URL(mustParseURL(t, "http://yis.com/hello?goodbye=yes")),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
`"https://ohai.net"`,
|
|
||||||
|
|
||||||
URL(mustParseURL(t, "https://ohai.net")),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
for i, tt := range tests {
|
|
||||||
var g URL
|
|
||||||
err := json.Unmarshal([]byte(tt.in), &g)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("#%d: want err=nil, got %v", i, err)
|
|
||||||
}
|
|
||||||
if !reflect.DeepEqual(g, tt.w) {
|
|
||||||
t.Errorf("#%d: got url=%v, want %v", i, g, tt.w)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestUnmarshalURLBad(t *testing.T) {
|
|
||||||
var empty = URL{}
|
|
||||||
tests := []string{
|
|
||||||
"badjson",
|
|
||||||
"http://google.com",
|
|
||||||
`"ftp://example.com"`,
|
|
||||||
`"unix://file.net"`,
|
|
||||||
`"not a url"`,
|
|
||||||
}
|
|
||||||
for i, tt := range tests {
|
|
||||||
var g URL
|
|
||||||
err := json.Unmarshal([]byte(tt), &g)
|
|
||||||
if err == nil {
|
|
||||||
t.Errorf("#%d: want err, got nil", i)
|
|
||||||
}
|
|
||||||
if !reflect.DeepEqual(g, empty) {
|
|
||||||
t.Errorf("#%d: got %v, want %v", i, g, empty)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
73
Godeps/_workspace/src/github.com/appc/spec/schema/types/uuid_test.go
generated
vendored
73
Godeps/_workspace/src/github.com/appc/spec/schema/types/uuid_test.go
generated
vendored
@@ -1,73 +0,0 @@
|
|||||||
// Copyright 2015 The appc Authors
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
package types
|
|
||||||
|
|
||||||
import "testing"
|
|
||||||
|
|
||||||
func TestNewUUID(t *testing.T) {
|
|
||||||
tests := []struct {
|
|
||||||
in string
|
|
||||||
ws string
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
"6733C088-A507-4694-AABF-EDBE4FC5266F",
|
|
||||||
|
|
||||||
"6733c088-a507-4694-aabf-edbe4fc5266f",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"6733C088A5074694AABFEDBE4FC5266F",
|
|
||||||
|
|
||||||
"6733c088-a507-4694-aabf-edbe4fc5266f",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"0aaf0a79-1a39-4d59-abbf-1bebca8209d2",
|
|
||||||
|
|
||||||
"0aaf0a79-1a39-4d59-abbf-1bebca8209d2",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"0aaf0a791a394d59abbf1bebca8209d2",
|
|
||||||
|
|
||||||
"0aaf0a79-1a39-4d59-abbf-1bebca8209d2",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
for i, tt := range tests {
|
|
||||||
gu, err := NewUUID(tt.in)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("#%d: err=%v, want %v", i, err, nil)
|
|
||||||
}
|
|
||||||
if gs := gu.String(); gs != tt.ws {
|
|
||||||
t.Errorf("#%d: String()=%v, want %v", i, gs, tt.ws)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestNewUUIDBad(t *testing.T) {
|
|
||||||
tests := []string{
|
|
||||||
"asdf",
|
|
||||||
"0AAF0A79-1A39-4D59-ABBF-1BEBCA8209D2ABC",
|
|
||||||
"",
|
|
||||||
}
|
|
||||||
for i, tt := range tests {
|
|
||||||
g, err := NewUUID(tt)
|
|
||||||
if err == nil {
|
|
||||||
t.Errorf("#%d: err=nil, want non-nil", i)
|
|
||||||
}
|
|
||||||
if g != nil {
|
|
||||||
t.Errorf("#%d: err=%v, want %v", i, g, nil)
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
99
Godeps/_workspace/src/github.com/appc/spec/schema/types/volume_test.go
generated
vendored
99
Godeps/_workspace/src/github.com/appc/spec/schema/types/volume_test.go
generated
vendored
@@ -1,99 +0,0 @@
|
|||||||
// Copyright 2015 The appc Authors
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
package types
|
|
||||||
|
|
||||||
import (
|
|
||||||
"reflect"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestVolumeFromString(t *testing.T) {
|
|
||||||
trueVar := true
|
|
||||||
falseVar := false
|
|
||||||
tests := []struct {
|
|
||||||
s string
|
|
||||||
v Volume
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
"foobar,kind=host,source=/tmp",
|
|
||||||
Volume{
|
|
||||||
Name: "foobar",
|
|
||||||
Kind: "host",
|
|
||||||
Source: "/tmp",
|
|
||||||
ReadOnly: nil,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"foobar,kind=host,source=/tmp,readOnly=false",
|
|
||||||
Volume{
|
|
||||||
Name: "foobar",
|
|
||||||
Kind: "host",
|
|
||||||
Source: "/tmp",
|
|
||||||
ReadOnly: &falseVar,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"foobar,kind=host,source=/tmp,readOnly=true",
|
|
||||||
Volume{
|
|
||||||
Name: "foobar",
|
|
||||||
Kind: "host",
|
|
||||||
Source: "/tmp",
|
|
||||||
ReadOnly: &trueVar,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"foobar,kind=empty",
|
|
||||||
Volume{
|
|
||||||
Name: "foobar",
|
|
||||||
Kind: "empty",
|
|
||||||
ReadOnly: nil,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"foobar,kind=empty,readOnly=true",
|
|
||||||
Volume{
|
|
||||||
Name: "foobar",
|
|
||||||
Kind: "empty",
|
|
||||||
ReadOnly: &trueVar,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
for i, tt := range tests {
|
|
||||||
v, err := VolumeFromString(tt.s)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("#%d: got err=%v, want nil", i, err)
|
|
||||||
}
|
|
||||||
if !reflect.DeepEqual(*v, tt.v) {
|
|
||||||
t.Errorf("#%d: v=%v, want %v", i, *v, tt.v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestVolumeFromStringBad(t *testing.T) {
|
|
||||||
tests := []string{
|
|
||||||
"#foobar,kind=host,source=/tmp",
|
|
||||||
"foobar,kind=host,source=/tmp,readOnly=true,asdf=asdf",
|
|
||||||
"foobar,kind=empty,source=/tmp",
|
|
||||||
}
|
|
||||||
for i, in := range tests {
|
|
||||||
l, err := VolumeFromString(in)
|
|
||||||
if l != nil {
|
|
||||||
t.Errorf("#%d: got l=%v, want nil", i, l)
|
|
||||||
}
|
|
||||||
if err == nil {
|
|
||||||
t.Errorf("#%d: got err=nil, want non-nil", i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
201
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/awsutil/copy_test.go
generated
vendored
201
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/awsutil/copy_test.go
generated
vendored
@@ -1,201 +0,0 @@
|
|||||||
package awsutil_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"fmt"
|
|
||||||
"io"
|
|
||||||
"io/ioutil"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/aws/awsutil"
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
)
|
|
||||||
|
|
||||||
func ExampleCopy() {
|
|
||||||
type Foo struct {
|
|
||||||
A int
|
|
||||||
B []*string
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create the initial value
|
|
||||||
str1 := "hello"
|
|
||||||
str2 := "bye bye"
|
|
||||||
f1 := &Foo{A: 1, B: []*string{&str1, &str2}}
|
|
||||||
|
|
||||||
// Do the copy
|
|
||||||
var f2 Foo
|
|
||||||
awsutil.Copy(&f2, f1)
|
|
||||||
|
|
||||||
// Print the result
|
|
||||||
fmt.Println(awsutil.Prettify(f2))
|
|
||||||
|
|
||||||
// Output:
|
|
||||||
// {
|
|
||||||
// A: 1,
|
|
||||||
// B: ["hello","bye bye"]
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestCopy(t *testing.T) {
|
|
||||||
type Foo struct {
|
|
||||||
A int
|
|
||||||
B []*string
|
|
||||||
C map[string]*int
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create the initial value
|
|
||||||
str1 := "hello"
|
|
||||||
str2 := "bye bye"
|
|
||||||
int1 := 1
|
|
||||||
int2 := 2
|
|
||||||
f1 := &Foo{
|
|
||||||
A: 1,
|
|
||||||
B: []*string{&str1, &str2},
|
|
||||||
C: map[string]*int{
|
|
||||||
"A": &int1,
|
|
||||||
"B": &int2,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
// Do the copy
|
|
||||||
var f2 Foo
|
|
||||||
awsutil.Copy(&f2, f1)
|
|
||||||
|
|
||||||
// Values are equal
|
|
||||||
assert.Equal(t, f2.A, f1.A)
|
|
||||||
assert.Equal(t, f2.B, f1.B)
|
|
||||||
assert.Equal(t, f2.C, f1.C)
|
|
||||||
|
|
||||||
// But pointers are not!
|
|
||||||
str3 := "nothello"
|
|
||||||
int3 := 57
|
|
||||||
f2.A = 100
|
|
||||||
f2.B[0] = &str3
|
|
||||||
f2.C["B"] = &int3
|
|
||||||
assert.NotEqual(t, f2.A, f1.A)
|
|
||||||
assert.NotEqual(t, f2.B, f1.B)
|
|
||||||
assert.NotEqual(t, f2.C, f1.C)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestCopyIgnoreNilMembers(t *testing.T) {
|
|
||||||
type Foo struct {
|
|
||||||
A *string
|
|
||||||
B []string
|
|
||||||
C map[string]string
|
|
||||||
}
|
|
||||||
|
|
||||||
f := &Foo{}
|
|
||||||
assert.Nil(t, f.A)
|
|
||||||
assert.Nil(t, f.B)
|
|
||||||
assert.Nil(t, f.C)
|
|
||||||
|
|
||||||
var f2 Foo
|
|
||||||
awsutil.Copy(&f2, f)
|
|
||||||
assert.Nil(t, f2.A)
|
|
||||||
assert.Nil(t, f2.B)
|
|
||||||
assert.Nil(t, f2.C)
|
|
||||||
|
|
||||||
fcopy := awsutil.CopyOf(f)
|
|
||||||
f3 := fcopy.(*Foo)
|
|
||||||
assert.Nil(t, f3.A)
|
|
||||||
assert.Nil(t, f3.B)
|
|
||||||
assert.Nil(t, f3.C)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestCopyPrimitive(t *testing.T) {
|
|
||||||
str := "hello"
|
|
||||||
var s string
|
|
||||||
awsutil.Copy(&s, &str)
|
|
||||||
assert.Equal(t, "hello", s)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestCopyNil(t *testing.T) {
|
|
||||||
var s string
|
|
||||||
awsutil.Copy(&s, nil)
|
|
||||||
assert.Equal(t, "", s)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestCopyReader(t *testing.T) {
|
|
||||||
var buf io.Reader = bytes.NewReader([]byte("hello world"))
|
|
||||||
var r io.Reader
|
|
||||||
awsutil.Copy(&r, buf)
|
|
||||||
b, err := ioutil.ReadAll(r)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.Equal(t, []byte("hello world"), b)
|
|
||||||
|
|
||||||
// empty bytes because this is not a deep copy
|
|
||||||
b, err = ioutil.ReadAll(buf)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.Equal(t, []byte(""), b)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestCopyDifferentStructs(t *testing.T) {
|
|
||||||
type SrcFoo struct {
|
|
||||||
A int
|
|
||||||
B []*string
|
|
||||||
C map[string]*int
|
|
||||||
SrcUnique string
|
|
||||||
SameNameDiffType int
|
|
||||||
}
|
|
||||||
type DstFoo struct {
|
|
||||||
A int
|
|
||||||
B []*string
|
|
||||||
C map[string]*int
|
|
||||||
DstUnique int
|
|
||||||
SameNameDiffType string
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create the initial value
|
|
||||||
str1 := "hello"
|
|
||||||
str2 := "bye bye"
|
|
||||||
int1 := 1
|
|
||||||
int2 := 2
|
|
||||||
f1 := &SrcFoo{
|
|
||||||
A: 1,
|
|
||||||
B: []*string{&str1, &str2},
|
|
||||||
C: map[string]*int{
|
|
||||||
"A": &int1,
|
|
||||||
"B": &int2,
|
|
||||||
},
|
|
||||||
SrcUnique: "unique",
|
|
||||||
SameNameDiffType: 1,
|
|
||||||
}
|
|
||||||
|
|
||||||
// Do the copy
|
|
||||||
var f2 DstFoo
|
|
||||||
awsutil.Copy(&f2, f1)
|
|
||||||
|
|
||||||
// Values are equal
|
|
||||||
assert.Equal(t, f2.A, f1.A)
|
|
||||||
assert.Equal(t, f2.B, f1.B)
|
|
||||||
assert.Equal(t, f2.C, f1.C)
|
|
||||||
assert.Equal(t, "unique", f1.SrcUnique)
|
|
||||||
assert.Equal(t, 1, f1.SameNameDiffType)
|
|
||||||
assert.Equal(t, 0, f2.DstUnique)
|
|
||||||
assert.Equal(t, "", f2.SameNameDiffType)
|
|
||||||
}
|
|
||||||
|
|
||||||
func ExampleCopyOf() {
|
|
||||||
type Foo struct {
|
|
||||||
A int
|
|
||||||
B []*string
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create the initial value
|
|
||||||
str1 := "hello"
|
|
||||||
str2 := "bye bye"
|
|
||||||
f1 := &Foo{A: 1, B: []*string{&str1, &str2}}
|
|
||||||
|
|
||||||
// Do the copy
|
|
||||||
v := awsutil.CopyOf(f1)
|
|
||||||
var f2 *Foo = v.(*Foo)
|
|
||||||
|
|
||||||
// Print the result
|
|
||||||
fmt.Println(awsutil.Prettify(f2))
|
|
||||||
|
|
||||||
// Output:
|
|
||||||
// {
|
|
||||||
// A: 1,
|
|
||||||
// B: ["hello","bye bye"]
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
68
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/awsutil/path_value_test.go
generated
vendored
68
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/awsutil/path_value_test.go
generated
vendored
@@ -1,68 +0,0 @@
|
|||||||
package awsutil_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/aws/awsutil"
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
)
|
|
||||||
|
|
||||||
type Struct struct {
|
|
||||||
A []Struct
|
|
||||||
z []Struct
|
|
||||||
B *Struct
|
|
||||||
D *Struct
|
|
||||||
C string
|
|
||||||
}
|
|
||||||
|
|
||||||
var data = Struct{
|
|
||||||
A: []Struct{{C: "value1"}, {C: "value2"}, {C: "value3"}},
|
|
||||||
z: []Struct{{C: "value1"}, {C: "value2"}, {C: "value3"}},
|
|
||||||
B: &Struct{B: &Struct{C: "terminal"}, D: &Struct{C: "terminal2"}},
|
|
||||||
C: "initial",
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestValueAtPathSuccess(t *testing.T) {
|
|
||||||
assert.Equal(t, []interface{}{"initial"}, awsutil.ValuesAtPath(data, "C"))
|
|
||||||
assert.Equal(t, []interface{}{"value1"}, awsutil.ValuesAtPath(data, "A[0].C"))
|
|
||||||
assert.Equal(t, []interface{}{"value2"}, awsutil.ValuesAtPath(data, "A[1].C"))
|
|
||||||
assert.Equal(t, []interface{}{"value3"}, awsutil.ValuesAtPath(data, "A[2].C"))
|
|
||||||
assert.Equal(t, []interface{}{"value3"}, awsutil.ValuesAtAnyPath(data, "a[2].c"))
|
|
||||||
assert.Equal(t, []interface{}{"value3"}, awsutil.ValuesAtPath(data, "A[-1].C"))
|
|
||||||
assert.Equal(t, []interface{}{"value1", "value2", "value3"}, awsutil.ValuesAtPath(data, "A[].C"))
|
|
||||||
assert.Equal(t, []interface{}{"terminal"}, awsutil.ValuesAtPath(data, "B . B . C"))
|
|
||||||
assert.Equal(t, []interface{}{"terminal", "terminal2"}, awsutil.ValuesAtPath(data, "B.*.C"))
|
|
||||||
assert.Equal(t, []interface{}{"initial"}, awsutil.ValuesAtPath(data, "A.D.X || C"))
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestValueAtPathFailure(t *testing.T) {
|
|
||||||
assert.Equal(t, []interface{}(nil), awsutil.ValuesAtPath(data, "C.x"))
|
|
||||||
assert.Equal(t, []interface{}(nil), awsutil.ValuesAtPath(data, ".x"))
|
|
||||||
assert.Equal(t, []interface{}{}, awsutil.ValuesAtPath(data, "X.Y.Z"))
|
|
||||||
assert.Equal(t, []interface{}{}, awsutil.ValuesAtPath(data, "A[100].C"))
|
|
||||||
assert.Equal(t, []interface{}{}, awsutil.ValuesAtPath(data, "A[3].C"))
|
|
||||||
assert.Equal(t, []interface{}{}, awsutil.ValuesAtPath(data, "B.B.C.Z"))
|
|
||||||
assert.Equal(t, []interface{}(nil), awsutil.ValuesAtPath(data, "z[-1].C"))
|
|
||||||
assert.Equal(t, []interface{}{}, awsutil.ValuesAtPath(nil, "A.B.C"))
|
|
||||||
assert.Equal(t, []interface{}{}, awsutil.ValuesAtPath(Struct{}, "A"))
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSetValueAtPathSuccess(t *testing.T) {
|
|
||||||
var s Struct
|
|
||||||
awsutil.SetValueAtPath(&s, "C", "test1")
|
|
||||||
awsutil.SetValueAtPath(&s, "B.B.C", "test2")
|
|
||||||
awsutil.SetValueAtPath(&s, "B.D.C", "test3")
|
|
||||||
assert.Equal(t, "test1", s.C)
|
|
||||||
assert.Equal(t, "test2", s.B.B.C)
|
|
||||||
assert.Equal(t, "test3", s.B.D.C)
|
|
||||||
|
|
||||||
awsutil.SetValueAtPath(&s, "B.*.C", "test0")
|
|
||||||
assert.Equal(t, "test0", s.B.B.C)
|
|
||||||
assert.Equal(t, "test0", s.B.D.C)
|
|
||||||
|
|
||||||
var s2 Struct
|
|
||||||
awsutil.SetValueAtAnyPath(&s2, "b.b.c", "test0")
|
|
||||||
assert.Equal(t, "test0", s2.B.B.C)
|
|
||||||
awsutil.SetValueAtAnyPath(&s2, "A", []Struct{{}})
|
|
||||||
assert.Equal(t, []Struct{{}}, s2.A)
|
|
||||||
}
|
|
||||||
80
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/config_test.go
generated
vendored
80
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/config_test.go
generated
vendored
@@ -1,80 +0,0 @@
|
|||||||
package aws
|
|
||||||
|
|
||||||
import (
|
|
||||||
"net/http"
|
|
||||||
"reflect"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/aws/credentials"
|
|
||||||
)
|
|
||||||
|
|
||||||
var testCredentials = credentials.NewStaticCredentials("AKID", "SECRET", "SESSION")
|
|
||||||
|
|
||||||
var copyTestConfig = Config{
|
|
||||||
Credentials: testCredentials,
|
|
||||||
Endpoint: String("CopyTestEndpoint"),
|
|
||||||
Region: String("COPY_TEST_AWS_REGION"),
|
|
||||||
DisableSSL: Bool(true),
|
|
||||||
HTTPClient: http.DefaultClient,
|
|
||||||
LogLevel: LogLevel(LogDebug),
|
|
||||||
Logger: NewDefaultLogger(),
|
|
||||||
MaxRetries: Int(DefaultRetries),
|
|
||||||
DisableParamValidation: Bool(true),
|
|
||||||
DisableComputeChecksums: Bool(true),
|
|
||||||
S3ForcePathStyle: Bool(true),
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestCopy(t *testing.T) {
|
|
||||||
want := copyTestConfig
|
|
||||||
got := copyTestConfig.Copy()
|
|
||||||
if !reflect.DeepEqual(*got, want) {
|
|
||||||
t.Errorf("Copy() = %+v", got)
|
|
||||||
t.Errorf(" want %+v", want)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestCopyReturnsNewInstance(t *testing.T) {
|
|
||||||
want := copyTestConfig
|
|
||||||
got := copyTestConfig.Copy()
|
|
||||||
if got == &want {
|
|
||||||
t.Errorf("Copy() = %p; want different instance as source %p", got, &want)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var mergeTestZeroValueConfig = Config{}
|
|
||||||
|
|
||||||
var mergeTestConfig = Config{
|
|
||||||
Credentials: testCredentials,
|
|
||||||
Endpoint: String("MergeTestEndpoint"),
|
|
||||||
Region: String("MERGE_TEST_AWS_REGION"),
|
|
||||||
DisableSSL: Bool(true),
|
|
||||||
HTTPClient: http.DefaultClient,
|
|
||||||
LogLevel: LogLevel(LogDebug),
|
|
||||||
Logger: NewDefaultLogger(),
|
|
||||||
MaxRetries: Int(10),
|
|
||||||
DisableParamValidation: Bool(true),
|
|
||||||
DisableComputeChecksums: Bool(true),
|
|
||||||
S3ForcePathStyle: Bool(true),
|
|
||||||
}
|
|
||||||
|
|
||||||
var mergeTests = []struct {
|
|
||||||
cfg *Config
|
|
||||||
in *Config
|
|
||||||
want *Config
|
|
||||||
}{
|
|
||||||
{&Config{}, nil, &Config{}},
|
|
||||||
{&Config{}, &mergeTestZeroValueConfig, &Config{}},
|
|
||||||
{&Config{}, &mergeTestConfig, &mergeTestConfig},
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestMerge(t *testing.T) {
|
|
||||||
for i, tt := range mergeTests {
|
|
||||||
got := tt.cfg.Merge(tt.in)
|
|
||||||
if !reflect.DeepEqual(got, tt.want) {
|
|
||||||
t.Errorf("Config %d %+v", i, tt.cfg)
|
|
||||||
t.Errorf(" Merge(%+v)", tt.in)
|
|
||||||
t.Errorf(" got %+v", got)
|
|
||||||
t.Errorf(" want %+v", tt.want)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
437
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/convert_types_test.go
generated
vendored
437
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/convert_types_test.go
generated
vendored
@@ -1,437 +0,0 @@
|
|||||||
package aws
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
)
|
|
||||||
|
|
||||||
var testCasesStringSlice = [][]string{
|
|
||||||
{"a", "b", "c", "d", "e"},
|
|
||||||
{"a", "b", "", "", "e"},
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestStringSlice(t *testing.T) {
|
|
||||||
for idx, in := range testCasesStringSlice {
|
|
||||||
if in == nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
out := StringSlice(in)
|
|
||||||
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
for i := range out {
|
|
||||||
assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
|
|
||||||
out2 := StringValueSlice(out)
|
|
||||||
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
assert.Equal(t, in, out2, "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var testCasesStringValueSlice = [][]*string{
|
|
||||||
{String("a"), String("b"), nil, String("c")},
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestStringValueSlice(t *testing.T) {
|
|
||||||
for idx, in := range testCasesStringValueSlice {
|
|
||||||
if in == nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
out := StringValueSlice(in)
|
|
||||||
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
for i := range out {
|
|
||||||
if in[i] == nil {
|
|
||||||
assert.Empty(t, out[i], "Unexpected value at idx %d", idx)
|
|
||||||
} else {
|
|
||||||
assert.Equal(t, *(in[i]), out[i], "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
out2 := StringSlice(out)
|
|
||||||
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
for i := range out2 {
|
|
||||||
if in[i] == nil {
|
|
||||||
assert.Empty(t, *(out2[i]), "Unexpected value at idx %d", idx)
|
|
||||||
} else {
|
|
||||||
assert.Equal(t, in[i], out2[i], "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var testCasesStringMap = []map[string]string{
|
|
||||||
{"a": "1", "b": "2", "c": "3"},
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestStringMap(t *testing.T) {
|
|
||||||
for idx, in := range testCasesStringMap {
|
|
||||||
if in == nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
out := StringMap(in)
|
|
||||||
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
for i := range out {
|
|
||||||
assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
|
|
||||||
out2 := StringValueMap(out)
|
|
||||||
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
assert.Equal(t, in, out2, "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var testCasesBoolSlice = [][]bool{
|
|
||||||
{true, true, false, false},
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestBoolSlice(t *testing.T) {
|
|
||||||
for idx, in := range testCasesBoolSlice {
|
|
||||||
if in == nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
out := BoolSlice(in)
|
|
||||||
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
for i := range out {
|
|
||||||
assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
|
|
||||||
out2 := BoolValueSlice(out)
|
|
||||||
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
assert.Equal(t, in, out2, "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var testCasesBoolValueSlice = [][]*bool{}
|
|
||||||
|
|
||||||
func TestBoolValueSlice(t *testing.T) {
|
|
||||||
for idx, in := range testCasesBoolValueSlice {
|
|
||||||
if in == nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
out := BoolValueSlice(in)
|
|
||||||
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
for i := range out {
|
|
||||||
if in[i] == nil {
|
|
||||||
assert.Empty(t, out[i], "Unexpected value at idx %d", idx)
|
|
||||||
} else {
|
|
||||||
assert.Equal(t, *(in[i]), out[i], "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
out2 := BoolSlice(out)
|
|
||||||
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
for i := range out2 {
|
|
||||||
if in[i] == nil {
|
|
||||||
assert.Empty(t, *(out2[i]), "Unexpected value at idx %d", idx)
|
|
||||||
} else {
|
|
||||||
assert.Equal(t, in[i], out2[i], "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var testCasesBoolMap = []map[string]bool{
|
|
||||||
{"a": true, "b": false, "c": true},
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestBoolMap(t *testing.T) {
|
|
||||||
for idx, in := range testCasesBoolMap {
|
|
||||||
if in == nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
out := BoolMap(in)
|
|
||||||
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
for i := range out {
|
|
||||||
assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
|
|
||||||
out2 := BoolValueMap(out)
|
|
||||||
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
assert.Equal(t, in, out2, "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var testCasesIntSlice = [][]int{
|
|
||||||
{1, 2, 3, 4},
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestIntSlice(t *testing.T) {
|
|
||||||
for idx, in := range testCasesIntSlice {
|
|
||||||
if in == nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
out := IntSlice(in)
|
|
||||||
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
for i := range out {
|
|
||||||
assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
|
|
||||||
out2 := IntValueSlice(out)
|
|
||||||
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
assert.Equal(t, in, out2, "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var testCasesIntValueSlice = [][]*int{}
|
|
||||||
|
|
||||||
func TestIntValueSlice(t *testing.T) {
|
|
||||||
for idx, in := range testCasesIntValueSlice {
|
|
||||||
if in == nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
out := IntValueSlice(in)
|
|
||||||
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
for i := range out {
|
|
||||||
if in[i] == nil {
|
|
||||||
assert.Empty(t, out[i], "Unexpected value at idx %d", idx)
|
|
||||||
} else {
|
|
||||||
assert.Equal(t, *(in[i]), out[i], "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
out2 := IntSlice(out)
|
|
||||||
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
for i := range out2 {
|
|
||||||
if in[i] == nil {
|
|
||||||
assert.Empty(t, *(out2[i]), "Unexpected value at idx %d", idx)
|
|
||||||
} else {
|
|
||||||
assert.Equal(t, in[i], out2[i], "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var testCasesIntMap = []map[string]int{
|
|
||||||
{"a": 3, "b": 2, "c": 1},
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestIntMap(t *testing.T) {
|
|
||||||
for idx, in := range testCasesIntMap {
|
|
||||||
if in == nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
out := IntMap(in)
|
|
||||||
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
for i := range out {
|
|
||||||
assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
|
|
||||||
out2 := IntValueMap(out)
|
|
||||||
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
assert.Equal(t, in, out2, "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var testCasesInt64Slice = [][]int64{
|
|
||||||
{1, 2, 3, 4},
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestInt64Slice(t *testing.T) {
|
|
||||||
for idx, in := range testCasesInt64Slice {
|
|
||||||
if in == nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
out := Int64Slice(in)
|
|
||||||
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
for i := range out {
|
|
||||||
assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
|
|
||||||
out2 := Int64ValueSlice(out)
|
|
||||||
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
assert.Equal(t, in, out2, "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var testCasesInt64ValueSlice = [][]*int64{}
|
|
||||||
|
|
||||||
func TestInt64ValueSlice(t *testing.T) {
|
|
||||||
for idx, in := range testCasesInt64ValueSlice {
|
|
||||||
if in == nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
out := Int64ValueSlice(in)
|
|
||||||
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
for i := range out {
|
|
||||||
if in[i] == nil {
|
|
||||||
assert.Empty(t, out[i], "Unexpected value at idx %d", idx)
|
|
||||||
} else {
|
|
||||||
assert.Equal(t, *(in[i]), out[i], "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
out2 := Int64Slice(out)
|
|
||||||
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
for i := range out2 {
|
|
||||||
if in[i] == nil {
|
|
||||||
assert.Empty(t, *(out2[i]), "Unexpected value at idx %d", idx)
|
|
||||||
} else {
|
|
||||||
assert.Equal(t, in[i], out2[i], "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var testCasesInt64Map = []map[string]int64{
|
|
||||||
{"a": 3, "b": 2, "c": 1},
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestInt64Map(t *testing.T) {
|
|
||||||
for idx, in := range testCasesInt64Map {
|
|
||||||
if in == nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
out := Int64Map(in)
|
|
||||||
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
for i := range out {
|
|
||||||
assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
|
|
||||||
out2 := Int64ValueMap(out)
|
|
||||||
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
assert.Equal(t, in, out2, "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var testCasesFloat64Slice = [][]float64{
|
|
||||||
{1, 2, 3, 4},
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestFloat64Slice(t *testing.T) {
|
|
||||||
for idx, in := range testCasesFloat64Slice {
|
|
||||||
if in == nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
out := Float64Slice(in)
|
|
||||||
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
for i := range out {
|
|
||||||
assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
|
|
||||||
out2 := Float64ValueSlice(out)
|
|
||||||
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
assert.Equal(t, in, out2, "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var testCasesFloat64ValueSlice = [][]*float64{}
|
|
||||||
|
|
||||||
func TestFloat64ValueSlice(t *testing.T) {
|
|
||||||
for idx, in := range testCasesFloat64ValueSlice {
|
|
||||||
if in == nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
out := Float64ValueSlice(in)
|
|
||||||
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
for i := range out {
|
|
||||||
if in[i] == nil {
|
|
||||||
assert.Empty(t, out[i], "Unexpected value at idx %d", idx)
|
|
||||||
} else {
|
|
||||||
assert.Equal(t, *(in[i]), out[i], "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
out2 := Float64Slice(out)
|
|
||||||
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
for i := range out2 {
|
|
||||||
if in[i] == nil {
|
|
||||||
assert.Empty(t, *(out2[i]), "Unexpected value at idx %d", idx)
|
|
||||||
} else {
|
|
||||||
assert.Equal(t, in[i], out2[i], "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var testCasesFloat64Map = []map[string]float64{
|
|
||||||
{"a": 3, "b": 2, "c": 1},
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestFloat64Map(t *testing.T) {
|
|
||||||
for idx, in := range testCasesFloat64Map {
|
|
||||||
if in == nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
out := Float64Map(in)
|
|
||||||
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
for i := range out {
|
|
||||||
assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
|
|
||||||
out2 := Float64ValueMap(out)
|
|
||||||
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
assert.Equal(t, in, out2, "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var testCasesTimeSlice = [][]time.Time{
|
|
||||||
{time.Now(), time.Now().AddDate(100, 0, 0)},
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestTimeSlice(t *testing.T) {
|
|
||||||
for idx, in := range testCasesTimeSlice {
|
|
||||||
if in == nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
out := TimeSlice(in)
|
|
||||||
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
for i := range out {
|
|
||||||
assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
|
|
||||||
out2 := TimeValueSlice(out)
|
|
||||||
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
assert.Equal(t, in, out2, "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var testCasesTimeValueSlice = [][]*time.Time{}
|
|
||||||
|
|
||||||
func TestTimeValueSlice(t *testing.T) {
|
|
||||||
for idx, in := range testCasesTimeValueSlice {
|
|
||||||
if in == nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
out := TimeValueSlice(in)
|
|
||||||
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
for i := range out {
|
|
||||||
if in[i] == nil {
|
|
||||||
assert.Empty(t, out[i], "Unexpected value at idx %d", idx)
|
|
||||||
} else {
|
|
||||||
assert.Equal(t, *(in[i]), out[i], "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
out2 := TimeSlice(out)
|
|
||||||
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
for i := range out2 {
|
|
||||||
if in[i] == nil {
|
|
||||||
assert.Empty(t, *(out2[i]), "Unexpected value at idx %d", idx)
|
|
||||||
} else {
|
|
||||||
assert.Equal(t, in[i], out2[i], "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var testCasesTimeMap = []map[string]time.Time{
|
|
||||||
{"a": time.Now().AddDate(-100, 0, 0), "b": time.Now()},
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestTimeMap(t *testing.T) {
|
|
||||||
for idx, in := range testCasesTimeMap {
|
|
||||||
if in == nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
out := TimeMap(in)
|
|
||||||
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
for i := range out {
|
|
||||||
assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
|
|
||||||
out2 := TimeValueMap(out)
|
|
||||||
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
|
|
||||||
assert.Equal(t, in, out2, "Unexpected value at idx %d", idx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
107
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/corehandlers/handlers_test.go
generated
vendored
107
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/corehandlers/handlers_test.go
generated
vendored
@@ -1,107 +0,0 @@
|
|||||||
package corehandlers_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"net/http"
|
|
||||||
"os"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/aws"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/awserr"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/corehandlers"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/credentials"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/request"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/service"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestValidateEndpointHandler(t *testing.T) {
|
|
||||||
os.Clearenv()
|
|
||||||
svc := service.New(aws.NewConfig().WithRegion("us-west-2"))
|
|
||||||
svc.Handlers.Clear()
|
|
||||||
svc.Handlers.Validate.PushBackNamed(corehandlers.ValidateEndpointHandler)
|
|
||||||
|
|
||||||
req := svc.NewRequest(&request.Operation{Name: "Operation"}, nil, nil)
|
|
||||||
err := req.Build()
|
|
||||||
|
|
||||||
assert.NoError(t, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestValidateEndpointHandlerErrorRegion(t *testing.T) {
|
|
||||||
os.Clearenv()
|
|
||||||
svc := service.New(nil)
|
|
||||||
svc.Handlers.Clear()
|
|
||||||
svc.Handlers.Validate.PushBackNamed(corehandlers.ValidateEndpointHandler)
|
|
||||||
|
|
||||||
req := svc.NewRequest(&request.Operation{Name: "Operation"}, nil, nil)
|
|
||||||
err := req.Build()
|
|
||||||
|
|
||||||
assert.Error(t, err)
|
|
||||||
assert.Equal(t, aws.ErrMissingRegion, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
type mockCredsProvider struct {
|
|
||||||
expired bool
|
|
||||||
retrieveCalled bool
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *mockCredsProvider) Retrieve() (credentials.Value, error) {
|
|
||||||
m.retrieveCalled = true
|
|
||||||
return credentials.Value{}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *mockCredsProvider) IsExpired() bool {
|
|
||||||
return m.expired
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestAfterRetryRefreshCreds(t *testing.T) {
|
|
||||||
os.Clearenv()
|
|
||||||
credProvider := &mockCredsProvider{}
|
|
||||||
svc := service.New(&aws.Config{Credentials: credentials.NewCredentials(credProvider), MaxRetries: aws.Int(1)})
|
|
||||||
|
|
||||||
svc.Handlers.Clear()
|
|
||||||
svc.Handlers.ValidateResponse.PushBack(func(r *request.Request) {
|
|
||||||
r.Error = awserr.New("UnknownError", "", nil)
|
|
||||||
r.HTTPResponse = &http.Response{StatusCode: 400}
|
|
||||||
})
|
|
||||||
svc.Handlers.UnmarshalError.PushBack(func(r *request.Request) {
|
|
||||||
r.Error = awserr.New("ExpiredTokenException", "", nil)
|
|
||||||
})
|
|
||||||
svc.Handlers.AfterRetry.PushBackNamed(corehandlers.AfterRetryHandler)
|
|
||||||
|
|
||||||
assert.True(t, svc.Config.Credentials.IsExpired(), "Expect to start out expired")
|
|
||||||
assert.False(t, credProvider.retrieveCalled)
|
|
||||||
|
|
||||||
req := svc.NewRequest(&request.Operation{Name: "Operation"}, nil, nil)
|
|
||||||
req.Send()
|
|
||||||
|
|
||||||
assert.True(t, svc.Config.Credentials.IsExpired())
|
|
||||||
assert.False(t, credProvider.retrieveCalled)
|
|
||||||
|
|
||||||
_, err := svc.Config.Credentials.Get()
|
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.True(t, credProvider.retrieveCalled)
|
|
||||||
}
|
|
||||||
|
|
||||||
type testSendHandlerTransport struct{}
|
|
||||||
|
|
||||||
func (t *testSendHandlerTransport) RoundTrip(r *http.Request) (*http.Response, error) {
|
|
||||||
return nil, fmt.Errorf("mock error")
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSendHandlerError(t *testing.T) {
|
|
||||||
svc := service.New(&aws.Config{
|
|
||||||
HTTPClient: &http.Client{
|
|
||||||
Transport: &testSendHandlerTransport{},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
svc.Handlers.Clear()
|
|
||||||
svc.Handlers.Send.PushBackNamed(corehandlers.SendHandler)
|
|
||||||
r := svc.NewRequest(&request.Operation{Name: "Operation"}, nil, nil)
|
|
||||||
|
|
||||||
r.Send()
|
|
||||||
|
|
||||||
assert.Error(t, r.Error)
|
|
||||||
assert.NotNil(t, r.HTTPResponse)
|
|
||||||
}
|
|
||||||
134
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/corehandlers/param_validator_test.go
generated
vendored
134
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/corehandlers/param_validator_test.go
generated
vendored
@@ -1,134 +0,0 @@
|
|||||||
package corehandlers_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/aws"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/awserr"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/corehandlers"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/request"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/service"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/service/serviceinfo"
|
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
)
|
|
||||||
|
|
||||||
var testSvc = func() *service.Service {
|
|
||||||
s := &service.Service{
|
|
||||||
ServiceInfo: serviceinfo.ServiceInfo{
|
|
||||||
Config: &aws.Config{},
|
|
||||||
ServiceName: "mock-service",
|
|
||||||
APIVersion: "2015-01-01",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
return s
|
|
||||||
}()
|
|
||||||
|
|
||||||
type StructShape struct {
|
|
||||||
RequiredList []*ConditionalStructShape `required:"true"`
|
|
||||||
RequiredMap map[string]*ConditionalStructShape `required:"true"`
|
|
||||||
RequiredBool *bool `required:"true"`
|
|
||||||
OptionalStruct *ConditionalStructShape
|
|
||||||
|
|
||||||
hiddenParameter *string
|
|
||||||
|
|
||||||
metadataStructureShape
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataStructureShape struct {
|
|
||||||
SDKShapeTraits bool
|
|
||||||
}
|
|
||||||
|
|
||||||
type ConditionalStructShape struct {
|
|
||||||
Name *string `required:"true"`
|
|
||||||
SDKShapeTraits bool
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestNoErrors(t *testing.T) {
|
|
||||||
input := &StructShape{
|
|
||||||
RequiredList: []*ConditionalStructShape{},
|
|
||||||
RequiredMap: map[string]*ConditionalStructShape{
|
|
||||||
"key1": {Name: aws.String("Name")},
|
|
||||||
"key2": {Name: aws.String("Name")},
|
|
||||||
},
|
|
||||||
RequiredBool: aws.Bool(true),
|
|
||||||
OptionalStruct: &ConditionalStructShape{Name: aws.String("Name")},
|
|
||||||
}
|
|
||||||
|
|
||||||
req := testSvc.NewRequest(&request.Operation{}, input, nil)
|
|
||||||
corehandlers.ValidateParametersHandler.Fn(req)
|
|
||||||
require.NoError(t, req.Error)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestMissingRequiredParameters(t *testing.T) {
|
|
||||||
input := &StructShape{}
|
|
||||||
req := testSvc.NewRequest(&request.Operation{}, input, nil)
|
|
||||||
corehandlers.ValidateParametersHandler.Fn(req)
|
|
||||||
|
|
||||||
require.Error(t, req.Error)
|
|
||||||
assert.Equal(t, "InvalidParameter", req.Error.(awserr.Error).Code())
|
|
||||||
assert.Equal(t, "3 validation errors:\n- missing required parameter: RequiredList\n- missing required parameter: RequiredMap\n- missing required parameter: RequiredBool", req.Error.(awserr.Error).Message())
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestNestedMissingRequiredParameters(t *testing.T) {
|
|
||||||
input := &StructShape{
|
|
||||||
RequiredList: []*ConditionalStructShape{{}},
|
|
||||||
RequiredMap: map[string]*ConditionalStructShape{
|
|
||||||
"key1": {Name: aws.String("Name")},
|
|
||||||
"key2": {},
|
|
||||||
},
|
|
||||||
RequiredBool: aws.Bool(true),
|
|
||||||
OptionalStruct: &ConditionalStructShape{},
|
|
||||||
}
|
|
||||||
|
|
||||||
req := testSvc.NewRequest(&request.Operation{}, input, nil)
|
|
||||||
corehandlers.ValidateParametersHandler.Fn(req)
|
|
||||||
|
|
||||||
require.Error(t, req.Error)
|
|
||||||
assert.Equal(t, "InvalidParameter", req.Error.(awserr.Error).Code())
|
|
||||||
assert.Equal(t, "3 validation errors:\n- missing required parameter: RequiredList[0].Name\n- missing required parameter: RequiredMap[\"key2\"].Name\n- missing required parameter: OptionalStruct.Name", req.Error.(awserr.Error).Message())
|
|
||||||
}
|
|
||||||
|
|
||||||
type testInput struct {
|
|
||||||
StringField string `min:"5"`
|
|
||||||
PtrStrField *string `min:"2"`
|
|
||||||
ListField []string `min:"3"`
|
|
||||||
MapField map[string]string `min:"4"`
|
|
||||||
}
|
|
||||||
|
|
||||||
var testsFieldMin = []struct {
|
|
||||||
err awserr.Error
|
|
||||||
in testInput
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
err: awserr.New("InvalidParameter", "1 validation errors:\n- field too short, minimum length 5: StringField", nil),
|
|
||||||
in: testInput{StringField: "abcd"},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
err: awserr.New("InvalidParameter", "2 validation errors:\n- field too short, minimum length 5: StringField\n- field too short, minimum length 3: ListField", nil),
|
|
||||||
in: testInput{StringField: "abcd", ListField: []string{"a", "b"}},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
err: awserr.New("InvalidParameter", "3 validation errors:\n- field too short, minimum length 5: StringField\n- field too short, minimum length 3: ListField\n- field too short, minimum length 4: MapField", nil),
|
|
||||||
in: testInput{StringField: "abcd", ListField: []string{"a", "b"}, MapField: map[string]string{"a": "a", "b": "b"}},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
err: awserr.New("InvalidParameter", "1 validation errors:\n- field too short, minimum length 2: PtrStrField", nil),
|
|
||||||
in: testInput{StringField: "abcde", PtrStrField: aws.String("v")},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
err: nil,
|
|
||||||
in: testInput{StringField: "abcde", PtrStrField: aws.String("value"),
|
|
||||||
ListField: []string{"a", "b", "c"}, MapField: map[string]string{"a": "a", "b": "b", "c": "c", "d": "d"}},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestValidateFieldMinParameter(t *testing.T) {
|
|
||||||
for i, c := range testsFieldMin {
|
|
||||||
req := testSvc.NewRequest(&request.Operation{}, &c.in, nil)
|
|
||||||
corehandlers.ValidateParametersHandler.Fn(req)
|
|
||||||
|
|
||||||
require.Equal(t, c.err, req.Error, "%d case failed", i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
73
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/chain_provider_test.go
generated
vendored
73
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/chain_provider_test.go
generated
vendored
@@ -1,73 +0,0 @@
|
|||||||
package credentials
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/aws/awserr"
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestChainProviderGet(t *testing.T) {
|
|
||||||
p := &ChainProvider{
|
|
||||||
Providers: []Provider{
|
|
||||||
&stubProvider{err: awserr.New("FirstError", "first provider error", nil)},
|
|
||||||
&stubProvider{err: awserr.New("SecondError", "second provider error", nil)},
|
|
||||||
&stubProvider{
|
|
||||||
creds: Value{
|
|
||||||
AccessKeyID: "AKID",
|
|
||||||
SecretAccessKey: "SECRET",
|
|
||||||
SessionToken: "",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
creds, err := p.Retrieve()
|
|
||||||
assert.Nil(t, err, "Expect no error")
|
|
||||||
assert.Equal(t, "AKID", creds.AccessKeyID, "Expect access key ID to match")
|
|
||||||
assert.Equal(t, "SECRET", creds.SecretAccessKey, "Expect secret access key to match")
|
|
||||||
assert.Empty(t, creds.SessionToken, "Expect session token to be empty")
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestChainProviderIsExpired(t *testing.T) {
|
|
||||||
stubProvider := &stubProvider{expired: true}
|
|
||||||
p := &ChainProvider{
|
|
||||||
Providers: []Provider{
|
|
||||||
stubProvider,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
assert.True(t, p.IsExpired(), "Expect expired to be true before any Retrieve")
|
|
||||||
_, err := p.Retrieve()
|
|
||||||
assert.Nil(t, err, "Expect no error")
|
|
||||||
assert.False(t, p.IsExpired(), "Expect not expired after retrieve")
|
|
||||||
|
|
||||||
stubProvider.expired = true
|
|
||||||
assert.True(t, p.IsExpired(), "Expect return of expired provider")
|
|
||||||
|
|
||||||
_, err = p.Retrieve()
|
|
||||||
assert.False(t, p.IsExpired(), "Expect not expired after retrieve")
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestChainProviderWithNoProvider(t *testing.T) {
|
|
||||||
p := &ChainProvider{
|
|
||||||
Providers: []Provider{},
|
|
||||||
}
|
|
||||||
|
|
||||||
assert.True(t, p.IsExpired(), "Expect expired with no providers")
|
|
||||||
_, err := p.Retrieve()
|
|
||||||
assert.Equal(t, ErrNoValidProvidersFoundInChain, err, "Expect no providers error returned")
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestChainProviderWithNoValidProvider(t *testing.T) {
|
|
||||||
p := &ChainProvider{
|
|
||||||
Providers: []Provider{
|
|
||||||
&stubProvider{err: awserr.New("FirstError", "first provider error", nil)},
|
|
||||||
&stubProvider{err: awserr.New("SecondError", "second provider error", nil)},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
assert.True(t, p.IsExpired(), "Expect expired with no providers")
|
|
||||||
_, err := p.Retrieve()
|
|
||||||
assert.Equal(t, ErrNoValidProvidersFoundInChain, err, "Expect no providers error returned")
|
|
||||||
}
|
|
||||||
62
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/credentials_test.go
generated
vendored
62
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/credentials_test.go
generated
vendored
@@ -1,62 +0,0 @@
|
|||||||
package credentials
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/aws/awserr"
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
)
|
|
||||||
|
|
||||||
type stubProvider struct {
|
|
||||||
creds Value
|
|
||||||
expired bool
|
|
||||||
err error
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *stubProvider) Retrieve() (Value, error) {
|
|
||||||
s.expired = false
|
|
||||||
return s.creds, s.err
|
|
||||||
}
|
|
||||||
func (s *stubProvider) IsExpired() bool {
|
|
||||||
return s.expired
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestCredentialsGet(t *testing.T) {
|
|
||||||
c := NewCredentials(&stubProvider{
|
|
||||||
creds: Value{
|
|
||||||
AccessKeyID: "AKID",
|
|
||||||
SecretAccessKey: "SECRET",
|
|
||||||
SessionToken: "",
|
|
||||||
},
|
|
||||||
expired: true,
|
|
||||||
})
|
|
||||||
|
|
||||||
creds, err := c.Get()
|
|
||||||
assert.Nil(t, err, "Expected no error")
|
|
||||||
assert.Equal(t, "AKID", creds.AccessKeyID, "Expect access key ID to match")
|
|
||||||
assert.Equal(t, "SECRET", creds.SecretAccessKey, "Expect secret access key to match")
|
|
||||||
assert.Empty(t, creds.SessionToken, "Expect session token to be empty")
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestCredentialsGetWithError(t *testing.T) {
|
|
||||||
c := NewCredentials(&stubProvider{err: awserr.New("provider error", "", nil), expired: true})
|
|
||||||
|
|
||||||
_, err := c.Get()
|
|
||||||
assert.Equal(t, "provider error", err.(awserr.Error).Code(), "Expected provider error")
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestCredentialsExpire(t *testing.T) {
|
|
||||||
stub := &stubProvider{}
|
|
||||||
c := NewCredentials(stub)
|
|
||||||
|
|
||||||
stub.expired = false
|
|
||||||
assert.True(t, c.IsExpired(), "Expected to start out expired")
|
|
||||||
c.Expire()
|
|
||||||
assert.True(t, c.IsExpired(), "Expected to be expired")
|
|
||||||
|
|
||||||
c.forceRefresh = false
|
|
||||||
assert.False(t, c.IsExpired(), "Expected not to be expired")
|
|
||||||
|
|
||||||
stub.expired = true
|
|
||||||
assert.True(t, c.IsExpired(), "Expected to be expired")
|
|
||||||
}
|
|
||||||
@@ -1,161 +0,0 @@
|
|||||||
package ec2rolecreds_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"net/http"
|
|
||||||
"net/http/httptest"
|
|
||||||
"testing"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/aws"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/awserr"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/ec2metadata"
|
|
||||||
)
|
|
||||||
|
|
||||||
const credsRespTmpl = `{
|
|
||||||
"Code": "Success",
|
|
||||||
"Type": "AWS-HMAC",
|
|
||||||
"AccessKeyId" : "accessKey",
|
|
||||||
"SecretAccessKey" : "secret",
|
|
||||||
"Token" : "token",
|
|
||||||
"Expiration" : "%s",
|
|
||||||
"LastUpdated" : "2009-11-23T0:00:00Z"
|
|
||||||
}`
|
|
||||||
|
|
||||||
const credsFailRespTmpl = `{
|
|
||||||
"Code": "ErrorCode",
|
|
||||||
"Message": "ErrorMsg",
|
|
||||||
"LastUpdated": "2009-11-23T0:00:00Z"
|
|
||||||
}`
|
|
||||||
|
|
||||||
func initTestServer(expireOn string, failAssume bool) *httptest.Server {
|
|
||||||
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
||||||
if r.URL.Path == "/latest/meta-data/iam/security-credentials" {
|
|
||||||
fmt.Fprintln(w, "RoleName")
|
|
||||||
} else if r.URL.Path == "/latest/meta-data/iam/security-credentials/RoleName" {
|
|
||||||
if failAssume {
|
|
||||||
fmt.Fprintf(w, credsFailRespTmpl)
|
|
||||||
} else {
|
|
||||||
fmt.Fprintf(w, credsRespTmpl, expireOn)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
http.Error(w, "bad request", http.StatusBadRequest)
|
|
||||||
}
|
|
||||||
}))
|
|
||||||
|
|
||||||
return server
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestEC2RoleProvider(t *testing.T) {
|
|
||||||
server := initTestServer("2014-12-16T01:51:37Z", false)
|
|
||||||
defer server.Close()
|
|
||||||
|
|
||||||
p := &ec2rolecreds.EC2RoleProvider{
|
|
||||||
Client: ec2metadata.New(&ec2metadata.Config{Endpoint: aws.String(server.URL + "/latest")}),
|
|
||||||
}
|
|
||||||
|
|
||||||
creds, err := p.Retrieve()
|
|
||||||
assert.Nil(t, err, "Expect no error")
|
|
||||||
|
|
||||||
assert.Equal(t, "accessKey", creds.AccessKeyID, "Expect access key ID to match")
|
|
||||||
assert.Equal(t, "secret", creds.SecretAccessKey, "Expect secret access key to match")
|
|
||||||
assert.Equal(t, "token", creds.SessionToken, "Expect session token to match")
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestEC2RoleProviderFailAssume(t *testing.T) {
|
|
||||||
server := initTestServer("2014-12-16T01:51:37Z", true)
|
|
||||||
defer server.Close()
|
|
||||||
|
|
||||||
p := &ec2rolecreds.EC2RoleProvider{
|
|
||||||
Client: ec2metadata.New(&ec2metadata.Config{Endpoint: aws.String(server.URL + "/latest")}),
|
|
||||||
}
|
|
||||||
|
|
||||||
creds, err := p.Retrieve()
|
|
||||||
assert.Error(t, err, "Expect error")
|
|
||||||
|
|
||||||
e := err.(awserr.Error)
|
|
||||||
assert.Equal(t, "ErrorCode", e.Code())
|
|
||||||
assert.Equal(t, "ErrorMsg", e.Message())
|
|
||||||
assert.Nil(t, e.OrigErr())
|
|
||||||
|
|
||||||
assert.Equal(t, "", creds.AccessKeyID, "Expect access key ID to match")
|
|
||||||
assert.Equal(t, "", creds.SecretAccessKey, "Expect secret access key to match")
|
|
||||||
assert.Equal(t, "", creds.SessionToken, "Expect session token to match")
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestEC2RoleProviderIsExpired(t *testing.T) {
|
|
||||||
server := initTestServer("2014-12-16T01:51:37Z", false)
|
|
||||||
defer server.Close()
|
|
||||||
|
|
||||||
p := &ec2rolecreds.EC2RoleProvider{
|
|
||||||
Client: ec2metadata.New(&ec2metadata.Config{Endpoint: aws.String(server.URL + "/latest")}),
|
|
||||||
}
|
|
||||||
p.CurrentTime = func() time.Time {
|
|
||||||
return time.Date(2014, 12, 15, 21, 26, 0, 0, time.UTC)
|
|
||||||
}
|
|
||||||
|
|
||||||
assert.True(t, p.IsExpired(), "Expect creds to be expired before retrieve.")
|
|
||||||
|
|
||||||
_, err := p.Retrieve()
|
|
||||||
assert.Nil(t, err, "Expect no error")
|
|
||||||
|
|
||||||
assert.False(t, p.IsExpired(), "Expect creds to not be expired after retrieve.")
|
|
||||||
|
|
||||||
p.CurrentTime = func() time.Time {
|
|
||||||
return time.Date(3014, 12, 15, 21, 26, 0, 0, time.UTC)
|
|
||||||
}
|
|
||||||
|
|
||||||
assert.True(t, p.IsExpired(), "Expect creds to be expired.")
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestEC2RoleProviderExpiryWindowIsExpired(t *testing.T) {
|
|
||||||
server := initTestServer("2014-12-16T01:51:37Z", false)
|
|
||||||
defer server.Close()
|
|
||||||
|
|
||||||
p := &ec2rolecreds.EC2RoleProvider{
|
|
||||||
Client: ec2metadata.New(&ec2metadata.Config{Endpoint: aws.String(server.URL + "/latest")}),
|
|
||||||
ExpiryWindow: time.Hour * 1,
|
|
||||||
}
|
|
||||||
p.CurrentTime = func() time.Time {
|
|
||||||
return time.Date(2014, 12, 15, 0, 51, 37, 0, time.UTC)
|
|
||||||
}
|
|
||||||
|
|
||||||
assert.True(t, p.IsExpired(), "Expect creds to be expired before retrieve.")
|
|
||||||
|
|
||||||
_, err := p.Retrieve()
|
|
||||||
assert.Nil(t, err, "Expect no error")
|
|
||||||
|
|
||||||
assert.False(t, p.IsExpired(), "Expect creds to not be expired after retrieve.")
|
|
||||||
|
|
||||||
p.CurrentTime = func() time.Time {
|
|
||||||
return time.Date(2014, 12, 16, 0, 55, 37, 0, time.UTC)
|
|
||||||
}
|
|
||||||
|
|
||||||
assert.True(t, p.IsExpired(), "Expect creds to be expired.")
|
|
||||||
}
|
|
||||||
|
|
||||||
func BenchmarkEC2RoleProvider(b *testing.B) {
|
|
||||||
server := initTestServer("2014-12-16T01:51:37Z", false)
|
|
||||||
defer server.Close()
|
|
||||||
|
|
||||||
p := &ec2rolecreds.EC2RoleProvider{
|
|
||||||
Client: ec2metadata.New(&ec2metadata.Config{Endpoint: aws.String(server.URL + "/latest")}),
|
|
||||||
}
|
|
||||||
_, err := p.Retrieve()
|
|
||||||
if err != nil {
|
|
||||||
b.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
b.ResetTimer()
|
|
||||||
b.RunParallel(func(pb *testing.PB) {
|
|
||||||
for pb.Next() {
|
|
||||||
_, err := p.Retrieve()
|
|
||||||
if err != nil {
|
|
||||||
b.Fatal(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
70
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/env_provider_test.go
generated
vendored
70
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/env_provider_test.go
generated
vendored
@@ -1,70 +0,0 @@
|
|||||||
package credentials
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
"os"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestEnvProviderRetrieve(t *testing.T) {
|
|
||||||
os.Clearenv()
|
|
||||||
os.Setenv("AWS_ACCESS_KEY_ID", "access")
|
|
||||||
os.Setenv("AWS_SECRET_ACCESS_KEY", "secret")
|
|
||||||
os.Setenv("AWS_SESSION_TOKEN", "token")
|
|
||||||
|
|
||||||
e := EnvProvider{}
|
|
||||||
creds, err := e.Retrieve()
|
|
||||||
assert.Nil(t, err, "Expect no error")
|
|
||||||
|
|
||||||
assert.Equal(t, "access", creds.AccessKeyID, "Expect access key ID to match")
|
|
||||||
assert.Equal(t, "secret", creds.SecretAccessKey, "Expect secret access key to match")
|
|
||||||
assert.Equal(t, "token", creds.SessionToken, "Expect session token to match")
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestEnvProviderIsExpired(t *testing.T) {
|
|
||||||
os.Clearenv()
|
|
||||||
os.Setenv("AWS_ACCESS_KEY_ID", "access")
|
|
||||||
os.Setenv("AWS_SECRET_ACCESS_KEY", "secret")
|
|
||||||
os.Setenv("AWS_SESSION_TOKEN", "token")
|
|
||||||
|
|
||||||
e := EnvProvider{}
|
|
||||||
|
|
||||||
assert.True(t, e.IsExpired(), "Expect creds to be expired before retrieve.")
|
|
||||||
|
|
||||||
_, err := e.Retrieve()
|
|
||||||
assert.Nil(t, err, "Expect no error")
|
|
||||||
|
|
||||||
assert.False(t, e.IsExpired(), "Expect creds to not be expired after retrieve.")
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestEnvProviderNoAccessKeyID(t *testing.T) {
|
|
||||||
os.Clearenv()
|
|
||||||
os.Setenv("AWS_SECRET_ACCESS_KEY", "secret")
|
|
||||||
|
|
||||||
e := EnvProvider{}
|
|
||||||
creds, err := e.Retrieve()
|
|
||||||
assert.Equal(t, ErrAccessKeyIDNotFound, err, "ErrAccessKeyIDNotFound expected, but was %#v error: %#v", creds, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestEnvProviderNoSecretAccessKey(t *testing.T) {
|
|
||||||
os.Clearenv()
|
|
||||||
os.Setenv("AWS_ACCESS_KEY_ID", "access")
|
|
||||||
|
|
||||||
e := EnvProvider{}
|
|
||||||
creds, err := e.Retrieve()
|
|
||||||
assert.Equal(t, ErrSecretAccessKeyNotFound, err, "ErrSecretAccessKeyNotFound expected, but was %#v error: %#v", creds, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestEnvProviderAlternateNames(t *testing.T) {
|
|
||||||
os.Clearenv()
|
|
||||||
os.Setenv("AWS_ACCESS_KEY", "access")
|
|
||||||
os.Setenv("AWS_SECRET_KEY", "secret")
|
|
||||||
|
|
||||||
e := EnvProvider{}
|
|
||||||
creds, err := e.Retrieve()
|
|
||||||
assert.Nil(t, err, "Expect no error")
|
|
||||||
|
|
||||||
assert.Equal(t, "access", creds.AccessKeyID, "Expected access key ID")
|
|
||||||
assert.Equal(t, "secret", creds.SecretAccessKey, "Expected secret access key")
|
|
||||||
assert.Empty(t, creds.SessionToken, "Expected no token")
|
|
||||||
}
|
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
package credentials
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
"os"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestSharedCredentialsProvider(t *testing.T) {
|
|
||||||
os.Clearenv()
|
|
||||||
|
|
||||||
p := SharedCredentialsProvider{Filename: "example.ini", Profile: ""}
|
|
||||||
creds, err := p.Retrieve()
|
|
||||||
assert.Nil(t, err, "Expect no error")
|
|
||||||
|
|
||||||
assert.Equal(t, "accessKey", creds.AccessKeyID, "Expect access key ID to match")
|
|
||||||
assert.Equal(t, "secret", creds.SecretAccessKey, "Expect secret access key to match")
|
|
||||||
assert.Equal(t, "token", creds.SessionToken, "Expect session token to match")
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSharedCredentialsProviderIsExpired(t *testing.T) {
|
|
||||||
os.Clearenv()
|
|
||||||
|
|
||||||
p := SharedCredentialsProvider{Filename: "example.ini", Profile: ""}
|
|
||||||
|
|
||||||
assert.True(t, p.IsExpired(), "Expect creds to be expired before retrieve")
|
|
||||||
|
|
||||||
_, err := p.Retrieve()
|
|
||||||
assert.Nil(t, err, "Expect no error")
|
|
||||||
|
|
||||||
assert.False(t, p.IsExpired(), "Expect creds to not be expired after retrieve")
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSharedCredentialsProviderWithAWS_SHARED_CREDENTIALS_FILE(t *testing.T) {
|
|
||||||
os.Clearenv()
|
|
||||||
os.Setenv("AWS_SHARED_CREDENTIALS_FILE", "example.ini")
|
|
||||||
p := SharedCredentialsProvider{}
|
|
||||||
creds, err := p.Retrieve()
|
|
||||||
|
|
||||||
assert.Nil(t, err, "Expect no error")
|
|
||||||
|
|
||||||
assert.Equal(t, "accessKey", creds.AccessKeyID, "Expect access key ID to match")
|
|
||||||
assert.Equal(t, "secret", creds.SecretAccessKey, "Expect secret access key to match")
|
|
||||||
assert.Equal(t, "token", creds.SessionToken, "Expect session token to match")
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSharedCredentialsProviderWithAWS_PROFILE(t *testing.T) {
|
|
||||||
os.Clearenv()
|
|
||||||
os.Setenv("AWS_PROFILE", "no_token")
|
|
||||||
|
|
||||||
p := SharedCredentialsProvider{Filename: "example.ini", Profile: ""}
|
|
||||||
creds, err := p.Retrieve()
|
|
||||||
assert.Nil(t, err, "Expect no error")
|
|
||||||
|
|
||||||
assert.Equal(t, "accessKey", creds.AccessKeyID, "Expect access key ID to match")
|
|
||||||
assert.Equal(t, "secret", creds.SecretAccessKey, "Expect secret access key to match")
|
|
||||||
assert.Empty(t, creds.SessionToken, "Expect no token")
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSharedCredentialsProviderWithoutTokenFromProfile(t *testing.T) {
|
|
||||||
os.Clearenv()
|
|
||||||
|
|
||||||
p := SharedCredentialsProvider{Filename: "example.ini", Profile: "no_token"}
|
|
||||||
creds, err := p.Retrieve()
|
|
||||||
assert.Nil(t, err, "Expect no error")
|
|
||||||
|
|
||||||
assert.Equal(t, "accessKey", creds.AccessKeyID, "Expect access key ID to match")
|
|
||||||
assert.Equal(t, "secret", creds.SecretAccessKey, "Expect secret access key to match")
|
|
||||||
assert.Empty(t, creds.SessionToken, "Expect no token")
|
|
||||||
}
|
|
||||||
|
|
||||||
func BenchmarkSharedCredentialsProvider(b *testing.B) {
|
|
||||||
os.Clearenv()
|
|
||||||
|
|
||||||
p := SharedCredentialsProvider{Filename: "example.ini", Profile: ""}
|
|
||||||
_, err := p.Retrieve()
|
|
||||||
if err != nil {
|
|
||||||
b.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
b.ResetTimer()
|
|
||||||
for i := 0; i < b.N; i++ {
|
|
||||||
_, err := p.Retrieve()
|
|
||||||
if err != nil {
|
|
||||||
b.Fatal(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
34
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/static_provider_test.go
generated
vendored
34
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/static_provider_test.go
generated
vendored
@@ -1,34 +0,0 @@
|
|||||||
package credentials
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestStaticProviderGet(t *testing.T) {
|
|
||||||
s := StaticProvider{
|
|
||||||
Value: Value{
|
|
||||||
AccessKeyID: "AKID",
|
|
||||||
SecretAccessKey: "SECRET",
|
|
||||||
SessionToken: "",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
creds, err := s.Retrieve()
|
|
||||||
assert.Nil(t, err, "Expect no error")
|
|
||||||
assert.Equal(t, "AKID", creds.AccessKeyID, "Expect access key ID to match")
|
|
||||||
assert.Equal(t, "SECRET", creds.SecretAccessKey, "Expect secret access key to match")
|
|
||||||
assert.Empty(t, creds.SessionToken, "Expect no session token")
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestStaticProviderIsExpired(t *testing.T) {
|
|
||||||
s := StaticProvider{
|
|
||||||
Value: Value{
|
|
||||||
AccessKeyID: "AKID",
|
|
||||||
SecretAccessKey: "SECRET",
|
|
||||||
SessionToken: "",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
assert.False(t, s.IsExpired(), "Expect static credentials to never expire")
|
|
||||||
}
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
package stscreds
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/aws"
|
|
||||||
"github.com/aws/aws-sdk-go/service/sts"
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
)
|
|
||||||
|
|
||||||
type stubSTS struct {
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *stubSTS) AssumeRole(input *sts.AssumeRoleInput) (*sts.AssumeRoleOutput, error) {
|
|
||||||
expiry := time.Now().Add(60 * time.Minute)
|
|
||||||
return &sts.AssumeRoleOutput{
|
|
||||||
Credentials: &sts.Credentials{
|
|
||||||
// Just reflect the role arn to the provider.
|
|
||||||
AccessKeyId: input.RoleArn,
|
|
||||||
SecretAccessKey: aws.String("assumedSecretAccessKey"),
|
|
||||||
SessionToken: aws.String("assumedSessionToken"),
|
|
||||||
Expiration: &expiry,
|
|
||||||
},
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestAssumeRoleProvider(t *testing.T) {
|
|
||||||
stub := &stubSTS{}
|
|
||||||
p := &AssumeRoleProvider{
|
|
||||||
Client: stub,
|
|
||||||
RoleARN: "roleARN",
|
|
||||||
}
|
|
||||||
|
|
||||||
creds, err := p.Retrieve()
|
|
||||||
assert.Nil(t, err, "Expect no error")
|
|
||||||
|
|
||||||
assert.Equal(t, "roleARN", creds.AccessKeyID, "Expect access key ID to be reflected role ARN")
|
|
||||||
assert.Equal(t, "assumedSecretAccessKey", creds.SecretAccessKey, "Expect secret access key to match")
|
|
||||||
assert.Equal(t, "assumedSessionToken", creds.SessionToken, "Expect session token to match")
|
|
||||||
}
|
|
||||||
|
|
||||||
func BenchmarkAssumeRoleProvider(b *testing.B) {
|
|
||||||
stub := &stubSTS{}
|
|
||||||
p := &AssumeRoleProvider{
|
|
||||||
Client: stub,
|
|
||||||
RoleARN: "roleARN",
|
|
||||||
}
|
|
||||||
|
|
||||||
b.ResetTimer()
|
|
||||||
b.RunParallel(func(pb *testing.PB) {
|
|
||||||
for pb.Next() {
|
|
||||||
_, err := p.Retrieve()
|
|
||||||
if err != nil {
|
|
||||||
b.Fatal(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
100
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/ec2metadata/api_test.go
generated
vendored
100
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/ec2metadata/api_test.go
generated
vendored
@@ -1,100 +0,0 @@
|
|||||||
package ec2metadata_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"io/ioutil"
|
|
||||||
"net/http"
|
|
||||||
"net/http/httptest"
|
|
||||||
"path"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/aws"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/awserr"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/ec2metadata"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/request"
|
|
||||||
)
|
|
||||||
|
|
||||||
func initTestServer(path string, resp string) *httptest.Server {
|
|
||||||
return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
||||||
if r.RequestURI != path {
|
|
||||||
http.Error(w, "not found", http.StatusNotFound)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
w.Write([]byte(resp))
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestEndpoint(t *testing.T) {
|
|
||||||
c := ec2metadata.New(&ec2metadata.Config{})
|
|
||||||
op := &request.Operation{
|
|
||||||
Name: "GetMetadata",
|
|
||||||
HTTPMethod: "GET",
|
|
||||||
HTTPPath: path.Join("/", "meta-data", "testpath"),
|
|
||||||
}
|
|
||||||
|
|
||||||
req := c.Service.NewRequest(op, nil, nil)
|
|
||||||
assert.Equal(t, "http://169.254.169.254/latest", req.Service.Endpoint)
|
|
||||||
assert.Equal(t, "http://169.254.169.254/latest/meta-data/testpath", req.HTTPRequest.URL.String())
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestGetMetadata(t *testing.T) {
|
|
||||||
server := initTestServer(
|
|
||||||
"/latest/meta-data/some/path",
|
|
||||||
"success", // real response includes suffix
|
|
||||||
)
|
|
||||||
defer server.Close()
|
|
||||||
c := ec2metadata.New(&ec2metadata.Config{Endpoint: aws.String(server.URL + "/latest")})
|
|
||||||
|
|
||||||
resp, err := c.GetMetadata("some/path")
|
|
||||||
|
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.Equal(t, "success", resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestGetRegion(t *testing.T) {
|
|
||||||
server := initTestServer(
|
|
||||||
"/latest/meta-data/placement/availability-zone",
|
|
||||||
"us-west-2a", // real response includes suffix
|
|
||||||
)
|
|
||||||
defer server.Close()
|
|
||||||
c := ec2metadata.New(&ec2metadata.Config{Endpoint: aws.String(server.URL + "/latest")})
|
|
||||||
|
|
||||||
region, err := c.Region()
|
|
||||||
|
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.Equal(t, "us-west-2", region)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestMetadataAvailable(t *testing.T) {
|
|
||||||
server := initTestServer(
|
|
||||||
"/latest/meta-data/instance-id",
|
|
||||||
"instance-id",
|
|
||||||
)
|
|
||||||
defer server.Close()
|
|
||||||
c := ec2metadata.New(&ec2metadata.Config{Endpoint: aws.String(server.URL + "/latest")})
|
|
||||||
|
|
||||||
available := c.Available()
|
|
||||||
|
|
||||||
assert.True(t, available)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestMetadataNotAvailable(t *testing.T) {
|
|
||||||
c := ec2metadata.New(nil)
|
|
||||||
c.Handlers.Send.Clear()
|
|
||||||
c.Handlers.Send.PushBack(func(r *request.Request) {
|
|
||||||
r.HTTPResponse = &http.Response{
|
|
||||||
StatusCode: int(0),
|
|
||||||
Status: http.StatusText(int(0)),
|
|
||||||
Body: ioutil.NopCloser(bytes.NewReader([]byte{})),
|
|
||||||
}
|
|
||||||
r.Error = awserr.New("RequestError", "send request failed", nil)
|
|
||||||
r.Retryable = aws.Bool(true) // network errors are retryable
|
|
||||||
})
|
|
||||||
|
|
||||||
available := c.Available()
|
|
||||||
|
|
||||||
assert.False(t, available)
|
|
||||||
}
|
|
||||||
47
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/request/handlers_test.go
generated
vendored
47
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/request/handlers_test.go
generated
vendored
@@ -1,47 +0,0 @@
|
|||||||
package request_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/aws"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/request"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestHandlerList(t *testing.T) {
|
|
||||||
s := ""
|
|
||||||
r := &request.Request{}
|
|
||||||
l := request.HandlerList{}
|
|
||||||
l.PushBack(func(r *request.Request) {
|
|
||||||
s += "a"
|
|
||||||
r.Data = s
|
|
||||||
})
|
|
||||||
l.Run(r)
|
|
||||||
assert.Equal(t, "a", s)
|
|
||||||
assert.Equal(t, "a", r.Data)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestMultipleHandlers(t *testing.T) {
|
|
||||||
r := &request.Request{}
|
|
||||||
l := request.HandlerList{}
|
|
||||||
l.PushBack(func(r *request.Request) { r.Data = nil })
|
|
||||||
l.PushFront(func(r *request.Request) { r.Data = aws.Bool(true) })
|
|
||||||
l.Run(r)
|
|
||||||
if r.Data != nil {
|
|
||||||
t.Error("Expected handler to execute")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestNamedHandlers(t *testing.T) {
|
|
||||||
l := request.HandlerList{}
|
|
||||||
named := request.NamedHandler{"Name", func(r *request.Request) {}}
|
|
||||||
named2 := request.NamedHandler{"NotName", func(r *request.Request) {}}
|
|
||||||
l.PushBackNamed(named)
|
|
||||||
l.PushBackNamed(named)
|
|
||||||
l.PushBackNamed(named2)
|
|
||||||
l.PushBack(func(r *request.Request) {})
|
|
||||||
assert.Equal(t, 4, l.Len())
|
|
||||||
l.Remove(named)
|
|
||||||
assert.Equal(t, 2, l.Len())
|
|
||||||
}
|
|
||||||
307
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/request/request_pagination_test.go
generated
vendored
307
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/request/request_pagination_test.go
generated
vendored
@@ -1,307 +0,0 @@
|
|||||||
package request_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/aws"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/request"
|
|
||||||
"github.com/aws/aws-sdk-go/internal/test/unit"
|
|
||||||
"github.com/aws/aws-sdk-go/service/dynamodb"
|
|
||||||
"github.com/aws/aws-sdk-go/service/s3"
|
|
||||||
)
|
|
||||||
|
|
||||||
var _ = unit.Imported
|
|
||||||
|
|
||||||
// Use DynamoDB methods for simplicity
|
|
||||||
func TestPagination(t *testing.T) {
|
|
||||||
db := dynamodb.New(nil)
|
|
||||||
tokens, pages, numPages, gotToEnd := []string{}, []string{}, 0, false
|
|
||||||
|
|
||||||
reqNum := 0
|
|
||||||
resps := []*dynamodb.ListTablesOutput{
|
|
||||||
{TableNames: []*string{aws.String("Table1"), aws.String("Table2")}, LastEvaluatedTableName: aws.String("Table2")},
|
|
||||||
{TableNames: []*string{aws.String("Table3"), aws.String("Table4")}, LastEvaluatedTableName: aws.String("Table4")},
|
|
||||||
{TableNames: []*string{aws.String("Table5")}},
|
|
||||||
}
|
|
||||||
|
|
||||||
db.Handlers.Send.Clear() // mock sending
|
|
||||||
db.Handlers.Unmarshal.Clear()
|
|
||||||
db.Handlers.UnmarshalMeta.Clear()
|
|
||||||
db.Handlers.ValidateResponse.Clear()
|
|
||||||
db.Handlers.Build.PushBack(func(r *request.Request) {
|
|
||||||
in := r.Params.(*dynamodb.ListTablesInput)
|
|
||||||
if in == nil {
|
|
||||||
tokens = append(tokens, "")
|
|
||||||
} else if in.ExclusiveStartTableName != nil {
|
|
||||||
tokens = append(tokens, *in.ExclusiveStartTableName)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
db.Handlers.Unmarshal.PushBack(func(r *request.Request) {
|
|
||||||
r.Data = resps[reqNum]
|
|
||||||
reqNum++
|
|
||||||
})
|
|
||||||
|
|
||||||
params := &dynamodb.ListTablesInput{Limit: aws.Int64(2)}
|
|
||||||
err := db.ListTablesPages(params, func(p *dynamodb.ListTablesOutput, last bool) bool {
|
|
||||||
numPages++
|
|
||||||
for _, t := range p.TableNames {
|
|
||||||
pages = append(pages, *t)
|
|
||||||
}
|
|
||||||
if last {
|
|
||||||
if gotToEnd {
|
|
||||||
assert.Fail(t, "last=true happened twice")
|
|
||||||
}
|
|
||||||
gotToEnd = true
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
})
|
|
||||||
|
|
||||||
assert.Equal(t, []string{"Table2", "Table4"}, tokens)
|
|
||||||
assert.Equal(t, []string{"Table1", "Table2", "Table3", "Table4", "Table5"}, pages)
|
|
||||||
assert.Equal(t, 3, numPages)
|
|
||||||
assert.True(t, gotToEnd)
|
|
||||||
assert.Nil(t, err)
|
|
||||||
assert.Nil(t, params.ExclusiveStartTableName)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Use DynamoDB methods for simplicity
|
|
||||||
func TestPaginationEachPage(t *testing.T) {
|
|
||||||
db := dynamodb.New(nil)
|
|
||||||
tokens, pages, numPages, gotToEnd := []string{}, []string{}, 0, false
|
|
||||||
|
|
||||||
reqNum := 0
|
|
||||||
resps := []*dynamodb.ListTablesOutput{
|
|
||||||
{TableNames: []*string{aws.String("Table1"), aws.String("Table2")}, LastEvaluatedTableName: aws.String("Table2")},
|
|
||||||
{TableNames: []*string{aws.String("Table3"), aws.String("Table4")}, LastEvaluatedTableName: aws.String("Table4")},
|
|
||||||
{TableNames: []*string{aws.String("Table5")}},
|
|
||||||
}
|
|
||||||
|
|
||||||
db.Handlers.Send.Clear() // mock sending
|
|
||||||
db.Handlers.Unmarshal.Clear()
|
|
||||||
db.Handlers.UnmarshalMeta.Clear()
|
|
||||||
db.Handlers.ValidateResponse.Clear()
|
|
||||||
db.Handlers.Build.PushBack(func(r *request.Request) {
|
|
||||||
in := r.Params.(*dynamodb.ListTablesInput)
|
|
||||||
if in == nil {
|
|
||||||
tokens = append(tokens, "")
|
|
||||||
} else if in.ExclusiveStartTableName != nil {
|
|
||||||
tokens = append(tokens, *in.ExclusiveStartTableName)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
db.Handlers.Unmarshal.PushBack(func(r *request.Request) {
|
|
||||||
r.Data = resps[reqNum]
|
|
||||||
reqNum++
|
|
||||||
})
|
|
||||||
|
|
||||||
params := &dynamodb.ListTablesInput{Limit: aws.Int64(2)}
|
|
||||||
req, _ := db.ListTablesRequest(params)
|
|
||||||
err := req.EachPage(func(p interface{}, last bool) bool {
|
|
||||||
numPages++
|
|
||||||
for _, t := range p.(*dynamodb.ListTablesOutput).TableNames {
|
|
||||||
pages = append(pages, *t)
|
|
||||||
}
|
|
||||||
if last {
|
|
||||||
if gotToEnd {
|
|
||||||
assert.Fail(t, "last=true happened twice")
|
|
||||||
}
|
|
||||||
gotToEnd = true
|
|
||||||
}
|
|
||||||
|
|
||||||
return true
|
|
||||||
})
|
|
||||||
|
|
||||||
assert.Equal(t, []string{"Table2", "Table4"}, tokens)
|
|
||||||
assert.Equal(t, []string{"Table1", "Table2", "Table3", "Table4", "Table5"}, pages)
|
|
||||||
assert.Equal(t, 3, numPages)
|
|
||||||
assert.True(t, gotToEnd)
|
|
||||||
assert.Nil(t, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Use DynamoDB methods for simplicity
|
|
||||||
func TestPaginationEarlyExit(t *testing.T) {
|
|
||||||
db := dynamodb.New(nil)
|
|
||||||
numPages, gotToEnd := 0, false
|
|
||||||
|
|
||||||
reqNum := 0
|
|
||||||
resps := []*dynamodb.ListTablesOutput{
|
|
||||||
{TableNames: []*string{aws.String("Table1"), aws.String("Table2")}, LastEvaluatedTableName: aws.String("Table2")},
|
|
||||||
{TableNames: []*string{aws.String("Table3"), aws.String("Table4")}, LastEvaluatedTableName: aws.String("Table4")},
|
|
||||||
{TableNames: []*string{aws.String("Table5")}},
|
|
||||||
}
|
|
||||||
|
|
||||||
db.Handlers.Send.Clear() // mock sending
|
|
||||||
db.Handlers.Unmarshal.Clear()
|
|
||||||
db.Handlers.UnmarshalMeta.Clear()
|
|
||||||
db.Handlers.ValidateResponse.Clear()
|
|
||||||
db.Handlers.Unmarshal.PushBack(func(r *request.Request) {
|
|
||||||
r.Data = resps[reqNum]
|
|
||||||
reqNum++
|
|
||||||
})
|
|
||||||
|
|
||||||
params := &dynamodb.ListTablesInput{Limit: aws.Int64(2)}
|
|
||||||
err := db.ListTablesPages(params, func(p *dynamodb.ListTablesOutput, last bool) bool {
|
|
||||||
numPages++
|
|
||||||
if numPages == 2 {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
if last {
|
|
||||||
if gotToEnd {
|
|
||||||
assert.Fail(t, "last=true happened twice")
|
|
||||||
}
|
|
||||||
gotToEnd = true
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
})
|
|
||||||
|
|
||||||
assert.Equal(t, 2, numPages)
|
|
||||||
assert.False(t, gotToEnd)
|
|
||||||
assert.Nil(t, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSkipPagination(t *testing.T) {
|
|
||||||
client := s3.New(nil)
|
|
||||||
client.Handlers.Send.Clear() // mock sending
|
|
||||||
client.Handlers.Unmarshal.Clear()
|
|
||||||
client.Handlers.UnmarshalMeta.Clear()
|
|
||||||
client.Handlers.ValidateResponse.Clear()
|
|
||||||
client.Handlers.Unmarshal.PushBack(func(r *request.Request) {
|
|
||||||
r.Data = &s3.HeadBucketOutput{}
|
|
||||||
})
|
|
||||||
|
|
||||||
req, _ := client.HeadBucketRequest(&s3.HeadBucketInput{Bucket: aws.String("bucket")})
|
|
||||||
|
|
||||||
numPages, gotToEnd := 0, false
|
|
||||||
req.EachPage(func(p interface{}, last bool) bool {
|
|
||||||
numPages++
|
|
||||||
if last {
|
|
||||||
gotToEnd = true
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
})
|
|
||||||
assert.Equal(t, 1, numPages)
|
|
||||||
assert.True(t, gotToEnd)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Use S3 for simplicity
|
|
||||||
func TestPaginationTruncation(t *testing.T) {
|
|
||||||
count := 0
|
|
||||||
client := s3.New(nil)
|
|
||||||
|
|
||||||
reqNum := &count
|
|
||||||
resps := []*s3.ListObjectsOutput{
|
|
||||||
{IsTruncated: aws.Bool(true), Contents: []*s3.Object{{Key: aws.String("Key1")}}},
|
|
||||||
{IsTruncated: aws.Bool(true), Contents: []*s3.Object{{Key: aws.String("Key2")}}},
|
|
||||||
{IsTruncated: aws.Bool(false), Contents: []*s3.Object{{Key: aws.String("Key3")}}},
|
|
||||||
{IsTruncated: aws.Bool(true), Contents: []*s3.Object{{Key: aws.String("Key4")}}},
|
|
||||||
}
|
|
||||||
|
|
||||||
client.Handlers.Send.Clear() // mock sending
|
|
||||||
client.Handlers.Unmarshal.Clear()
|
|
||||||
client.Handlers.UnmarshalMeta.Clear()
|
|
||||||
client.Handlers.ValidateResponse.Clear()
|
|
||||||
client.Handlers.Unmarshal.PushBack(func(r *request.Request) {
|
|
||||||
r.Data = resps[*reqNum]
|
|
||||||
*reqNum++
|
|
||||||
})
|
|
||||||
|
|
||||||
params := &s3.ListObjectsInput{Bucket: aws.String("bucket")}
|
|
||||||
|
|
||||||
results := []string{}
|
|
||||||
err := client.ListObjectsPages(params, func(p *s3.ListObjectsOutput, last bool) bool {
|
|
||||||
results = append(results, *p.Contents[0].Key)
|
|
||||||
return true
|
|
||||||
})
|
|
||||||
|
|
||||||
assert.Equal(t, []string{"Key1", "Key2", "Key3"}, results)
|
|
||||||
assert.Nil(t, err)
|
|
||||||
|
|
||||||
// Try again without truncation token at all
|
|
||||||
count = 0
|
|
||||||
resps[1].IsTruncated = nil
|
|
||||||
resps[2].IsTruncated = aws.Bool(true)
|
|
||||||
results = []string{}
|
|
||||||
err = client.ListObjectsPages(params, func(p *s3.ListObjectsOutput, last bool) bool {
|
|
||||||
results = append(results, *p.Contents[0].Key)
|
|
||||||
return true
|
|
||||||
})
|
|
||||||
|
|
||||||
assert.Equal(t, []string{"Key1", "Key2"}, results)
|
|
||||||
assert.Nil(t, err)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Benchmarks
|
|
||||||
var benchResps = []*dynamodb.ListTablesOutput{
|
|
||||||
{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
|
|
||||||
{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
|
|
||||||
{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
|
|
||||||
{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
|
|
||||||
{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
|
|
||||||
{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
|
|
||||||
{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
|
|
||||||
{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
|
|
||||||
{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
|
|
||||||
{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
|
|
||||||
{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
|
|
||||||
{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
|
|
||||||
{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
|
|
||||||
{TableNames: []*string{aws.String("TABLE")}},
|
|
||||||
}
|
|
||||||
|
|
||||||
var benchDb = func() *dynamodb.DynamoDB {
|
|
||||||
db := dynamodb.New(nil)
|
|
||||||
db.Handlers.Send.Clear() // mock sending
|
|
||||||
db.Handlers.Unmarshal.Clear()
|
|
||||||
db.Handlers.UnmarshalMeta.Clear()
|
|
||||||
db.Handlers.ValidateResponse.Clear()
|
|
||||||
return db
|
|
||||||
}
|
|
||||||
|
|
||||||
func BenchmarkCodegenIterator(b *testing.B) {
|
|
||||||
reqNum := 0
|
|
||||||
db := benchDb()
|
|
||||||
db.Handlers.Unmarshal.PushBack(func(r *request.Request) {
|
|
||||||
r.Data = benchResps[reqNum]
|
|
||||||
reqNum++
|
|
||||||
})
|
|
||||||
|
|
||||||
input := &dynamodb.ListTablesInput{Limit: aws.Int64(2)}
|
|
||||||
iter := func(fn func(*dynamodb.ListTablesOutput, bool) bool) error {
|
|
||||||
page, _ := db.ListTablesRequest(input)
|
|
||||||
for ; page != nil; page = page.NextPage() {
|
|
||||||
page.Send()
|
|
||||||
out := page.Data.(*dynamodb.ListTablesOutput)
|
|
||||||
if result := fn(out, !page.HasNextPage()); page.Error != nil || !result {
|
|
||||||
return page.Error
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
for i := 0; i < b.N; i++ {
|
|
||||||
reqNum = 0
|
|
||||||
iter(func(p *dynamodb.ListTablesOutput, last bool) bool {
|
|
||||||
return true
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func BenchmarkEachPageIterator(b *testing.B) {
|
|
||||||
reqNum := 0
|
|
||||||
db := benchDb()
|
|
||||||
db.Handlers.Unmarshal.PushBack(func(r *request.Request) {
|
|
||||||
r.Data = benchResps[reqNum]
|
|
||||||
reqNum++
|
|
||||||
})
|
|
||||||
|
|
||||||
input := &dynamodb.ListTablesInput{Limit: aws.Int64(2)}
|
|
||||||
for i := 0; i < b.N; i++ {
|
|
||||||
reqNum = 0
|
|
||||||
req, _ := db.ListTablesRequest(input)
|
|
||||||
req.EachPage(func(p interface{}, last bool) bool {
|
|
||||||
return true
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
228
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/request/request_test.go
generated
vendored
228
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/request/request_test.go
generated
vendored
@@ -1,228 +0,0 @@
|
|||||||
package request_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
|
||||||
"io"
|
|
||||||
"io/ioutil"
|
|
||||||
"net/http"
|
|
||||||
"testing"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/aws"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/awserr"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/credentials"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/request"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/service"
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
)
|
|
||||||
|
|
||||||
type testData struct {
|
|
||||||
Data string
|
|
||||||
}
|
|
||||||
|
|
||||||
func body(str string) io.ReadCloser {
|
|
||||||
return ioutil.NopCloser(bytes.NewReader([]byte(str)))
|
|
||||||
}
|
|
||||||
|
|
||||||
func unmarshal(req *request.Request) {
|
|
||||||
defer req.HTTPResponse.Body.Close()
|
|
||||||
if req.Data != nil {
|
|
||||||
json.NewDecoder(req.HTTPResponse.Body).Decode(req.Data)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func unmarshalError(req *request.Request) {
|
|
||||||
bodyBytes, err := ioutil.ReadAll(req.HTTPResponse.Body)
|
|
||||||
if err != nil {
|
|
||||||
req.Error = awserr.New("UnmarshaleError", req.HTTPResponse.Status, err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if len(bodyBytes) == 0 {
|
|
||||||
req.Error = awserr.NewRequestFailure(
|
|
||||||
awserr.New("UnmarshaleError", req.HTTPResponse.Status, fmt.Errorf("empty body")),
|
|
||||||
req.HTTPResponse.StatusCode,
|
|
||||||
"",
|
|
||||||
)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
var jsonErr jsonErrorResponse
|
|
||||||
if err := json.Unmarshal(bodyBytes, &jsonErr); err != nil {
|
|
||||||
req.Error = awserr.New("UnmarshaleError", "JSON unmarshal", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
req.Error = awserr.NewRequestFailure(
|
|
||||||
awserr.New(jsonErr.Code, jsonErr.Message, nil),
|
|
||||||
req.HTTPResponse.StatusCode,
|
|
||||||
"",
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
type jsonErrorResponse struct {
|
|
||||||
Code string `json:"__type"`
|
|
||||||
Message string `json:"message"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// test that retries occur for 5xx status codes
|
|
||||||
func TestRequestRecoverRetry5xx(t *testing.T) {
|
|
||||||
reqNum := 0
|
|
||||||
reqs := []http.Response{
|
|
||||||
{StatusCode: 500, Body: body(`{"__type":"UnknownError","message":"An error occurred."}`)},
|
|
||||||
{StatusCode: 501, Body: body(`{"__type":"UnknownError","message":"An error occurred."}`)},
|
|
||||||
{StatusCode: 200, Body: body(`{"data":"valid"}`)},
|
|
||||||
}
|
|
||||||
|
|
||||||
s := service.New(aws.NewConfig().WithMaxRetries(10))
|
|
||||||
s.Handlers.Validate.Clear()
|
|
||||||
s.Handlers.Unmarshal.PushBack(unmarshal)
|
|
||||||
s.Handlers.UnmarshalError.PushBack(unmarshalError)
|
|
||||||
s.Handlers.Send.Clear() // mock sending
|
|
||||||
s.Handlers.Send.PushBack(func(r *request.Request) {
|
|
||||||
r.HTTPResponse = &reqs[reqNum]
|
|
||||||
reqNum++
|
|
||||||
})
|
|
||||||
out := &testData{}
|
|
||||||
r := s.NewRequest(&request.Operation{Name: "Operation"}, nil, out)
|
|
||||||
err := r.Send()
|
|
||||||
assert.Nil(t, err)
|
|
||||||
assert.Equal(t, 2, int(r.RetryCount))
|
|
||||||
assert.Equal(t, "valid", out.Data)
|
|
||||||
}
|
|
||||||
|
|
||||||
// test that retries occur for 4xx status codes with a response type that can be retried - see `shouldRetry`
|
|
||||||
func TestRequestRecoverRetry4xxRetryable(t *testing.T) {
|
|
||||||
reqNum := 0
|
|
||||||
reqs := []http.Response{
|
|
||||||
{StatusCode: 400, Body: body(`{"__type":"Throttling","message":"Rate exceeded."}`)},
|
|
||||||
{StatusCode: 429, Body: body(`{"__type":"ProvisionedThroughputExceededException","message":"Rate exceeded."}`)},
|
|
||||||
{StatusCode: 200, Body: body(`{"data":"valid"}`)},
|
|
||||||
}
|
|
||||||
|
|
||||||
s := service.New(aws.NewConfig().WithMaxRetries(10))
|
|
||||||
s.Handlers.Validate.Clear()
|
|
||||||
s.Handlers.Unmarshal.PushBack(unmarshal)
|
|
||||||
s.Handlers.UnmarshalError.PushBack(unmarshalError)
|
|
||||||
s.Handlers.Send.Clear() // mock sending
|
|
||||||
s.Handlers.Send.PushBack(func(r *request.Request) {
|
|
||||||
r.HTTPResponse = &reqs[reqNum]
|
|
||||||
reqNum++
|
|
||||||
})
|
|
||||||
out := &testData{}
|
|
||||||
r := s.NewRequest(&request.Operation{Name: "Operation"}, nil, out)
|
|
||||||
err := r.Send()
|
|
||||||
assert.Nil(t, err)
|
|
||||||
assert.Equal(t, 2, int(r.RetryCount))
|
|
||||||
assert.Equal(t, "valid", out.Data)
|
|
||||||
}
|
|
||||||
|
|
||||||
// test that retries don't occur for 4xx status codes with a response type that can't be retried
|
|
||||||
func TestRequest4xxUnretryable(t *testing.T) {
|
|
||||||
s := service.New(aws.NewConfig().WithMaxRetries(10))
|
|
||||||
s.Handlers.Validate.Clear()
|
|
||||||
s.Handlers.Unmarshal.PushBack(unmarshal)
|
|
||||||
s.Handlers.UnmarshalError.PushBack(unmarshalError)
|
|
||||||
s.Handlers.Send.Clear() // mock sending
|
|
||||||
s.Handlers.Send.PushBack(func(r *request.Request) {
|
|
||||||
r.HTTPResponse = &http.Response{StatusCode: 401, Body: body(`{"__type":"SignatureDoesNotMatch","message":"Signature does not match."}`)}
|
|
||||||
})
|
|
||||||
out := &testData{}
|
|
||||||
r := s.NewRequest(&request.Operation{Name: "Operation"}, nil, out)
|
|
||||||
err := r.Send()
|
|
||||||
assert.NotNil(t, err)
|
|
||||||
if e, ok := err.(awserr.RequestFailure); ok {
|
|
||||||
assert.Equal(t, 401, e.StatusCode())
|
|
||||||
} else {
|
|
||||||
assert.Fail(t, "Expected error to be a service failure")
|
|
||||||
}
|
|
||||||
assert.Equal(t, "SignatureDoesNotMatch", err.(awserr.Error).Code())
|
|
||||||
assert.Equal(t, "Signature does not match.", err.(awserr.Error).Message())
|
|
||||||
assert.Equal(t, 0, int(r.RetryCount))
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestRequestExhaustRetries(t *testing.T) {
|
|
||||||
delays := []time.Duration{}
|
|
||||||
sleepDelay := func(delay time.Duration) {
|
|
||||||
delays = append(delays, delay)
|
|
||||||
}
|
|
||||||
|
|
||||||
reqNum := 0
|
|
||||||
reqs := []http.Response{
|
|
||||||
{StatusCode: 500, Body: body(`{"__type":"UnknownError","message":"An error occurred."}`)},
|
|
||||||
{StatusCode: 500, Body: body(`{"__type":"UnknownError","message":"An error occurred."}`)},
|
|
||||||
{StatusCode: 500, Body: body(`{"__type":"UnknownError","message":"An error occurred."}`)},
|
|
||||||
{StatusCode: 500, Body: body(`{"__type":"UnknownError","message":"An error occurred."}`)},
|
|
||||||
}
|
|
||||||
|
|
||||||
s := service.New(aws.NewConfig().WithMaxRetries(aws.DefaultRetries).WithSleepDelay(sleepDelay))
|
|
||||||
s.Handlers.Validate.Clear()
|
|
||||||
s.Handlers.Unmarshal.PushBack(unmarshal)
|
|
||||||
s.Handlers.UnmarshalError.PushBack(unmarshalError)
|
|
||||||
s.Handlers.Send.Clear() // mock sending
|
|
||||||
s.Handlers.Send.PushBack(func(r *request.Request) {
|
|
||||||
r.HTTPResponse = &reqs[reqNum]
|
|
||||||
reqNum++
|
|
||||||
})
|
|
||||||
r := s.NewRequest(&request.Operation{Name: "Operation"}, nil, nil)
|
|
||||||
err := r.Send()
|
|
||||||
assert.NotNil(t, err)
|
|
||||||
if e, ok := err.(awserr.RequestFailure); ok {
|
|
||||||
assert.Equal(t, 500, e.StatusCode())
|
|
||||||
} else {
|
|
||||||
assert.Fail(t, "Expected error to be a service failure")
|
|
||||||
}
|
|
||||||
assert.Equal(t, "UnknownError", err.(awserr.Error).Code())
|
|
||||||
assert.Equal(t, "An error occurred.", err.(awserr.Error).Message())
|
|
||||||
assert.Equal(t, 3, int(r.RetryCount))
|
|
||||||
|
|
||||||
expectDelays := []struct{ min, max time.Duration }{{30, 59}, {60, 118}, {120, 236}}
|
|
||||||
for i, v := range delays {
|
|
||||||
min := expectDelays[i].min * time.Millisecond
|
|
||||||
max := expectDelays[i].max * time.Millisecond
|
|
||||||
assert.True(t, min <= v && v <= max,
|
|
||||||
"Expect delay to be within range, i:%d, v:%s, min:%s, max:%s", i, v, min, max)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// test that the request is retried after the credentials are expired.
|
|
||||||
func TestRequestRecoverExpiredCreds(t *testing.T) {
|
|
||||||
reqNum := 0
|
|
||||||
reqs := []http.Response{
|
|
||||||
{StatusCode: 400, Body: body(`{"__type":"ExpiredTokenException","message":"expired token"}`)},
|
|
||||||
{StatusCode: 200, Body: body(`{"data":"valid"}`)},
|
|
||||||
}
|
|
||||||
|
|
||||||
s := service.New(&aws.Config{MaxRetries: aws.Int(10), Credentials: credentials.NewStaticCredentials("AKID", "SECRET", "")})
|
|
||||||
s.Handlers.Validate.Clear()
|
|
||||||
s.Handlers.Unmarshal.PushBack(unmarshal)
|
|
||||||
s.Handlers.UnmarshalError.PushBack(unmarshalError)
|
|
||||||
|
|
||||||
credExpiredBeforeRetry := false
|
|
||||||
credExpiredAfterRetry := false
|
|
||||||
|
|
||||||
s.Handlers.AfterRetry.PushBack(func(r *request.Request) {
|
|
||||||
credExpiredAfterRetry = r.Service.Config.Credentials.IsExpired()
|
|
||||||
})
|
|
||||||
|
|
||||||
s.Handlers.Sign.Clear()
|
|
||||||
s.Handlers.Sign.PushBack(func(r *request.Request) {
|
|
||||||
r.Service.Config.Credentials.Get()
|
|
||||||
})
|
|
||||||
s.Handlers.Send.Clear() // mock sending
|
|
||||||
s.Handlers.Send.PushBack(func(r *request.Request) {
|
|
||||||
r.HTTPResponse = &reqs[reqNum]
|
|
||||||
reqNum++
|
|
||||||
})
|
|
||||||
out := &testData{}
|
|
||||||
r := s.NewRequest(&request.Operation{Name: "Operation"}, nil, out)
|
|
||||||
err := r.Send()
|
|
||||||
assert.Nil(t, err)
|
|
||||||
|
|
||||||
assert.False(t, credExpiredBeforeRetry, "Expect valid creds before retry check")
|
|
||||||
assert.True(t, credExpiredAfterRetry, "Expect expired creds after retry check")
|
|
||||||
assert.False(t, s.Config.Credentials.IsExpired(), "Expect valid creds after cred expired recovery")
|
|
||||||
|
|
||||||
assert.Equal(t, 1, int(r.RetryCount))
|
|
||||||
assert.Equal(t, "valid", out.Data)
|
|
||||||
}
|
|
||||||
56
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/types_test.go
generated
vendored
56
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/types_test.go
generated
vendored
@@ -1,56 +0,0 @@
|
|||||||
package aws
|
|
||||||
|
|
||||||
import (
|
|
||||||
"math/rand"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestWriteAtBuffer(t *testing.T) {
|
|
||||||
b := &WriteAtBuffer{}
|
|
||||||
|
|
||||||
n, err := b.WriteAt([]byte{1}, 0)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.Equal(t, 1, n)
|
|
||||||
|
|
||||||
n, err = b.WriteAt([]byte{1, 1, 1}, 5)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.Equal(t, 3, n)
|
|
||||||
|
|
||||||
n, err = b.WriteAt([]byte{2}, 1)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.Equal(t, 1, n)
|
|
||||||
|
|
||||||
n, err = b.WriteAt([]byte{3}, 2)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.Equal(t, 1, n)
|
|
||||||
|
|
||||||
assert.Equal(t, []byte{1, 2, 3, 0, 0, 1, 1, 1}, b.Bytes())
|
|
||||||
}
|
|
||||||
|
|
||||||
func BenchmarkWriteAtBuffer(b *testing.B) {
|
|
||||||
buf := &WriteAtBuffer{}
|
|
||||||
r := rand.New(rand.NewSource(1))
|
|
||||||
|
|
||||||
b.ResetTimer()
|
|
||||||
for i := 0; i < b.N; i++ {
|
|
||||||
to := r.Intn(10) * 4096
|
|
||||||
bs := make([]byte, to)
|
|
||||||
buf.WriteAt(bs, r.Int63n(10)*4096)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func BenchmarkWriteAtBufferParallel(b *testing.B) {
|
|
||||||
buf := &WriteAtBuffer{}
|
|
||||||
r := rand.New(rand.NewSource(1))
|
|
||||||
|
|
||||||
b.ResetTimer()
|
|
||||||
b.RunParallel(func(pb *testing.PB) {
|
|
||||||
for pb.Next() {
|
|
||||||
to := r.Intn(10) * 4096
|
|
||||||
bs := make([]byte, to)
|
|
||||||
buf.WriteAt(bs, r.Int63n(10)*4096)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
28
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/endpoints/endpoints_test.go
generated
vendored
28
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/endpoints/endpoints_test.go
generated
vendored
@@ -1,28 +0,0 @@
|
|||||||
package endpoints
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestGlobalEndpoints(t *testing.T) {
|
|
||||||
region := "mock-region-1"
|
|
||||||
svcs := []string{"cloudfront", "iam", "importexport", "route53", "sts"}
|
|
||||||
|
|
||||||
for _, name := range svcs {
|
|
||||||
ep, sr := EndpointForRegion(name, region)
|
|
||||||
assert.Equal(t, name+".amazonaws.com", ep)
|
|
||||||
assert.Equal(t, "us-east-1", sr)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestServicesInCN(t *testing.T) {
|
|
||||||
region := "cn-north-1"
|
|
||||||
svcs := []string{"cloudfront", "iam", "importexport", "route53", "sts", "s3"}
|
|
||||||
|
|
||||||
for _, name := range svcs {
|
|
||||||
ep, _ := EndpointForRegion(name, region)
|
|
||||||
assert.Equal(t, name+"."+region+".amazonaws.com.cn", ep)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
880
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/ec2query/build_test.go
generated
vendored
880
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/ec2query/build_test.go
generated
vendored
@@ -1,880 +0,0 @@
|
|||||||
package ec2query_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"encoding/json"
|
|
||||||
"encoding/xml"
|
|
||||||
"io"
|
|
||||||
"io/ioutil"
|
|
||||||
"net/http"
|
|
||||||
"net/url"
|
|
||||||
"testing"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/aws"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/defaults"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/request"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/service"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/service/serviceinfo"
|
|
||||||
"github.com/aws/aws-sdk-go/internal/protocol/ec2query"
|
|
||||||
"github.com/aws/aws-sdk-go/internal/protocol/xml/xmlutil"
|
|
||||||
"github.com/aws/aws-sdk-go/internal/signer/v4"
|
|
||||||
"github.com/aws/aws-sdk-go/internal/util"
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
)
|
|
||||||
|
|
||||||
var _ bytes.Buffer // always import bytes
|
|
||||||
var _ http.Request
|
|
||||||
var _ json.Marshaler
|
|
||||||
var _ time.Time
|
|
||||||
var _ xmlutil.XMLNode
|
|
||||||
var _ xml.Attr
|
|
||||||
var _ = ioutil.Discard
|
|
||||||
var _ = util.Trim("")
|
|
||||||
var _ = url.Values{}
|
|
||||||
var _ = io.EOF
|
|
||||||
|
|
||||||
type InputService1ProtocolTest struct {
|
|
||||||
*service.Service
|
|
||||||
}
|
|
||||||
|
|
||||||
// New returns a new InputService1ProtocolTest client.
|
|
||||||
func NewInputService1ProtocolTest(config *aws.Config) *InputService1ProtocolTest {
|
|
||||||
service := &service.Service{
|
|
||||||
ServiceInfo: serviceinfo.ServiceInfo{
|
|
||||||
Config: defaults.DefaultConfig.Merge(config),
|
|
||||||
ServiceName: "inputservice1protocoltest",
|
|
||||||
APIVersion: "2014-01-01",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
service.Initialize()
|
|
||||||
|
|
||||||
// Handlers
|
|
||||||
service.Handlers.Sign.PushBack(v4.Sign)
|
|
||||||
service.Handlers.Build.PushBack(ec2query.Build)
|
|
||||||
service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
|
|
||||||
service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
|
|
||||||
service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
|
|
||||||
|
|
||||||
return &InputService1ProtocolTest{service}
|
|
||||||
}
|
|
||||||
|
|
||||||
// newRequest creates a new request for a InputService1ProtocolTest operation and runs any
|
|
||||||
// custom request initialization.
|
|
||||||
func (c *InputService1ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
|
|
||||||
req := c.NewRequest(op, params, data)
|
|
||||||
|
|
||||||
return req
|
|
||||||
}
|
|
||||||
|
|
||||||
const opInputService1TestCaseOperation1 = "OperationName"
|
|
||||||
|
|
||||||
// InputService1TestCaseOperation1Request generates a request for the InputService1TestCaseOperation1 operation.
|
|
||||||
func (c *InputService1ProtocolTest) InputService1TestCaseOperation1Request(input *InputService1TestShapeInputService1TestCaseOperation1Input) (req *request.Request, output *InputService1TestShapeInputService1TestCaseOperation1Output) {
|
|
||||||
op := &request.Operation{
|
|
||||||
Name: opInputService1TestCaseOperation1,
|
|
||||||
}
|
|
||||||
|
|
||||||
if input == nil {
|
|
||||||
input = &InputService1TestShapeInputService1TestCaseOperation1Input{}
|
|
||||||
}
|
|
||||||
|
|
||||||
req = c.newRequest(op, input, output)
|
|
||||||
output = &InputService1TestShapeInputService1TestCaseOperation1Output{}
|
|
||||||
req.Data = output
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *InputService1ProtocolTest) InputService1TestCaseOperation1(input *InputService1TestShapeInputService1TestCaseOperation1Input) (*InputService1TestShapeInputService1TestCaseOperation1Output, error) {
|
|
||||||
req, out := c.InputService1TestCaseOperation1Request(input)
|
|
||||||
err := req.Send()
|
|
||||||
return out, err
|
|
||||||
}
|
|
||||||
|
|
||||||
type InputService1TestShapeInputService1TestCaseOperation1Input struct {
|
|
||||||
Bar *string `type:"string"`
|
|
||||||
|
|
||||||
Foo *string `type:"string"`
|
|
||||||
|
|
||||||
metadataInputService1TestShapeInputService1TestCaseOperation1Input `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataInputService1TestShapeInputService1TestCaseOperation1Input struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type InputService1TestShapeInputService1TestCaseOperation1Output struct {
|
|
||||||
metadataInputService1TestShapeInputService1TestCaseOperation1Output `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataInputService1TestShapeInputService1TestCaseOperation1Output struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type InputService2ProtocolTest struct {
|
|
||||||
*service.Service
|
|
||||||
}
|
|
||||||
|
|
||||||
// New returns a new InputService2ProtocolTest client.
|
|
||||||
func NewInputService2ProtocolTest(config *aws.Config) *InputService2ProtocolTest {
|
|
||||||
service := &service.Service{
|
|
||||||
ServiceInfo: serviceinfo.ServiceInfo{
|
|
||||||
Config: defaults.DefaultConfig.Merge(config),
|
|
||||||
ServiceName: "inputservice2protocoltest",
|
|
||||||
APIVersion: "2014-01-01",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
service.Initialize()
|
|
||||||
|
|
||||||
// Handlers
|
|
||||||
service.Handlers.Sign.PushBack(v4.Sign)
|
|
||||||
service.Handlers.Build.PushBack(ec2query.Build)
|
|
||||||
service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
|
|
||||||
service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
|
|
||||||
service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
|
|
||||||
|
|
||||||
return &InputService2ProtocolTest{service}
|
|
||||||
}
|
|
||||||
|
|
||||||
// newRequest creates a new request for a InputService2ProtocolTest operation and runs any
|
|
||||||
// custom request initialization.
|
|
||||||
func (c *InputService2ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
|
|
||||||
req := c.NewRequest(op, params, data)
|
|
||||||
|
|
||||||
return req
|
|
||||||
}
|
|
||||||
|
|
||||||
const opInputService2TestCaseOperation1 = "OperationName"
|
|
||||||
|
|
||||||
// InputService2TestCaseOperation1Request generates a request for the InputService2TestCaseOperation1 operation.
|
|
||||||
func (c *InputService2ProtocolTest) InputService2TestCaseOperation1Request(input *InputService2TestShapeInputService2TestCaseOperation1Input) (req *request.Request, output *InputService2TestShapeInputService2TestCaseOperation1Output) {
|
|
||||||
op := &request.Operation{
|
|
||||||
Name: opInputService2TestCaseOperation1,
|
|
||||||
}
|
|
||||||
|
|
||||||
if input == nil {
|
|
||||||
input = &InputService2TestShapeInputService2TestCaseOperation1Input{}
|
|
||||||
}
|
|
||||||
|
|
||||||
req = c.newRequest(op, input, output)
|
|
||||||
output = &InputService2TestShapeInputService2TestCaseOperation1Output{}
|
|
||||||
req.Data = output
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *InputService2ProtocolTest) InputService2TestCaseOperation1(input *InputService2TestShapeInputService2TestCaseOperation1Input) (*InputService2TestShapeInputService2TestCaseOperation1Output, error) {
|
|
||||||
req, out := c.InputService2TestCaseOperation1Request(input)
|
|
||||||
err := req.Send()
|
|
||||||
return out, err
|
|
||||||
}
|
|
||||||
|
|
||||||
type InputService2TestShapeInputService2TestCaseOperation1Input struct {
|
|
||||||
Bar *string `locationName:"barLocationName" type:"string"`
|
|
||||||
|
|
||||||
Foo *string `type:"string"`
|
|
||||||
|
|
||||||
Yuck *string `locationName:"yuckLocationName" queryName:"yuckQueryName" type:"string"`
|
|
||||||
|
|
||||||
metadataInputService2TestShapeInputService2TestCaseOperation1Input `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataInputService2TestShapeInputService2TestCaseOperation1Input struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type InputService2TestShapeInputService2TestCaseOperation1Output struct {
|
|
||||||
metadataInputService2TestShapeInputService2TestCaseOperation1Output `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataInputService2TestShapeInputService2TestCaseOperation1Output struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type InputService3ProtocolTest struct {
|
|
||||||
*service.Service
|
|
||||||
}
|
|
||||||
|
|
||||||
// New returns a new InputService3ProtocolTest client.
|
|
||||||
func NewInputService3ProtocolTest(config *aws.Config) *InputService3ProtocolTest {
|
|
||||||
service := &service.Service{
|
|
||||||
ServiceInfo: serviceinfo.ServiceInfo{
|
|
||||||
Config: defaults.DefaultConfig.Merge(config),
|
|
||||||
ServiceName: "inputservice3protocoltest",
|
|
||||||
APIVersion: "2014-01-01",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
service.Initialize()
|
|
||||||
|
|
||||||
// Handlers
|
|
||||||
service.Handlers.Sign.PushBack(v4.Sign)
|
|
||||||
service.Handlers.Build.PushBack(ec2query.Build)
|
|
||||||
service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
|
|
||||||
service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
|
|
||||||
service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
|
|
||||||
|
|
||||||
return &InputService3ProtocolTest{service}
|
|
||||||
}
|
|
||||||
|
|
||||||
// newRequest creates a new request for a InputService3ProtocolTest operation and runs any
|
|
||||||
// custom request initialization.
|
|
||||||
func (c *InputService3ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
|
|
||||||
req := c.NewRequest(op, params, data)
|
|
||||||
|
|
||||||
return req
|
|
||||||
}
|
|
||||||
|
|
||||||
const opInputService3TestCaseOperation1 = "OperationName"
|
|
||||||
|
|
||||||
// InputService3TestCaseOperation1Request generates a request for the InputService3TestCaseOperation1 operation.
|
|
||||||
func (c *InputService3ProtocolTest) InputService3TestCaseOperation1Request(input *InputService3TestShapeInputService3TestCaseOperation1Input) (req *request.Request, output *InputService3TestShapeInputService3TestCaseOperation1Output) {
|
|
||||||
op := &request.Operation{
|
|
||||||
Name: opInputService3TestCaseOperation1,
|
|
||||||
}
|
|
||||||
|
|
||||||
if input == nil {
|
|
||||||
input = &InputService3TestShapeInputService3TestCaseOperation1Input{}
|
|
||||||
}
|
|
||||||
|
|
||||||
req = c.newRequest(op, input, output)
|
|
||||||
output = &InputService3TestShapeInputService3TestCaseOperation1Output{}
|
|
||||||
req.Data = output
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *InputService3ProtocolTest) InputService3TestCaseOperation1(input *InputService3TestShapeInputService3TestCaseOperation1Input) (*InputService3TestShapeInputService3TestCaseOperation1Output, error) {
|
|
||||||
req, out := c.InputService3TestCaseOperation1Request(input)
|
|
||||||
err := req.Send()
|
|
||||||
return out, err
|
|
||||||
}
|
|
||||||
|
|
||||||
type InputService3TestShapeInputService3TestCaseOperation1Input struct {
|
|
||||||
StructArg *InputService3TestShapeStructType `locationName:"Struct" type:"structure"`
|
|
||||||
|
|
||||||
metadataInputService3TestShapeInputService3TestCaseOperation1Input `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataInputService3TestShapeInputService3TestCaseOperation1Input struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type InputService3TestShapeInputService3TestCaseOperation1Output struct {
|
|
||||||
metadataInputService3TestShapeInputService3TestCaseOperation1Output `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataInputService3TestShapeInputService3TestCaseOperation1Output struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type InputService3TestShapeStructType struct {
|
|
||||||
ScalarArg *string `locationName:"Scalar" type:"string"`
|
|
||||||
|
|
||||||
metadataInputService3TestShapeStructType `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataInputService3TestShapeStructType struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type InputService4ProtocolTest struct {
|
|
||||||
*service.Service
|
|
||||||
}
|
|
||||||
|
|
||||||
// New returns a new InputService4ProtocolTest client.
|
|
||||||
func NewInputService4ProtocolTest(config *aws.Config) *InputService4ProtocolTest {
|
|
||||||
service := &service.Service{
|
|
||||||
ServiceInfo: serviceinfo.ServiceInfo{
|
|
||||||
Config: defaults.DefaultConfig.Merge(config),
|
|
||||||
ServiceName: "inputservice4protocoltest",
|
|
||||||
APIVersion: "2014-01-01",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
service.Initialize()
|
|
||||||
|
|
||||||
// Handlers
|
|
||||||
service.Handlers.Sign.PushBack(v4.Sign)
|
|
||||||
service.Handlers.Build.PushBack(ec2query.Build)
|
|
||||||
service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
|
|
||||||
service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
|
|
||||||
service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
|
|
||||||
|
|
||||||
return &InputService4ProtocolTest{service}
|
|
||||||
}
|
|
||||||
|
|
||||||
// newRequest creates a new request for a InputService4ProtocolTest operation and runs any
|
|
||||||
// custom request initialization.
|
|
||||||
func (c *InputService4ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
|
|
||||||
req := c.NewRequest(op, params, data)
|
|
||||||
|
|
||||||
return req
|
|
||||||
}
|
|
||||||
|
|
||||||
const opInputService4TestCaseOperation1 = "OperationName"
|
|
||||||
|
|
||||||
// InputService4TestCaseOperation1Request generates a request for the InputService4TestCaseOperation1 operation.
|
|
||||||
func (c *InputService4ProtocolTest) InputService4TestCaseOperation1Request(input *InputService4TestShapeInputService4TestCaseOperation1Input) (req *request.Request, output *InputService4TestShapeInputService4TestCaseOperation1Output) {
|
|
||||||
op := &request.Operation{
|
|
||||||
Name: opInputService4TestCaseOperation1,
|
|
||||||
}
|
|
||||||
|
|
||||||
if input == nil {
|
|
||||||
input = &InputService4TestShapeInputService4TestCaseOperation1Input{}
|
|
||||||
}
|
|
||||||
|
|
||||||
req = c.newRequest(op, input, output)
|
|
||||||
output = &InputService4TestShapeInputService4TestCaseOperation1Output{}
|
|
||||||
req.Data = output
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *InputService4ProtocolTest) InputService4TestCaseOperation1(input *InputService4TestShapeInputService4TestCaseOperation1Input) (*InputService4TestShapeInputService4TestCaseOperation1Output, error) {
|
|
||||||
req, out := c.InputService4TestCaseOperation1Request(input)
|
|
||||||
err := req.Send()
|
|
||||||
return out, err
|
|
||||||
}
|
|
||||||
|
|
||||||
type InputService4TestShapeInputService4TestCaseOperation1Input struct {
|
|
||||||
ListArg []*string `type:"list"`
|
|
||||||
|
|
||||||
metadataInputService4TestShapeInputService4TestCaseOperation1Input `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataInputService4TestShapeInputService4TestCaseOperation1Input struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type InputService4TestShapeInputService4TestCaseOperation1Output struct {
|
|
||||||
metadataInputService4TestShapeInputService4TestCaseOperation1Output `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataInputService4TestShapeInputService4TestCaseOperation1Output struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type InputService5ProtocolTest struct {
|
|
||||||
*service.Service
|
|
||||||
}
|
|
||||||
|
|
||||||
// New returns a new InputService5ProtocolTest client.
|
|
||||||
func NewInputService5ProtocolTest(config *aws.Config) *InputService5ProtocolTest {
|
|
||||||
service := &service.Service{
|
|
||||||
ServiceInfo: serviceinfo.ServiceInfo{
|
|
||||||
Config: defaults.DefaultConfig.Merge(config),
|
|
||||||
ServiceName: "inputservice5protocoltest",
|
|
||||||
APIVersion: "2014-01-01",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
service.Initialize()
|
|
||||||
|
|
||||||
// Handlers
|
|
||||||
service.Handlers.Sign.PushBack(v4.Sign)
|
|
||||||
service.Handlers.Build.PushBack(ec2query.Build)
|
|
||||||
service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
|
|
||||||
service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
|
|
||||||
service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
|
|
||||||
|
|
||||||
return &InputService5ProtocolTest{service}
|
|
||||||
}
|
|
||||||
|
|
||||||
// newRequest creates a new request for a InputService5ProtocolTest operation and runs any
|
|
||||||
// custom request initialization.
|
|
||||||
func (c *InputService5ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
|
|
||||||
req := c.NewRequest(op, params, data)
|
|
||||||
|
|
||||||
return req
|
|
||||||
}
|
|
||||||
|
|
||||||
const opInputService5TestCaseOperation1 = "OperationName"
|
|
||||||
|
|
||||||
// InputService5TestCaseOperation1Request generates a request for the InputService5TestCaseOperation1 operation.
|
|
||||||
func (c *InputService5ProtocolTest) InputService5TestCaseOperation1Request(input *InputService5TestShapeInputService5TestCaseOperation1Input) (req *request.Request, output *InputService5TestShapeInputService5TestCaseOperation1Output) {
|
|
||||||
op := &request.Operation{
|
|
||||||
Name: opInputService5TestCaseOperation1,
|
|
||||||
}
|
|
||||||
|
|
||||||
if input == nil {
|
|
||||||
input = &InputService5TestShapeInputService5TestCaseOperation1Input{}
|
|
||||||
}
|
|
||||||
|
|
||||||
req = c.newRequest(op, input, output)
|
|
||||||
output = &InputService5TestShapeInputService5TestCaseOperation1Output{}
|
|
||||||
req.Data = output
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *InputService5ProtocolTest) InputService5TestCaseOperation1(input *InputService5TestShapeInputService5TestCaseOperation1Input) (*InputService5TestShapeInputService5TestCaseOperation1Output, error) {
|
|
||||||
req, out := c.InputService5TestCaseOperation1Request(input)
|
|
||||||
err := req.Send()
|
|
||||||
return out, err
|
|
||||||
}
|
|
||||||
|
|
||||||
type InputService5TestShapeInputService5TestCaseOperation1Input struct {
|
|
||||||
ListArg []*string `locationName:"ListMemberName" locationNameList:"item" type:"list"`
|
|
||||||
|
|
||||||
metadataInputService5TestShapeInputService5TestCaseOperation1Input `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataInputService5TestShapeInputService5TestCaseOperation1Input struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type InputService5TestShapeInputService5TestCaseOperation1Output struct {
|
|
||||||
metadataInputService5TestShapeInputService5TestCaseOperation1Output `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataInputService5TestShapeInputService5TestCaseOperation1Output struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type InputService6ProtocolTest struct {
|
|
||||||
*service.Service
|
|
||||||
}
|
|
||||||
|
|
||||||
// New returns a new InputService6ProtocolTest client.
|
|
||||||
func NewInputService6ProtocolTest(config *aws.Config) *InputService6ProtocolTest {
|
|
||||||
service := &service.Service{
|
|
||||||
ServiceInfo: serviceinfo.ServiceInfo{
|
|
||||||
Config: defaults.DefaultConfig.Merge(config),
|
|
||||||
ServiceName: "inputservice6protocoltest",
|
|
||||||
APIVersion: "2014-01-01",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
service.Initialize()
|
|
||||||
|
|
||||||
// Handlers
|
|
||||||
service.Handlers.Sign.PushBack(v4.Sign)
|
|
||||||
service.Handlers.Build.PushBack(ec2query.Build)
|
|
||||||
service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
|
|
||||||
service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
|
|
||||||
service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
|
|
||||||
|
|
||||||
return &InputService6ProtocolTest{service}
|
|
||||||
}
|
|
||||||
|
|
||||||
// newRequest creates a new request for a InputService6ProtocolTest operation and runs any
|
|
||||||
// custom request initialization.
|
|
||||||
func (c *InputService6ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
|
|
||||||
req := c.NewRequest(op, params, data)
|
|
||||||
|
|
||||||
return req
|
|
||||||
}
|
|
||||||
|
|
||||||
const opInputService6TestCaseOperation1 = "OperationName"
|
|
||||||
|
|
||||||
// InputService6TestCaseOperation1Request generates a request for the InputService6TestCaseOperation1 operation.
|
|
||||||
func (c *InputService6ProtocolTest) InputService6TestCaseOperation1Request(input *InputService6TestShapeInputService6TestCaseOperation1Input) (req *request.Request, output *InputService6TestShapeInputService6TestCaseOperation1Output) {
|
|
||||||
op := &request.Operation{
|
|
||||||
Name: opInputService6TestCaseOperation1,
|
|
||||||
}
|
|
||||||
|
|
||||||
if input == nil {
|
|
||||||
input = &InputService6TestShapeInputService6TestCaseOperation1Input{}
|
|
||||||
}
|
|
||||||
|
|
||||||
req = c.newRequest(op, input, output)
|
|
||||||
output = &InputService6TestShapeInputService6TestCaseOperation1Output{}
|
|
||||||
req.Data = output
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *InputService6ProtocolTest) InputService6TestCaseOperation1(input *InputService6TestShapeInputService6TestCaseOperation1Input) (*InputService6TestShapeInputService6TestCaseOperation1Output, error) {
|
|
||||||
req, out := c.InputService6TestCaseOperation1Request(input)
|
|
||||||
err := req.Send()
|
|
||||||
return out, err
|
|
||||||
}
|
|
||||||
|
|
||||||
type InputService6TestShapeInputService6TestCaseOperation1Input struct {
|
|
||||||
ListArg []*string `locationName:"ListMemberName" queryName:"ListQueryName" locationNameList:"item" type:"list"`
|
|
||||||
|
|
||||||
metadataInputService6TestShapeInputService6TestCaseOperation1Input `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataInputService6TestShapeInputService6TestCaseOperation1Input struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type InputService6TestShapeInputService6TestCaseOperation1Output struct {
|
|
||||||
metadataInputService6TestShapeInputService6TestCaseOperation1Output `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataInputService6TestShapeInputService6TestCaseOperation1Output struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type InputService7ProtocolTest struct {
|
|
||||||
*service.Service
|
|
||||||
}
|
|
||||||
|
|
||||||
// New returns a new InputService7ProtocolTest client.
|
|
||||||
func NewInputService7ProtocolTest(config *aws.Config) *InputService7ProtocolTest {
|
|
||||||
service := &service.Service{
|
|
||||||
ServiceInfo: serviceinfo.ServiceInfo{
|
|
||||||
Config: defaults.DefaultConfig.Merge(config),
|
|
||||||
ServiceName: "inputservice7protocoltest",
|
|
||||||
APIVersion: "2014-01-01",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
service.Initialize()
|
|
||||||
|
|
||||||
// Handlers
|
|
||||||
service.Handlers.Sign.PushBack(v4.Sign)
|
|
||||||
service.Handlers.Build.PushBack(ec2query.Build)
|
|
||||||
service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
|
|
||||||
service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
|
|
||||||
service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
|
|
||||||
|
|
||||||
return &InputService7ProtocolTest{service}
|
|
||||||
}
|
|
||||||
|
|
||||||
// newRequest creates a new request for a InputService7ProtocolTest operation and runs any
|
|
||||||
// custom request initialization.
|
|
||||||
func (c *InputService7ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
|
|
||||||
req := c.NewRequest(op, params, data)
|
|
||||||
|
|
||||||
return req
|
|
||||||
}
|
|
||||||
|
|
||||||
const opInputService7TestCaseOperation1 = "OperationName"
|
|
||||||
|
|
||||||
// InputService7TestCaseOperation1Request generates a request for the InputService7TestCaseOperation1 operation.
|
|
||||||
func (c *InputService7ProtocolTest) InputService7TestCaseOperation1Request(input *InputService7TestShapeInputService7TestCaseOperation1Input) (req *request.Request, output *InputService7TestShapeInputService7TestCaseOperation1Output) {
|
|
||||||
op := &request.Operation{
|
|
||||||
Name: opInputService7TestCaseOperation1,
|
|
||||||
}
|
|
||||||
|
|
||||||
if input == nil {
|
|
||||||
input = &InputService7TestShapeInputService7TestCaseOperation1Input{}
|
|
||||||
}
|
|
||||||
|
|
||||||
req = c.newRequest(op, input, output)
|
|
||||||
output = &InputService7TestShapeInputService7TestCaseOperation1Output{}
|
|
||||||
req.Data = output
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *InputService7ProtocolTest) InputService7TestCaseOperation1(input *InputService7TestShapeInputService7TestCaseOperation1Input) (*InputService7TestShapeInputService7TestCaseOperation1Output, error) {
|
|
||||||
req, out := c.InputService7TestCaseOperation1Request(input)
|
|
||||||
err := req.Send()
|
|
||||||
return out, err
|
|
||||||
}
|
|
||||||
|
|
||||||
type InputService7TestShapeInputService7TestCaseOperation1Input struct {
|
|
||||||
BlobArg []byte `type:"blob"`
|
|
||||||
|
|
||||||
metadataInputService7TestShapeInputService7TestCaseOperation1Input `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataInputService7TestShapeInputService7TestCaseOperation1Input struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type InputService7TestShapeInputService7TestCaseOperation1Output struct {
|
|
||||||
metadataInputService7TestShapeInputService7TestCaseOperation1Output `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataInputService7TestShapeInputService7TestCaseOperation1Output struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type InputService8ProtocolTest struct {
|
|
||||||
*service.Service
|
|
||||||
}
|
|
||||||
|
|
||||||
// New returns a new InputService8ProtocolTest client.
|
|
||||||
func NewInputService8ProtocolTest(config *aws.Config) *InputService8ProtocolTest {
|
|
||||||
service := &service.Service{
|
|
||||||
ServiceInfo: serviceinfo.ServiceInfo{
|
|
||||||
Config: defaults.DefaultConfig.Merge(config),
|
|
||||||
ServiceName: "inputservice8protocoltest",
|
|
||||||
APIVersion: "2014-01-01",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
service.Initialize()
|
|
||||||
|
|
||||||
// Handlers
|
|
||||||
service.Handlers.Sign.PushBack(v4.Sign)
|
|
||||||
service.Handlers.Build.PushBack(ec2query.Build)
|
|
||||||
service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
|
|
||||||
service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
|
|
||||||
service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
|
|
||||||
|
|
||||||
return &InputService8ProtocolTest{service}
|
|
||||||
}
|
|
||||||
|
|
||||||
// newRequest creates a new request for a InputService8ProtocolTest operation and runs any
|
|
||||||
// custom request initialization.
|
|
||||||
func (c *InputService8ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
|
|
||||||
req := c.NewRequest(op, params, data)
|
|
||||||
|
|
||||||
return req
|
|
||||||
}
|
|
||||||
|
|
||||||
const opInputService8TestCaseOperation1 = "OperationName"
|
|
||||||
|
|
||||||
// InputService8TestCaseOperation1Request generates a request for the InputService8TestCaseOperation1 operation.
|
|
||||||
func (c *InputService8ProtocolTest) InputService8TestCaseOperation1Request(input *InputService8TestShapeInputService8TestCaseOperation1Input) (req *request.Request, output *InputService8TestShapeInputService8TestCaseOperation1Output) {
|
|
||||||
op := &request.Operation{
|
|
||||||
Name: opInputService8TestCaseOperation1,
|
|
||||||
}
|
|
||||||
|
|
||||||
if input == nil {
|
|
||||||
input = &InputService8TestShapeInputService8TestCaseOperation1Input{}
|
|
||||||
}
|
|
||||||
|
|
||||||
req = c.newRequest(op, input, output)
|
|
||||||
output = &InputService8TestShapeInputService8TestCaseOperation1Output{}
|
|
||||||
req.Data = output
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *InputService8ProtocolTest) InputService8TestCaseOperation1(input *InputService8TestShapeInputService8TestCaseOperation1Input) (*InputService8TestShapeInputService8TestCaseOperation1Output, error) {
|
|
||||||
req, out := c.InputService8TestCaseOperation1Request(input)
|
|
||||||
err := req.Send()
|
|
||||||
return out, err
|
|
||||||
}
|
|
||||||
|
|
||||||
type InputService8TestShapeInputService8TestCaseOperation1Input struct {
|
|
||||||
TimeArg *time.Time `type:"timestamp" timestampFormat:"iso8601"`
|
|
||||||
|
|
||||||
metadataInputService8TestShapeInputService8TestCaseOperation1Input `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataInputService8TestShapeInputService8TestCaseOperation1Input struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type InputService8TestShapeInputService8TestCaseOperation1Output struct {
|
|
||||||
metadataInputService8TestShapeInputService8TestCaseOperation1Output `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataInputService8TestShapeInputService8TestCaseOperation1Output struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Tests begin here
|
|
||||||
//
|
|
||||||
|
|
||||||
func TestInputService1ProtocolTestScalarMembersCase1(t *testing.T) {
|
|
||||||
svc := NewInputService1ProtocolTest(nil)
|
|
||||||
svc.Endpoint = "https://test"
|
|
||||||
|
|
||||||
input := &InputService1TestShapeInputService1TestCaseOperation1Input{
|
|
||||||
Bar: aws.String("val2"),
|
|
||||||
Foo: aws.String("val1"),
|
|
||||||
}
|
|
||||||
req, _ := svc.InputService1TestCaseOperation1Request(input)
|
|
||||||
r := req.HTTPRequest
|
|
||||||
|
|
||||||
// build request
|
|
||||||
ec2query.Build(req)
|
|
||||||
assert.NoError(t, req.Error)
|
|
||||||
|
|
||||||
// assert body
|
|
||||||
assert.NotNil(t, r.Body)
|
|
||||||
body, _ := ioutil.ReadAll(r.Body)
|
|
||||||
assert.Equal(t, util.Trim(`Action=OperationName&Bar=val2&Foo=val1&Version=2014-01-01`), util.Trim(string(body)))
|
|
||||||
|
|
||||||
// assert URL
|
|
||||||
assert.Equal(t, "https://test/", r.URL.String())
|
|
||||||
|
|
||||||
// assert headers
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestInputService2ProtocolTestStructureWithLocationNameAndQueryNameAppliedToMembersCase1(t *testing.T) {
|
|
||||||
svc := NewInputService2ProtocolTest(nil)
|
|
||||||
svc.Endpoint = "https://test"
|
|
||||||
|
|
||||||
input := &InputService2TestShapeInputService2TestCaseOperation1Input{
|
|
||||||
Bar: aws.String("val2"),
|
|
||||||
Foo: aws.String("val1"),
|
|
||||||
Yuck: aws.String("val3"),
|
|
||||||
}
|
|
||||||
req, _ := svc.InputService2TestCaseOperation1Request(input)
|
|
||||||
r := req.HTTPRequest
|
|
||||||
|
|
||||||
// build request
|
|
||||||
ec2query.Build(req)
|
|
||||||
assert.NoError(t, req.Error)
|
|
||||||
|
|
||||||
// assert body
|
|
||||||
assert.NotNil(t, r.Body)
|
|
||||||
body, _ := ioutil.ReadAll(r.Body)
|
|
||||||
assert.Equal(t, util.Trim(`Action=OperationName&BarLocationName=val2&Foo=val1&Version=2014-01-01&yuckQueryName=val3`), util.Trim(string(body)))
|
|
||||||
|
|
||||||
// assert URL
|
|
||||||
assert.Equal(t, "https://test/", r.URL.String())
|
|
||||||
|
|
||||||
// assert headers
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestInputService3ProtocolTestNestedStructureMembersCase1(t *testing.T) {
|
|
||||||
svc := NewInputService3ProtocolTest(nil)
|
|
||||||
svc.Endpoint = "https://test"
|
|
||||||
|
|
||||||
input := &InputService3TestShapeInputService3TestCaseOperation1Input{
|
|
||||||
StructArg: &InputService3TestShapeStructType{
|
|
||||||
ScalarArg: aws.String("foo"),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
req, _ := svc.InputService3TestCaseOperation1Request(input)
|
|
||||||
r := req.HTTPRequest
|
|
||||||
|
|
||||||
// build request
|
|
||||||
ec2query.Build(req)
|
|
||||||
assert.NoError(t, req.Error)
|
|
||||||
|
|
||||||
// assert body
|
|
||||||
assert.NotNil(t, r.Body)
|
|
||||||
body, _ := ioutil.ReadAll(r.Body)
|
|
||||||
assert.Equal(t, util.Trim(`Action=OperationName&Struct.Scalar=foo&Version=2014-01-01`), util.Trim(string(body)))
|
|
||||||
|
|
||||||
// assert URL
|
|
||||||
assert.Equal(t, "https://test/", r.URL.String())
|
|
||||||
|
|
||||||
// assert headers
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestInputService4ProtocolTestListTypesCase1(t *testing.T) {
|
|
||||||
svc := NewInputService4ProtocolTest(nil)
|
|
||||||
svc.Endpoint = "https://test"
|
|
||||||
|
|
||||||
input := &InputService4TestShapeInputService4TestCaseOperation1Input{
|
|
||||||
ListArg: []*string{
|
|
||||||
aws.String("foo"),
|
|
||||||
aws.String("bar"),
|
|
||||||
aws.String("baz"),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
req, _ := svc.InputService4TestCaseOperation1Request(input)
|
|
||||||
r := req.HTTPRequest
|
|
||||||
|
|
||||||
// build request
|
|
||||||
ec2query.Build(req)
|
|
||||||
assert.NoError(t, req.Error)
|
|
||||||
|
|
||||||
// assert body
|
|
||||||
assert.NotNil(t, r.Body)
|
|
||||||
body, _ := ioutil.ReadAll(r.Body)
|
|
||||||
assert.Equal(t, util.Trim(`Action=OperationName&ListArg.1=foo&ListArg.2=bar&ListArg.3=baz&Version=2014-01-01`), util.Trim(string(body)))
|
|
||||||
|
|
||||||
// assert URL
|
|
||||||
assert.Equal(t, "https://test/", r.URL.String())
|
|
||||||
|
|
||||||
// assert headers
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestInputService5ProtocolTestListWithLocationNameAppliedToMemberCase1(t *testing.T) {
|
|
||||||
svc := NewInputService5ProtocolTest(nil)
|
|
||||||
svc.Endpoint = "https://test"
|
|
||||||
|
|
||||||
input := &InputService5TestShapeInputService5TestCaseOperation1Input{
|
|
||||||
ListArg: []*string{
|
|
||||||
aws.String("a"),
|
|
||||||
aws.String("b"),
|
|
||||||
aws.String("c"),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
req, _ := svc.InputService5TestCaseOperation1Request(input)
|
|
||||||
r := req.HTTPRequest
|
|
||||||
|
|
||||||
// build request
|
|
||||||
ec2query.Build(req)
|
|
||||||
assert.NoError(t, req.Error)
|
|
||||||
|
|
||||||
// assert body
|
|
||||||
assert.NotNil(t, r.Body)
|
|
||||||
body, _ := ioutil.ReadAll(r.Body)
|
|
||||||
assert.Equal(t, util.Trim(`Action=OperationName&ListMemberName.1=a&ListMemberName.2=b&ListMemberName.3=c&Version=2014-01-01`), util.Trim(string(body)))
|
|
||||||
|
|
||||||
// assert URL
|
|
||||||
assert.Equal(t, "https://test/", r.URL.String())
|
|
||||||
|
|
||||||
// assert headers
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestInputService6ProtocolTestListWithLocationNameAndQueryNameCase1(t *testing.T) {
|
|
||||||
svc := NewInputService6ProtocolTest(nil)
|
|
||||||
svc.Endpoint = "https://test"
|
|
||||||
|
|
||||||
input := &InputService6TestShapeInputService6TestCaseOperation1Input{
|
|
||||||
ListArg: []*string{
|
|
||||||
aws.String("a"),
|
|
||||||
aws.String("b"),
|
|
||||||
aws.String("c"),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
req, _ := svc.InputService6TestCaseOperation1Request(input)
|
|
||||||
r := req.HTTPRequest
|
|
||||||
|
|
||||||
// build request
|
|
||||||
ec2query.Build(req)
|
|
||||||
assert.NoError(t, req.Error)
|
|
||||||
|
|
||||||
// assert body
|
|
||||||
assert.NotNil(t, r.Body)
|
|
||||||
body, _ := ioutil.ReadAll(r.Body)
|
|
||||||
assert.Equal(t, util.Trim(`Action=OperationName&ListQueryName.1=a&ListQueryName.2=b&ListQueryName.3=c&Version=2014-01-01`), util.Trim(string(body)))
|
|
||||||
|
|
||||||
// assert URL
|
|
||||||
assert.Equal(t, "https://test/", r.URL.String())
|
|
||||||
|
|
||||||
// assert headers
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestInputService7ProtocolTestBase64EncodedBlobsCase1(t *testing.T) {
|
|
||||||
svc := NewInputService7ProtocolTest(nil)
|
|
||||||
svc.Endpoint = "https://test"
|
|
||||||
|
|
||||||
input := &InputService7TestShapeInputService7TestCaseOperation1Input{
|
|
||||||
BlobArg: []byte("foo"),
|
|
||||||
}
|
|
||||||
req, _ := svc.InputService7TestCaseOperation1Request(input)
|
|
||||||
r := req.HTTPRequest
|
|
||||||
|
|
||||||
// build request
|
|
||||||
ec2query.Build(req)
|
|
||||||
assert.NoError(t, req.Error)
|
|
||||||
|
|
||||||
// assert body
|
|
||||||
assert.NotNil(t, r.Body)
|
|
||||||
body, _ := ioutil.ReadAll(r.Body)
|
|
||||||
assert.Equal(t, util.Trim(`Action=OperationName&BlobArg=Zm9v&Version=2014-01-01`), util.Trim(string(body)))
|
|
||||||
|
|
||||||
// assert URL
|
|
||||||
assert.Equal(t, "https://test/", r.URL.String())
|
|
||||||
|
|
||||||
// assert headers
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestInputService8ProtocolTestTimestampValuesCase1(t *testing.T) {
|
|
||||||
svc := NewInputService8ProtocolTest(nil)
|
|
||||||
svc.Endpoint = "https://test"
|
|
||||||
|
|
||||||
input := &InputService8TestShapeInputService8TestCaseOperation1Input{
|
|
||||||
TimeArg: aws.Time(time.Unix(1422172800, 0)),
|
|
||||||
}
|
|
||||||
req, _ := svc.InputService8TestCaseOperation1Request(input)
|
|
||||||
r := req.HTTPRequest
|
|
||||||
|
|
||||||
// build request
|
|
||||||
ec2query.Build(req)
|
|
||||||
assert.NoError(t, req.Error)
|
|
||||||
|
|
||||||
// assert body
|
|
||||||
assert.NotNil(t, r.Body)
|
|
||||||
body, _ := ioutil.ReadAll(r.Body)
|
|
||||||
assert.Equal(t, util.Trim(`Action=OperationName&TimeArg=2015-01-25T08%3A00%3A00Z&Version=2014-01-01`), util.Trim(string(body)))
|
|
||||||
|
|
||||||
// assert URL
|
|
||||||
assert.Equal(t, "https://test/", r.URL.String())
|
|
||||||
|
|
||||||
// assert headers
|
|
||||||
|
|
||||||
}
|
|
||||||
836
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/ec2query/unmarshal_test.go
generated
vendored
836
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/ec2query/unmarshal_test.go
generated
vendored
@@ -1,836 +0,0 @@
|
|||||||
package ec2query_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"encoding/json"
|
|
||||||
"encoding/xml"
|
|
||||||
"io"
|
|
||||||
"io/ioutil"
|
|
||||||
"net/http"
|
|
||||||
"net/url"
|
|
||||||
"testing"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/aws"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/defaults"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/request"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/service"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/service/serviceinfo"
|
|
||||||
"github.com/aws/aws-sdk-go/internal/protocol/ec2query"
|
|
||||||
"github.com/aws/aws-sdk-go/internal/protocol/xml/xmlutil"
|
|
||||||
"github.com/aws/aws-sdk-go/internal/signer/v4"
|
|
||||||
"github.com/aws/aws-sdk-go/internal/util"
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
)
|
|
||||||
|
|
||||||
var _ bytes.Buffer // always import bytes
|
|
||||||
var _ http.Request
|
|
||||||
var _ json.Marshaler
|
|
||||||
var _ time.Time
|
|
||||||
var _ xmlutil.XMLNode
|
|
||||||
var _ xml.Attr
|
|
||||||
var _ = ioutil.Discard
|
|
||||||
var _ = util.Trim("")
|
|
||||||
var _ = url.Values{}
|
|
||||||
var _ = io.EOF
|
|
||||||
|
|
||||||
type OutputService1ProtocolTest struct {
|
|
||||||
*service.Service
|
|
||||||
}
|
|
||||||
|
|
||||||
// New returns a new OutputService1ProtocolTest client.
|
|
||||||
func NewOutputService1ProtocolTest(config *aws.Config) *OutputService1ProtocolTest {
|
|
||||||
service := &service.Service{
|
|
||||||
ServiceInfo: serviceinfo.ServiceInfo{
|
|
||||||
Config: defaults.DefaultConfig.Merge(config),
|
|
||||||
ServiceName: "outputservice1protocoltest",
|
|
||||||
APIVersion: "",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
service.Initialize()
|
|
||||||
|
|
||||||
// Handlers
|
|
||||||
service.Handlers.Sign.PushBack(v4.Sign)
|
|
||||||
service.Handlers.Build.PushBack(ec2query.Build)
|
|
||||||
service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
|
|
||||||
service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
|
|
||||||
service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
|
|
||||||
|
|
||||||
return &OutputService1ProtocolTest{service}
|
|
||||||
}
|
|
||||||
|
|
||||||
// newRequest creates a new request for a OutputService1ProtocolTest operation and runs any
|
|
||||||
// custom request initialization.
|
|
||||||
func (c *OutputService1ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
|
|
||||||
req := c.NewRequest(op, params, data)
|
|
||||||
|
|
||||||
return req
|
|
||||||
}
|
|
||||||
|
|
||||||
const opOutputService1TestCaseOperation1 = "OperationName"
|
|
||||||
|
|
||||||
// OutputService1TestCaseOperation1Request generates a request for the OutputService1TestCaseOperation1 operation.
|
|
||||||
func (c *OutputService1ProtocolTest) OutputService1TestCaseOperation1Request(input *OutputService1TestShapeOutputService1TestCaseOperation1Input) (req *request.Request, output *OutputService1TestShapeOutputService1TestCaseOperation1Output) {
|
|
||||||
op := &request.Operation{
|
|
||||||
Name: opOutputService1TestCaseOperation1,
|
|
||||||
}
|
|
||||||
|
|
||||||
if input == nil {
|
|
||||||
input = &OutputService1TestShapeOutputService1TestCaseOperation1Input{}
|
|
||||||
}
|
|
||||||
|
|
||||||
req = c.newRequest(op, input, output)
|
|
||||||
output = &OutputService1TestShapeOutputService1TestCaseOperation1Output{}
|
|
||||||
req.Data = output
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *OutputService1ProtocolTest) OutputService1TestCaseOperation1(input *OutputService1TestShapeOutputService1TestCaseOperation1Input) (*OutputService1TestShapeOutputService1TestCaseOperation1Output, error) {
|
|
||||||
req, out := c.OutputService1TestCaseOperation1Request(input)
|
|
||||||
err := req.Send()
|
|
||||||
return out, err
|
|
||||||
}
|
|
||||||
|
|
||||||
type OutputService1TestShapeOutputService1TestCaseOperation1Input struct {
|
|
||||||
metadataOutputService1TestShapeOutputService1TestCaseOperation1Input `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataOutputService1TestShapeOutputService1TestCaseOperation1Input struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type OutputService1TestShapeOutputService1TestCaseOperation1Output struct {
|
|
||||||
Char *string `type:"character"`
|
|
||||||
|
|
||||||
Double *float64 `type:"double"`
|
|
||||||
|
|
||||||
FalseBool *bool `type:"boolean"`
|
|
||||||
|
|
||||||
Float *float64 `type:"float"`
|
|
||||||
|
|
||||||
Long *int64 `type:"long"`
|
|
||||||
|
|
||||||
Num *int64 `locationName:"FooNum" type:"integer"`
|
|
||||||
|
|
||||||
Str *string `type:"string"`
|
|
||||||
|
|
||||||
TrueBool *bool `type:"boolean"`
|
|
||||||
|
|
||||||
metadataOutputService1TestShapeOutputService1TestCaseOperation1Output `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataOutputService1TestShapeOutputService1TestCaseOperation1Output struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type OutputService2ProtocolTest struct {
|
|
||||||
*service.Service
|
|
||||||
}
|
|
||||||
|
|
||||||
// New returns a new OutputService2ProtocolTest client.
|
|
||||||
func NewOutputService2ProtocolTest(config *aws.Config) *OutputService2ProtocolTest {
|
|
||||||
service := &service.Service{
|
|
||||||
ServiceInfo: serviceinfo.ServiceInfo{
|
|
||||||
Config: defaults.DefaultConfig.Merge(config),
|
|
||||||
ServiceName: "outputservice2protocoltest",
|
|
||||||
APIVersion: "",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
service.Initialize()
|
|
||||||
|
|
||||||
// Handlers
|
|
||||||
service.Handlers.Sign.PushBack(v4.Sign)
|
|
||||||
service.Handlers.Build.PushBack(ec2query.Build)
|
|
||||||
service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
|
|
||||||
service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
|
|
||||||
service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
|
|
||||||
|
|
||||||
return &OutputService2ProtocolTest{service}
|
|
||||||
}
|
|
||||||
|
|
||||||
// newRequest creates a new request for a OutputService2ProtocolTest operation and runs any
|
|
||||||
// custom request initialization.
|
|
||||||
func (c *OutputService2ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
|
|
||||||
req := c.NewRequest(op, params, data)
|
|
||||||
|
|
||||||
return req
|
|
||||||
}
|
|
||||||
|
|
||||||
const opOutputService2TestCaseOperation1 = "OperationName"
|
|
||||||
|
|
||||||
// OutputService2TestCaseOperation1Request generates a request for the OutputService2TestCaseOperation1 operation.
|
|
||||||
func (c *OutputService2ProtocolTest) OutputService2TestCaseOperation1Request(input *OutputService2TestShapeOutputService2TestCaseOperation1Input) (req *request.Request, output *OutputService2TestShapeOutputService2TestCaseOperation1Output) {
|
|
||||||
op := &request.Operation{
|
|
||||||
Name: opOutputService2TestCaseOperation1,
|
|
||||||
}
|
|
||||||
|
|
||||||
if input == nil {
|
|
||||||
input = &OutputService2TestShapeOutputService2TestCaseOperation1Input{}
|
|
||||||
}
|
|
||||||
|
|
||||||
req = c.newRequest(op, input, output)
|
|
||||||
output = &OutputService2TestShapeOutputService2TestCaseOperation1Output{}
|
|
||||||
req.Data = output
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *OutputService2ProtocolTest) OutputService2TestCaseOperation1(input *OutputService2TestShapeOutputService2TestCaseOperation1Input) (*OutputService2TestShapeOutputService2TestCaseOperation1Output, error) {
|
|
||||||
req, out := c.OutputService2TestCaseOperation1Request(input)
|
|
||||||
err := req.Send()
|
|
||||||
return out, err
|
|
||||||
}
|
|
||||||
|
|
||||||
type OutputService2TestShapeOutputService2TestCaseOperation1Input struct {
|
|
||||||
metadataOutputService2TestShapeOutputService2TestCaseOperation1Input `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataOutputService2TestShapeOutputService2TestCaseOperation1Input struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type OutputService2TestShapeOutputService2TestCaseOperation1Output struct {
|
|
||||||
Blob []byte `type:"blob"`
|
|
||||||
|
|
||||||
metadataOutputService2TestShapeOutputService2TestCaseOperation1Output `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataOutputService2TestShapeOutputService2TestCaseOperation1Output struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type OutputService3ProtocolTest struct {
|
|
||||||
*service.Service
|
|
||||||
}
|
|
||||||
|
|
||||||
// New returns a new OutputService3ProtocolTest client.
|
|
||||||
func NewOutputService3ProtocolTest(config *aws.Config) *OutputService3ProtocolTest {
|
|
||||||
service := &service.Service{
|
|
||||||
ServiceInfo: serviceinfo.ServiceInfo{
|
|
||||||
Config: defaults.DefaultConfig.Merge(config),
|
|
||||||
ServiceName: "outputservice3protocoltest",
|
|
||||||
APIVersion: "",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
service.Initialize()
|
|
||||||
|
|
||||||
// Handlers
|
|
||||||
service.Handlers.Sign.PushBack(v4.Sign)
|
|
||||||
service.Handlers.Build.PushBack(ec2query.Build)
|
|
||||||
service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
|
|
||||||
service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
|
|
||||||
service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
|
|
||||||
|
|
||||||
return &OutputService3ProtocolTest{service}
|
|
||||||
}
|
|
||||||
|
|
||||||
// newRequest creates a new request for a OutputService3ProtocolTest operation and runs any
|
|
||||||
// custom request initialization.
|
|
||||||
func (c *OutputService3ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
|
|
||||||
req := c.NewRequest(op, params, data)
|
|
||||||
|
|
||||||
return req
|
|
||||||
}
|
|
||||||
|
|
||||||
const opOutputService3TestCaseOperation1 = "OperationName"
|
|
||||||
|
|
||||||
// OutputService3TestCaseOperation1Request generates a request for the OutputService3TestCaseOperation1 operation.
|
|
||||||
func (c *OutputService3ProtocolTest) OutputService3TestCaseOperation1Request(input *OutputService3TestShapeOutputService3TestCaseOperation1Input) (req *request.Request, output *OutputService3TestShapeOutputService3TestCaseOperation1Output) {
|
|
||||||
op := &request.Operation{
|
|
||||||
Name: opOutputService3TestCaseOperation1,
|
|
||||||
}
|
|
||||||
|
|
||||||
if input == nil {
|
|
||||||
input = &OutputService3TestShapeOutputService3TestCaseOperation1Input{}
|
|
||||||
}
|
|
||||||
|
|
||||||
req = c.newRequest(op, input, output)
|
|
||||||
output = &OutputService3TestShapeOutputService3TestCaseOperation1Output{}
|
|
||||||
req.Data = output
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *OutputService3ProtocolTest) OutputService3TestCaseOperation1(input *OutputService3TestShapeOutputService3TestCaseOperation1Input) (*OutputService3TestShapeOutputService3TestCaseOperation1Output, error) {
|
|
||||||
req, out := c.OutputService3TestCaseOperation1Request(input)
|
|
||||||
err := req.Send()
|
|
||||||
return out, err
|
|
||||||
}
|
|
||||||
|
|
||||||
type OutputService3TestShapeOutputService3TestCaseOperation1Input struct {
|
|
||||||
metadataOutputService3TestShapeOutputService3TestCaseOperation1Input `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataOutputService3TestShapeOutputService3TestCaseOperation1Input struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type OutputService3TestShapeOutputService3TestCaseOperation1Output struct {
|
|
||||||
ListMember []*string `type:"list"`
|
|
||||||
|
|
||||||
metadataOutputService3TestShapeOutputService3TestCaseOperation1Output `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataOutputService3TestShapeOutputService3TestCaseOperation1Output struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type OutputService4ProtocolTest struct {
|
|
||||||
*service.Service
|
|
||||||
}
|
|
||||||
|
|
||||||
// New returns a new OutputService4ProtocolTest client.
|
|
||||||
func NewOutputService4ProtocolTest(config *aws.Config) *OutputService4ProtocolTest {
|
|
||||||
service := &service.Service{
|
|
||||||
ServiceInfo: serviceinfo.ServiceInfo{
|
|
||||||
Config: defaults.DefaultConfig.Merge(config),
|
|
||||||
ServiceName: "outputservice4protocoltest",
|
|
||||||
APIVersion: "",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
service.Initialize()
|
|
||||||
|
|
||||||
// Handlers
|
|
||||||
service.Handlers.Sign.PushBack(v4.Sign)
|
|
||||||
service.Handlers.Build.PushBack(ec2query.Build)
|
|
||||||
service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
|
|
||||||
service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
|
|
||||||
service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
|
|
||||||
|
|
||||||
return &OutputService4ProtocolTest{service}
|
|
||||||
}
|
|
||||||
|
|
||||||
// newRequest creates a new request for a OutputService4ProtocolTest operation and runs any
|
|
||||||
// custom request initialization.
|
|
||||||
func (c *OutputService4ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
|
|
||||||
req := c.NewRequest(op, params, data)
|
|
||||||
|
|
||||||
return req
|
|
||||||
}
|
|
||||||
|
|
||||||
const opOutputService4TestCaseOperation1 = "OperationName"
|
|
||||||
|
|
||||||
// OutputService4TestCaseOperation1Request generates a request for the OutputService4TestCaseOperation1 operation.
|
|
||||||
func (c *OutputService4ProtocolTest) OutputService4TestCaseOperation1Request(input *OutputService4TestShapeOutputService4TestCaseOperation1Input) (req *request.Request, output *OutputService4TestShapeOutputService4TestCaseOperation1Output) {
|
|
||||||
op := &request.Operation{
|
|
||||||
Name: opOutputService4TestCaseOperation1,
|
|
||||||
}
|
|
||||||
|
|
||||||
if input == nil {
|
|
||||||
input = &OutputService4TestShapeOutputService4TestCaseOperation1Input{}
|
|
||||||
}
|
|
||||||
|
|
||||||
req = c.newRequest(op, input, output)
|
|
||||||
output = &OutputService4TestShapeOutputService4TestCaseOperation1Output{}
|
|
||||||
req.Data = output
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *OutputService4ProtocolTest) OutputService4TestCaseOperation1(input *OutputService4TestShapeOutputService4TestCaseOperation1Input) (*OutputService4TestShapeOutputService4TestCaseOperation1Output, error) {
|
|
||||||
req, out := c.OutputService4TestCaseOperation1Request(input)
|
|
||||||
err := req.Send()
|
|
||||||
return out, err
|
|
||||||
}
|
|
||||||
|
|
||||||
type OutputService4TestShapeOutputService4TestCaseOperation1Input struct {
|
|
||||||
metadataOutputService4TestShapeOutputService4TestCaseOperation1Input `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataOutputService4TestShapeOutputService4TestCaseOperation1Input struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type OutputService4TestShapeOutputService4TestCaseOperation1Output struct {
|
|
||||||
ListMember []*string `locationNameList:"item" type:"list"`
|
|
||||||
|
|
||||||
metadataOutputService4TestShapeOutputService4TestCaseOperation1Output `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataOutputService4TestShapeOutputService4TestCaseOperation1Output struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type OutputService5ProtocolTest struct {
|
|
||||||
*service.Service
|
|
||||||
}
|
|
||||||
|
|
||||||
// New returns a new OutputService5ProtocolTest client.
|
|
||||||
func NewOutputService5ProtocolTest(config *aws.Config) *OutputService5ProtocolTest {
|
|
||||||
service := &service.Service{
|
|
||||||
ServiceInfo: serviceinfo.ServiceInfo{
|
|
||||||
Config: defaults.DefaultConfig.Merge(config),
|
|
||||||
ServiceName: "outputservice5protocoltest",
|
|
||||||
APIVersion: "",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
service.Initialize()
|
|
||||||
|
|
||||||
// Handlers
|
|
||||||
service.Handlers.Sign.PushBack(v4.Sign)
|
|
||||||
service.Handlers.Build.PushBack(ec2query.Build)
|
|
||||||
service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
|
|
||||||
service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
|
|
||||||
service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
|
|
||||||
|
|
||||||
return &OutputService5ProtocolTest{service}
|
|
||||||
}
|
|
||||||
|
|
||||||
// newRequest creates a new request for a OutputService5ProtocolTest operation and runs any
|
|
||||||
// custom request initialization.
|
|
||||||
func (c *OutputService5ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
|
|
||||||
req := c.NewRequest(op, params, data)
|
|
||||||
|
|
||||||
return req
|
|
||||||
}
|
|
||||||
|
|
||||||
const opOutputService5TestCaseOperation1 = "OperationName"
|
|
||||||
|
|
||||||
// OutputService5TestCaseOperation1Request generates a request for the OutputService5TestCaseOperation1 operation.
|
|
||||||
func (c *OutputService5ProtocolTest) OutputService5TestCaseOperation1Request(input *OutputService5TestShapeOutputService5TestCaseOperation1Input) (req *request.Request, output *OutputService5TestShapeOutputService5TestCaseOperation1Output) {
|
|
||||||
op := &request.Operation{
|
|
||||||
Name: opOutputService5TestCaseOperation1,
|
|
||||||
}
|
|
||||||
|
|
||||||
if input == nil {
|
|
||||||
input = &OutputService5TestShapeOutputService5TestCaseOperation1Input{}
|
|
||||||
}
|
|
||||||
|
|
||||||
req = c.newRequest(op, input, output)
|
|
||||||
output = &OutputService5TestShapeOutputService5TestCaseOperation1Output{}
|
|
||||||
req.Data = output
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *OutputService5ProtocolTest) OutputService5TestCaseOperation1(input *OutputService5TestShapeOutputService5TestCaseOperation1Input) (*OutputService5TestShapeOutputService5TestCaseOperation1Output, error) {
|
|
||||||
req, out := c.OutputService5TestCaseOperation1Request(input)
|
|
||||||
err := req.Send()
|
|
||||||
return out, err
|
|
||||||
}
|
|
||||||
|
|
||||||
type OutputService5TestShapeOutputService5TestCaseOperation1Input struct {
|
|
||||||
metadataOutputService5TestShapeOutputService5TestCaseOperation1Input `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataOutputService5TestShapeOutputService5TestCaseOperation1Input struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type OutputService5TestShapeOutputService5TestCaseOperation1Output struct {
|
|
||||||
ListMember []*string `type:"list" flattened:"true"`
|
|
||||||
|
|
||||||
metadataOutputService5TestShapeOutputService5TestCaseOperation1Output `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataOutputService5TestShapeOutputService5TestCaseOperation1Output struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type OutputService6ProtocolTest struct {
|
|
||||||
*service.Service
|
|
||||||
}
|
|
||||||
|
|
||||||
// New returns a new OutputService6ProtocolTest client.
|
|
||||||
func NewOutputService6ProtocolTest(config *aws.Config) *OutputService6ProtocolTest {
|
|
||||||
service := &service.Service{
|
|
||||||
ServiceInfo: serviceinfo.ServiceInfo{
|
|
||||||
Config: defaults.DefaultConfig.Merge(config),
|
|
||||||
ServiceName: "outputservice6protocoltest",
|
|
||||||
APIVersion: "",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
service.Initialize()
|
|
||||||
|
|
||||||
// Handlers
|
|
||||||
service.Handlers.Sign.PushBack(v4.Sign)
|
|
||||||
service.Handlers.Build.PushBack(ec2query.Build)
|
|
||||||
service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
|
|
||||||
service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
|
|
||||||
service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
|
|
||||||
|
|
||||||
return &OutputService6ProtocolTest{service}
|
|
||||||
}
|
|
||||||
|
|
||||||
// newRequest creates a new request for a OutputService6ProtocolTest operation and runs any
|
|
||||||
// custom request initialization.
|
|
||||||
func (c *OutputService6ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
|
|
||||||
req := c.NewRequest(op, params, data)
|
|
||||||
|
|
||||||
return req
|
|
||||||
}
|
|
||||||
|
|
||||||
const opOutputService6TestCaseOperation1 = "OperationName"
|
|
||||||
|
|
||||||
// OutputService6TestCaseOperation1Request generates a request for the OutputService6TestCaseOperation1 operation.
|
|
||||||
func (c *OutputService6ProtocolTest) OutputService6TestCaseOperation1Request(input *OutputService6TestShapeOutputService6TestCaseOperation1Input) (req *request.Request, output *OutputService6TestShapeOutputService6TestCaseOperation1Output) {
|
|
||||||
op := &request.Operation{
|
|
||||||
Name: opOutputService6TestCaseOperation1,
|
|
||||||
}
|
|
||||||
|
|
||||||
if input == nil {
|
|
||||||
input = &OutputService6TestShapeOutputService6TestCaseOperation1Input{}
|
|
||||||
}
|
|
||||||
|
|
||||||
req = c.newRequest(op, input, output)
|
|
||||||
output = &OutputService6TestShapeOutputService6TestCaseOperation1Output{}
|
|
||||||
req.Data = output
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *OutputService6ProtocolTest) OutputService6TestCaseOperation1(input *OutputService6TestShapeOutputService6TestCaseOperation1Input) (*OutputService6TestShapeOutputService6TestCaseOperation1Output, error) {
|
|
||||||
req, out := c.OutputService6TestCaseOperation1Request(input)
|
|
||||||
err := req.Send()
|
|
||||||
return out, err
|
|
||||||
}
|
|
||||||
|
|
||||||
type OutputService6TestShapeOutputService6TestCaseOperation1Input struct {
|
|
||||||
metadataOutputService6TestShapeOutputService6TestCaseOperation1Input `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataOutputService6TestShapeOutputService6TestCaseOperation1Input struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type OutputService6TestShapeOutputService6TestCaseOperation1Output struct {
|
|
||||||
Map map[string]*OutputService6TestShapeStructureType `type:"map"`
|
|
||||||
|
|
||||||
metadataOutputService6TestShapeOutputService6TestCaseOperation1Output `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataOutputService6TestShapeOutputService6TestCaseOperation1Output struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type OutputService6TestShapeStructureType struct {
|
|
||||||
Foo *string `locationName:"foo" type:"string"`
|
|
||||||
|
|
||||||
metadataOutputService6TestShapeStructureType `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataOutputService6TestShapeStructureType struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type OutputService7ProtocolTest struct {
|
|
||||||
*service.Service
|
|
||||||
}
|
|
||||||
|
|
||||||
// New returns a new OutputService7ProtocolTest client.
|
|
||||||
func NewOutputService7ProtocolTest(config *aws.Config) *OutputService7ProtocolTest {
|
|
||||||
service := &service.Service{
|
|
||||||
ServiceInfo: serviceinfo.ServiceInfo{
|
|
||||||
Config: defaults.DefaultConfig.Merge(config),
|
|
||||||
ServiceName: "outputservice7protocoltest",
|
|
||||||
APIVersion: "",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
service.Initialize()
|
|
||||||
|
|
||||||
// Handlers
|
|
||||||
service.Handlers.Sign.PushBack(v4.Sign)
|
|
||||||
service.Handlers.Build.PushBack(ec2query.Build)
|
|
||||||
service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
|
|
||||||
service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
|
|
||||||
service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
|
|
||||||
|
|
||||||
return &OutputService7ProtocolTest{service}
|
|
||||||
}
|
|
||||||
|
|
||||||
// newRequest creates a new request for a OutputService7ProtocolTest operation and runs any
|
|
||||||
// custom request initialization.
|
|
||||||
func (c *OutputService7ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
|
|
||||||
req := c.NewRequest(op, params, data)
|
|
||||||
|
|
||||||
return req
|
|
||||||
}
|
|
||||||
|
|
||||||
const opOutputService7TestCaseOperation1 = "OperationName"
|
|
||||||
|
|
||||||
// OutputService7TestCaseOperation1Request generates a request for the OutputService7TestCaseOperation1 operation.
|
|
||||||
func (c *OutputService7ProtocolTest) OutputService7TestCaseOperation1Request(input *OutputService7TestShapeOutputService7TestCaseOperation1Input) (req *request.Request, output *OutputService7TestShapeOutputService7TestCaseOperation1Output) {
|
|
||||||
op := &request.Operation{
|
|
||||||
Name: opOutputService7TestCaseOperation1,
|
|
||||||
}
|
|
||||||
|
|
||||||
if input == nil {
|
|
||||||
input = &OutputService7TestShapeOutputService7TestCaseOperation1Input{}
|
|
||||||
}
|
|
||||||
|
|
||||||
req = c.newRequest(op, input, output)
|
|
||||||
output = &OutputService7TestShapeOutputService7TestCaseOperation1Output{}
|
|
||||||
req.Data = output
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *OutputService7ProtocolTest) OutputService7TestCaseOperation1(input *OutputService7TestShapeOutputService7TestCaseOperation1Input) (*OutputService7TestShapeOutputService7TestCaseOperation1Output, error) {
|
|
||||||
req, out := c.OutputService7TestCaseOperation1Request(input)
|
|
||||||
err := req.Send()
|
|
||||||
return out, err
|
|
||||||
}
|
|
||||||
|
|
||||||
type OutputService7TestShapeOutputService7TestCaseOperation1Input struct {
|
|
||||||
metadataOutputService7TestShapeOutputService7TestCaseOperation1Input `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataOutputService7TestShapeOutputService7TestCaseOperation1Input struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type OutputService7TestShapeOutputService7TestCaseOperation1Output struct {
|
|
||||||
Map map[string]*string `type:"map" flattened:"true"`
|
|
||||||
|
|
||||||
metadataOutputService7TestShapeOutputService7TestCaseOperation1Output `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataOutputService7TestShapeOutputService7TestCaseOperation1Output struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type OutputService8ProtocolTest struct {
|
|
||||||
*service.Service
|
|
||||||
}
|
|
||||||
|
|
||||||
// New returns a new OutputService8ProtocolTest client.
|
|
||||||
func NewOutputService8ProtocolTest(config *aws.Config) *OutputService8ProtocolTest {
|
|
||||||
service := &service.Service{
|
|
||||||
ServiceInfo: serviceinfo.ServiceInfo{
|
|
||||||
Config: defaults.DefaultConfig.Merge(config),
|
|
||||||
ServiceName: "outputservice8protocoltest",
|
|
||||||
APIVersion: "",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
service.Initialize()
|
|
||||||
|
|
||||||
// Handlers
|
|
||||||
service.Handlers.Sign.PushBack(v4.Sign)
|
|
||||||
service.Handlers.Build.PushBack(ec2query.Build)
|
|
||||||
service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
|
|
||||||
service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
|
|
||||||
service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
|
|
||||||
|
|
||||||
return &OutputService8ProtocolTest{service}
|
|
||||||
}
|
|
||||||
|
|
||||||
// newRequest creates a new request for a OutputService8ProtocolTest operation and runs any
|
|
||||||
// custom request initialization.
|
|
||||||
func (c *OutputService8ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
|
|
||||||
req := c.NewRequest(op, params, data)
|
|
||||||
|
|
||||||
return req
|
|
||||||
}
|
|
||||||
|
|
||||||
const opOutputService8TestCaseOperation1 = "OperationName"
|
|
||||||
|
|
||||||
// OutputService8TestCaseOperation1Request generates a request for the OutputService8TestCaseOperation1 operation.
|
|
||||||
func (c *OutputService8ProtocolTest) OutputService8TestCaseOperation1Request(input *OutputService8TestShapeOutputService8TestCaseOperation1Input) (req *request.Request, output *OutputService8TestShapeOutputService8TestCaseOperation1Output) {
|
|
||||||
op := &request.Operation{
|
|
||||||
Name: opOutputService8TestCaseOperation1,
|
|
||||||
}
|
|
||||||
|
|
||||||
if input == nil {
|
|
||||||
input = &OutputService8TestShapeOutputService8TestCaseOperation1Input{}
|
|
||||||
}
|
|
||||||
|
|
||||||
req = c.newRequest(op, input, output)
|
|
||||||
output = &OutputService8TestShapeOutputService8TestCaseOperation1Output{}
|
|
||||||
req.Data = output
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *OutputService8ProtocolTest) OutputService8TestCaseOperation1(input *OutputService8TestShapeOutputService8TestCaseOperation1Input) (*OutputService8TestShapeOutputService8TestCaseOperation1Output, error) {
|
|
||||||
req, out := c.OutputService8TestCaseOperation1Request(input)
|
|
||||||
err := req.Send()
|
|
||||||
return out, err
|
|
||||||
}
|
|
||||||
|
|
||||||
type OutputService8TestShapeOutputService8TestCaseOperation1Input struct {
|
|
||||||
metadataOutputService8TestShapeOutputService8TestCaseOperation1Input `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataOutputService8TestShapeOutputService8TestCaseOperation1Input struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type OutputService8TestShapeOutputService8TestCaseOperation1Output struct {
|
|
||||||
Map map[string]*string `locationNameKey:"foo" locationNameValue:"bar" type:"map" flattened:"true"`
|
|
||||||
|
|
||||||
metadataOutputService8TestShapeOutputService8TestCaseOperation1Output `json:"-" xml:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type metadataOutputService8TestShapeOutputService8TestCaseOperation1Output struct {
|
|
||||||
SDKShapeTraits bool `type:"structure"`
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Tests begin here
|
|
||||||
//
|
|
||||||
|
|
||||||
func TestOutputService1ProtocolTestScalarMembersCase1(t *testing.T) {
|
|
||||||
svc := NewOutputService1ProtocolTest(nil)
|
|
||||||
|
|
||||||
buf := bytes.NewReader([]byte("<OperationNameResponse><Str>myname</Str><FooNum>123</FooNum><FalseBool>false</FalseBool><TrueBool>true</TrueBool><Float>1.2</Float><Double>1.3</Double><Long>200</Long><Char>a</Char><RequestId>request-id</RequestId></OperationNameResponse>"))
|
|
||||||
req, out := svc.OutputService1TestCaseOperation1Request(nil)
|
|
||||||
req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
|
|
||||||
|
|
||||||
// set headers
|
|
||||||
|
|
||||||
// unmarshal response
|
|
||||||
ec2query.UnmarshalMeta(req)
|
|
||||||
ec2query.Unmarshal(req)
|
|
||||||
assert.NoError(t, req.Error)
|
|
||||||
|
|
||||||
// assert response
|
|
||||||
assert.NotNil(t, out) // ensure out variable is used
|
|
||||||
assert.Equal(t, "a", *out.Char)
|
|
||||||
assert.Equal(t, 1.3, *out.Double)
|
|
||||||
assert.Equal(t, false, *out.FalseBool)
|
|
||||||
assert.Equal(t, 1.2, *out.Float)
|
|
||||||
assert.Equal(t, int64(200), *out.Long)
|
|
||||||
assert.Equal(t, int64(123), *out.Num)
|
|
||||||
assert.Equal(t, "myname", *out.Str)
|
|
||||||
assert.Equal(t, true, *out.TrueBool)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestOutputService2ProtocolTestBlobCase1(t *testing.T) {
|
|
||||||
svc := NewOutputService2ProtocolTest(nil)
|
|
||||||
|
|
||||||
buf := bytes.NewReader([]byte("<OperationNameResponse><Blob>dmFsdWU=</Blob><RequestId>requestid</RequestId></OperationNameResponse>"))
|
|
||||||
req, out := svc.OutputService2TestCaseOperation1Request(nil)
|
|
||||||
req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
|
|
||||||
|
|
||||||
// set headers
|
|
||||||
|
|
||||||
// unmarshal response
|
|
||||||
ec2query.UnmarshalMeta(req)
|
|
||||||
ec2query.Unmarshal(req)
|
|
||||||
assert.NoError(t, req.Error)
|
|
||||||
|
|
||||||
// assert response
|
|
||||||
assert.NotNil(t, out) // ensure out variable is used
|
|
||||||
assert.Equal(t, "value", string(out.Blob))
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestOutputService3ProtocolTestListsCase1(t *testing.T) {
|
|
||||||
svc := NewOutputService3ProtocolTest(nil)
|
|
||||||
|
|
||||||
buf := bytes.NewReader([]byte("<OperationNameResponse><ListMember><member>abc</member><member>123</member></ListMember><RequestId>requestid</RequestId></OperationNameResponse>"))
|
|
||||||
req, out := svc.OutputService3TestCaseOperation1Request(nil)
|
|
||||||
req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
|
|
||||||
|
|
||||||
// set headers
|
|
||||||
|
|
||||||
// unmarshal response
|
|
||||||
ec2query.UnmarshalMeta(req)
|
|
||||||
ec2query.Unmarshal(req)
|
|
||||||
assert.NoError(t, req.Error)
|
|
||||||
|
|
||||||
// assert response
|
|
||||||
assert.NotNil(t, out) // ensure out variable is used
|
|
||||||
assert.Equal(t, "abc", *out.ListMember[0])
|
|
||||||
assert.Equal(t, "123", *out.ListMember[1])
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestOutputService4ProtocolTestListWithCustomMemberNameCase1(t *testing.T) {
|
|
||||||
svc := NewOutputService4ProtocolTest(nil)
|
|
||||||
|
|
||||||
buf := bytes.NewReader([]byte("<OperationNameResponse><ListMember><item>abc</item><item>123</item></ListMember><RequestId>requestid</RequestId></OperationNameResponse>"))
|
|
||||||
req, out := svc.OutputService4TestCaseOperation1Request(nil)
|
|
||||||
req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
|
|
||||||
|
|
||||||
// set headers
|
|
||||||
|
|
||||||
// unmarshal response
|
|
||||||
ec2query.UnmarshalMeta(req)
|
|
||||||
ec2query.Unmarshal(req)
|
|
||||||
assert.NoError(t, req.Error)
|
|
||||||
|
|
||||||
// assert response
|
|
||||||
assert.NotNil(t, out) // ensure out variable is used
|
|
||||||
assert.Equal(t, "abc", *out.ListMember[0])
|
|
||||||
assert.Equal(t, "123", *out.ListMember[1])
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestOutputService5ProtocolTestFlattenedListCase1(t *testing.T) {
|
|
||||||
svc := NewOutputService5ProtocolTest(nil)
|
|
||||||
|
|
||||||
buf := bytes.NewReader([]byte("<OperationNameResponse><ListMember>abc</ListMember><ListMember>123</ListMember><RequestId>requestid</RequestId></OperationNameResponse>"))
|
|
||||||
req, out := svc.OutputService5TestCaseOperation1Request(nil)
|
|
||||||
req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
|
|
||||||
|
|
||||||
// set headers
|
|
||||||
|
|
||||||
// unmarshal response
|
|
||||||
ec2query.UnmarshalMeta(req)
|
|
||||||
ec2query.Unmarshal(req)
|
|
||||||
assert.NoError(t, req.Error)
|
|
||||||
|
|
||||||
// assert response
|
|
||||||
assert.NotNil(t, out) // ensure out variable is used
|
|
||||||
assert.Equal(t, "abc", *out.ListMember[0])
|
|
||||||
assert.Equal(t, "123", *out.ListMember[1])
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestOutputService6ProtocolTestNormalMapCase1(t *testing.T) {
|
|
||||||
svc := NewOutputService6ProtocolTest(nil)
|
|
||||||
|
|
||||||
buf := bytes.NewReader([]byte("<OperationNameResponse><Map><entry><key>qux</key><value><foo>bar</foo></value></entry><entry><key>baz</key><value><foo>bam</foo></value></entry></Map><RequestId>requestid</RequestId></OperationNameResponse>"))
|
|
||||||
req, out := svc.OutputService6TestCaseOperation1Request(nil)
|
|
||||||
req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
|
|
||||||
|
|
||||||
// set headers
|
|
||||||
|
|
||||||
// unmarshal response
|
|
||||||
ec2query.UnmarshalMeta(req)
|
|
||||||
ec2query.Unmarshal(req)
|
|
||||||
assert.NoError(t, req.Error)
|
|
||||||
|
|
||||||
// assert response
|
|
||||||
assert.NotNil(t, out) // ensure out variable is used
|
|
||||||
assert.Equal(t, "bam", *out.Map["baz"].Foo)
|
|
||||||
assert.Equal(t, "bar", *out.Map["qux"].Foo)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestOutputService7ProtocolTestFlattenedMapCase1(t *testing.T) {
|
|
||||||
svc := NewOutputService7ProtocolTest(nil)
|
|
||||||
|
|
||||||
buf := bytes.NewReader([]byte("<OperationNameResponse><Map><key>qux</key><value>bar</value></Map><Map><key>baz</key><value>bam</value></Map><RequestId>requestid</RequestId></OperationNameResponse>"))
|
|
||||||
req, out := svc.OutputService7TestCaseOperation1Request(nil)
|
|
||||||
req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
|
|
||||||
|
|
||||||
// set headers
|
|
||||||
|
|
||||||
// unmarshal response
|
|
||||||
ec2query.UnmarshalMeta(req)
|
|
||||||
ec2query.Unmarshal(req)
|
|
||||||
assert.NoError(t, req.Error)
|
|
||||||
|
|
||||||
// assert response
|
|
||||||
assert.NotNil(t, out) // ensure out variable is used
|
|
||||||
assert.Equal(t, "bam", *out.Map["baz"])
|
|
||||||
assert.Equal(t, "bar", *out.Map["qux"])
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestOutputService8ProtocolTestNamedMapCase1(t *testing.T) {
|
|
||||||
svc := NewOutputService8ProtocolTest(nil)
|
|
||||||
|
|
||||||
buf := bytes.NewReader([]byte("<OperationNameResponse><Map><foo>qux</foo><bar>bar</bar></Map><Map><foo>baz</foo><bar>bam</bar></Map><RequestId>requestid</RequestId></OperationNameResponse>"))
|
|
||||||
req, out := svc.OutputService8TestCaseOperation1Request(nil)
|
|
||||||
req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
|
|
||||||
|
|
||||||
// set headers
|
|
||||||
|
|
||||||
// unmarshal response
|
|
||||||
ec2query.UnmarshalMeta(req)
|
|
||||||
ec2query.Unmarshal(req)
|
|
||||||
assert.NoError(t, req.Error)
|
|
||||||
|
|
||||||
// assert response
|
|
||||||
assert.NotNil(t, out) // ensure out variable is used
|
|
||||||
assert.Equal(t, "bam", *out.Map["baz"])
|
|
||||||
assert.Equal(t, "bar", *out.Map["qux"])
|
|
||||||
|
|
||||||
}
|
|
||||||
1333
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/query/build_test.go
generated
vendored
1333
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/query/build_test.go
generated
vendored
File diff suppressed because it is too large
Load Diff
1450
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/query/unmarshal_test.go
generated
vendored
1450
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/query/unmarshal_test.go
generated
vendored
File diff suppressed because it is too large
Load Diff
43
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/signer/v4/functional_test.go
generated
vendored
43
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/signer/v4/functional_test.go
generated
vendored
@@ -1,43 +0,0 @@
|
|||||||
package v4_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"net/url"
|
|
||||||
"testing"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/aws"
|
|
||||||
"github.com/aws/aws-sdk-go/internal/test/unit"
|
|
||||||
"github.com/aws/aws-sdk-go/service/s3"
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
)
|
|
||||||
|
|
||||||
var _ = unit.Imported
|
|
||||||
|
|
||||||
func TestPresignHandler(t *testing.T) {
|
|
||||||
svc := s3.New(nil)
|
|
||||||
req, _ := svc.PutObjectRequest(&s3.PutObjectInput{
|
|
||||||
Bucket: aws.String("bucket"),
|
|
||||||
Key: aws.String("key"),
|
|
||||||
ContentDisposition: aws.String("a+b c$d"),
|
|
||||||
ACL: aws.String("public-read"),
|
|
||||||
})
|
|
||||||
req.Time = time.Unix(0, 0)
|
|
||||||
urlstr, err := req.Presign(5 * time.Minute)
|
|
||||||
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
expectedDate := "19700101T000000Z"
|
|
||||||
expectedHeaders := "host;x-amz-acl"
|
|
||||||
expectedSig := "7edcb4e3a1bf12f4989018d75acbe3a7f03df24bd6f3112602d59fc551f0e4e2"
|
|
||||||
expectedCred := "AKID/19700101/mock-region/s3/aws4_request"
|
|
||||||
|
|
||||||
u, _ := url.Parse(urlstr)
|
|
||||||
urlQ := u.Query()
|
|
||||||
assert.Equal(t, expectedSig, urlQ.Get("X-Amz-Signature"))
|
|
||||||
assert.Equal(t, expectedCred, urlQ.Get("X-Amz-Credential"))
|
|
||||||
assert.Equal(t, expectedHeaders, urlQ.Get("X-Amz-SignedHeaders"))
|
|
||||||
assert.Equal(t, expectedDate, urlQ.Get("X-Amz-Date"))
|
|
||||||
assert.Equal(t, "300", urlQ.Get("X-Amz-Expires"))
|
|
||||||
|
|
||||||
assert.NotContains(t, urlstr, "+") // + encoded as %20
|
|
||||||
}
|
|
||||||
247
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/signer/v4/v4_test.go
generated
vendored
247
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/signer/v4/v4_test.go
generated
vendored
@@ -1,247 +0,0 @@
|
|||||||
package v4
|
|
||||||
|
|
||||||
import (
|
|
||||||
"net/http"
|
|
||||||
"strings"
|
|
||||||
"testing"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/aws"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/credentials"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/request"
|
|
||||||
"github.com/aws/aws-sdk-go/aws/service"
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
)
|
|
||||||
|
|
||||||
func buildSigner(serviceName string, region string, signTime time.Time, expireTime time.Duration, body string) signer {
|
|
||||||
endpoint := "https://" + serviceName + "." + region + ".amazonaws.com"
|
|
||||||
reader := strings.NewReader(body)
|
|
||||||
req, _ := http.NewRequest("POST", endpoint, reader)
|
|
||||||
req.URL.Opaque = "//example.org/bucket/key-._~,!@#$%^&*()"
|
|
||||||
req.Header.Add("X-Amz-Target", "prefix.Operation")
|
|
||||||
req.Header.Add("Content-Type", "application/x-amz-json-1.0")
|
|
||||||
req.Header.Add("Content-Length", string(len(body)))
|
|
||||||
req.Header.Add("X-Amz-Meta-Other-Header", "some-value=!@#$%^&* (+)")
|
|
||||||
|
|
||||||
return signer{
|
|
||||||
Request: req,
|
|
||||||
Time: signTime,
|
|
||||||
ExpireTime: expireTime,
|
|
||||||
Query: req.URL.Query(),
|
|
||||||
Body: reader,
|
|
||||||
ServiceName: serviceName,
|
|
||||||
Region: region,
|
|
||||||
Credentials: credentials.NewStaticCredentials("AKID", "SECRET", "SESSION"),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func removeWS(text string) string {
|
|
||||||
text = strings.Replace(text, " ", "", -1)
|
|
||||||
text = strings.Replace(text, "\n", "", -1)
|
|
||||||
text = strings.Replace(text, "\t", "", -1)
|
|
||||||
return text
|
|
||||||
}
|
|
||||||
|
|
||||||
func assertEqual(t *testing.T, expected, given string) {
|
|
||||||
if removeWS(expected) != removeWS(given) {
|
|
||||||
t.Errorf("\nExpected: %s\nGiven: %s", expected, given)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestPresignRequest(t *testing.T) {
|
|
||||||
signer := buildSigner("dynamodb", "us-east-1", time.Unix(0, 0), 300*time.Second, "{}")
|
|
||||||
signer.sign()
|
|
||||||
|
|
||||||
expectedDate := "19700101T000000Z"
|
|
||||||
expectedHeaders := "host;x-amz-meta-other-header;x-amz-target"
|
|
||||||
expectedSig := "5eeedebf6f995145ce56daa02902d10485246d3defb34f97b973c1f40ab82d36"
|
|
||||||
expectedCred := "AKID/19700101/us-east-1/dynamodb/aws4_request"
|
|
||||||
|
|
||||||
q := signer.Request.URL.Query()
|
|
||||||
assert.Equal(t, expectedSig, q.Get("X-Amz-Signature"))
|
|
||||||
assert.Equal(t, expectedCred, q.Get("X-Amz-Credential"))
|
|
||||||
assert.Equal(t, expectedHeaders, q.Get("X-Amz-SignedHeaders"))
|
|
||||||
assert.Equal(t, expectedDate, q.Get("X-Amz-Date"))
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSignRequest(t *testing.T) {
|
|
||||||
signer := buildSigner("dynamodb", "us-east-1", time.Unix(0, 0), 0, "{}")
|
|
||||||
signer.sign()
|
|
||||||
|
|
||||||
expectedDate := "19700101T000000Z"
|
|
||||||
expectedSig := "AWS4-HMAC-SHA256 Credential=AKID/19700101/us-east-1/dynamodb/aws4_request, SignedHeaders=host;x-amz-date;x-amz-meta-other-header;x-amz-security-token;x-amz-target, Signature=69ada33fec48180dab153576e4dd80c4e04124f80dda3eccfed8a67c2b91ed5e"
|
|
||||||
|
|
||||||
q := signer.Request.Header
|
|
||||||
assert.Equal(t, expectedSig, q.Get("Authorization"))
|
|
||||||
assert.Equal(t, expectedDate, q.Get("X-Amz-Date"))
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSignEmptyBody(t *testing.T) {
|
|
||||||
signer := buildSigner("dynamodb", "us-east-1", time.Now(), 0, "")
|
|
||||||
signer.Body = nil
|
|
||||||
signer.sign()
|
|
||||||
hash := signer.Request.Header.Get("X-Amz-Content-Sha256")
|
|
||||||
assert.Equal(t, "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", hash)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSignBody(t *testing.T) {
|
|
||||||
signer := buildSigner("dynamodb", "us-east-1", time.Now(), 0, "hello")
|
|
||||||
signer.sign()
|
|
||||||
hash := signer.Request.Header.Get("X-Amz-Content-Sha256")
|
|
||||||
assert.Equal(t, "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824", hash)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSignSeekedBody(t *testing.T) {
|
|
||||||
signer := buildSigner("dynamodb", "us-east-1", time.Now(), 0, " hello")
|
|
||||||
signer.Body.Read(make([]byte, 3)) // consume first 3 bytes so body is now "hello"
|
|
||||||
signer.sign()
|
|
||||||
hash := signer.Request.Header.Get("X-Amz-Content-Sha256")
|
|
||||||
assert.Equal(t, "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824", hash)
|
|
||||||
|
|
||||||
start, _ := signer.Body.Seek(0, 1)
|
|
||||||
assert.Equal(t, int64(3), start)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestPresignEmptyBodyS3(t *testing.T) {
|
|
||||||
signer := buildSigner("s3", "us-east-1", time.Now(), 5*time.Minute, "hello")
|
|
||||||
signer.sign()
|
|
||||||
hash := signer.Request.Header.Get("X-Amz-Content-Sha256")
|
|
||||||
assert.Equal(t, "UNSIGNED-PAYLOAD", hash)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSignPrecomputedBodyChecksum(t *testing.T) {
|
|
||||||
signer := buildSigner("dynamodb", "us-east-1", time.Now(), 0, "hello")
|
|
||||||
signer.Request.Header.Set("X-Amz-Content-Sha256", "PRECOMPUTED")
|
|
||||||
signer.sign()
|
|
||||||
hash := signer.Request.Header.Get("X-Amz-Content-Sha256")
|
|
||||||
assert.Equal(t, "PRECOMPUTED", hash)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestAnonymousCredentials(t *testing.T) {
|
|
||||||
svc := service.New(&aws.Config{Credentials: credentials.AnonymousCredentials})
|
|
||||||
r := svc.NewRequest(
|
|
||||||
&request.Operation{
|
|
||||||
Name: "BatchGetItem",
|
|
||||||
HTTPMethod: "POST",
|
|
||||||
HTTPPath: "/",
|
|
||||||
},
|
|
||||||
nil,
|
|
||||||
nil,
|
|
||||||
)
|
|
||||||
Sign(r)
|
|
||||||
|
|
||||||
urlQ := r.HTTPRequest.URL.Query()
|
|
||||||
assert.Empty(t, urlQ.Get("X-Amz-Signature"))
|
|
||||||
assert.Empty(t, urlQ.Get("X-Amz-Credential"))
|
|
||||||
assert.Empty(t, urlQ.Get("X-Amz-SignedHeaders"))
|
|
||||||
assert.Empty(t, urlQ.Get("X-Amz-Date"))
|
|
||||||
|
|
||||||
hQ := r.HTTPRequest.Header
|
|
||||||
assert.Empty(t, hQ.Get("Authorization"))
|
|
||||||
assert.Empty(t, hQ.Get("X-Amz-Date"))
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestIgnoreResignRequestWithValidCreds(t *testing.T) {
|
|
||||||
svc := service.New(&aws.Config{
|
|
||||||
Credentials: credentials.NewStaticCredentials("AKID", "SECRET", "SESSION"),
|
|
||||||
Region: aws.String("us-west-2"),
|
|
||||||
})
|
|
||||||
r := svc.NewRequest(
|
|
||||||
&request.Operation{
|
|
||||||
Name: "BatchGetItem",
|
|
||||||
HTTPMethod: "POST",
|
|
||||||
HTTPPath: "/",
|
|
||||||
},
|
|
||||||
nil,
|
|
||||||
nil,
|
|
||||||
)
|
|
||||||
|
|
||||||
Sign(r)
|
|
||||||
sig := r.HTTPRequest.Header.Get("Authorization")
|
|
||||||
|
|
||||||
Sign(r)
|
|
||||||
assert.Equal(t, sig, r.HTTPRequest.Header.Get("Authorization"))
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestIgnorePreResignRequestWithValidCreds(t *testing.T) {
|
|
||||||
svc := service.New(&aws.Config{
|
|
||||||
Credentials: credentials.NewStaticCredentials("AKID", "SECRET", "SESSION"),
|
|
||||||
Region: aws.String("us-west-2"),
|
|
||||||
})
|
|
||||||
r := svc.NewRequest(
|
|
||||||
&request.Operation{
|
|
||||||
Name: "BatchGetItem",
|
|
||||||
HTTPMethod: "POST",
|
|
||||||
HTTPPath: "/",
|
|
||||||
},
|
|
||||||
nil,
|
|
||||||
nil,
|
|
||||||
)
|
|
||||||
r.ExpireTime = time.Minute * 10
|
|
||||||
|
|
||||||
Sign(r)
|
|
||||||
sig := r.HTTPRequest.Header.Get("X-Amz-Signature")
|
|
||||||
|
|
||||||
Sign(r)
|
|
||||||
assert.Equal(t, sig, r.HTTPRequest.Header.Get("X-Amz-Signature"))
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestResignRequestExpiredCreds(t *testing.T) {
|
|
||||||
creds := credentials.NewStaticCredentials("AKID", "SECRET", "SESSION")
|
|
||||||
svc := service.New(&aws.Config{Credentials: creds})
|
|
||||||
r := svc.NewRequest(
|
|
||||||
&request.Operation{
|
|
||||||
Name: "BatchGetItem",
|
|
||||||
HTTPMethod: "POST",
|
|
||||||
HTTPPath: "/",
|
|
||||||
},
|
|
||||||
nil,
|
|
||||||
nil,
|
|
||||||
)
|
|
||||||
Sign(r)
|
|
||||||
querySig := r.HTTPRequest.Header.Get("Authorization")
|
|
||||||
|
|
||||||
creds.Expire()
|
|
||||||
|
|
||||||
Sign(r)
|
|
||||||
assert.NotEqual(t, querySig, r.HTTPRequest.Header.Get("Authorization"))
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestPreResignRequestExpiredCreds(t *testing.T) {
|
|
||||||
provider := &credentials.StaticProvider{credentials.Value{"AKID", "SECRET", "SESSION"}}
|
|
||||||
creds := credentials.NewCredentials(provider)
|
|
||||||
svc := service.New(&aws.Config{Credentials: creds})
|
|
||||||
r := svc.NewRequest(
|
|
||||||
&request.Operation{
|
|
||||||
Name: "BatchGetItem",
|
|
||||||
HTTPMethod: "POST",
|
|
||||||
HTTPPath: "/",
|
|
||||||
},
|
|
||||||
nil,
|
|
||||||
nil,
|
|
||||||
)
|
|
||||||
r.ExpireTime = time.Minute * 10
|
|
||||||
|
|
||||||
Sign(r)
|
|
||||||
querySig := r.HTTPRequest.URL.Query().Get("X-Amz-Signature")
|
|
||||||
|
|
||||||
creds.Expire()
|
|
||||||
r.Time = time.Now().Add(time.Hour * 48)
|
|
||||||
|
|
||||||
Sign(r)
|
|
||||||
assert.NotEqual(t, querySig, r.HTTPRequest.URL.Query().Get("X-Amz-Signature"))
|
|
||||||
}
|
|
||||||
|
|
||||||
func BenchmarkPresignRequest(b *testing.B) {
|
|
||||||
signer := buildSigner("dynamodb", "us-east-1", time.Now(), 300*time.Second, "{}")
|
|
||||||
for i := 0; i < b.N; i++ {
|
|
||||||
signer.sign()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func BenchmarkSignRequest(b *testing.B) {
|
|
||||||
signer := buildSigner("dynamodb", "us-east-1", time.Now(), 0, "{}")
|
|
||||||
for i := 0; i < b.N; i++ {
|
|
||||||
signer.sign()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.
|
|
||||||
|
|
||||||
package autoscalingiface_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/service/autoscaling"
|
|
||||||
"github.com/aws/aws-sdk-go/service/autoscaling/autoscalingiface"
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestInterface(t *testing.T) {
|
|
||||||
assert.Implements(t, (*autoscalingiface.AutoScalingAPI)(nil), autoscaling.New(nil))
|
|
||||||
}
|
|
||||||
1179
Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/autoscaling/examples_test.go
generated
vendored
1179
Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/autoscaling/examples_test.go
generated
vendored
File diff suppressed because it is too large
Load Diff
36
Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/ec2/customizations_test.go
generated
vendored
36
Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/ec2/customizations_test.go
generated
vendored
@@ -1,36 +0,0 @@
|
|||||||
package ec2_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"io/ioutil"
|
|
||||||
"net/url"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/aws"
|
|
||||||
"github.com/aws/aws-sdk-go/internal/test/unit"
|
|
||||||
"github.com/aws/aws-sdk-go/service/ec2"
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
)
|
|
||||||
|
|
||||||
var _ = unit.Imported
|
|
||||||
|
|
||||||
func TestCopySnapshotPresignedURL(t *testing.T) {
|
|
||||||
svc := ec2.New(&aws.Config{Region: aws.String("us-west-2")})
|
|
||||||
|
|
||||||
assert.NotPanics(t, func() {
|
|
||||||
// Doesn't panic on nil input
|
|
||||||
req, _ := svc.CopySnapshotRequest(nil)
|
|
||||||
req.Sign()
|
|
||||||
})
|
|
||||||
|
|
||||||
req, _ := svc.CopySnapshotRequest(&ec2.CopySnapshotInput{
|
|
||||||
SourceRegion: aws.String("us-west-1"),
|
|
||||||
SourceSnapshotId: aws.String("snap-id"),
|
|
||||||
})
|
|
||||||
req.Sign()
|
|
||||||
|
|
||||||
b, _ := ioutil.ReadAll(req.HTTPRequest.Body)
|
|
||||||
q, _ := url.ParseQuery(string(b))
|
|
||||||
url, _ := url.QueryUnescape(q.Get("PresignedUrl"))
|
|
||||||
assert.Equal(t, "us-west-2", q.Get("DestinationRegion"))
|
|
||||||
assert.Regexp(t, `^https://ec2\.us-west-1\.amazon.+&DestinationRegion=us-west-2`, url)
|
|
||||||
}
|
|
||||||
15
Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/ec2/ec2iface/interface_test.go
generated
vendored
15
Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/ec2/ec2iface/interface_test.go
generated
vendored
@@ -1,15 +0,0 @@
|
|||||||
// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.
|
|
||||||
|
|
||||||
package ec2iface_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/service/ec2"
|
|
||||||
"github.com/aws/aws-sdk-go/service/ec2/ec2iface"
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestInterface(t *testing.T) {
|
|
||||||
assert.Implements(t, (*ec2iface.EC2API)(nil), ec2.New(nil))
|
|
||||||
}
|
|
||||||
5164
Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/ec2/examples_test.go
generated
vendored
5164
Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/ec2/examples_test.go
generated
vendored
File diff suppressed because it is too large
Load Diff
15
Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/elb/elbiface/interface_test.go
generated
vendored
15
Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/elb/elbiface/interface_test.go
generated
vendored
@@ -1,15 +0,0 @@
|
|||||||
// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.
|
|
||||||
|
|
||||||
package elbiface_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/service/elb"
|
|
||||||
"github.com/aws/aws-sdk-go/service/elb/elbiface"
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestInterface(t *testing.T) {
|
|
||||||
assert.Implements(t, (*elbiface.ELBAPI)(nil), elb.New(nil))
|
|
||||||
}
|
|
||||||
721
Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/elb/examples_test.go
generated
vendored
721
Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/elb/examples_test.go
generated
vendored
@@ -1,721 +0,0 @@
|
|||||||
// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.
|
|
||||||
|
|
||||||
package elb_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"fmt"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/aws"
|
|
||||||
"github.com/aws/aws-sdk-go/service/elb"
|
|
||||||
)
|
|
||||||
|
|
||||||
var _ time.Duration
|
|
||||||
var _ bytes.Buffer
|
|
||||||
|
|
||||||
func ExampleELB_AddTags() {
|
|
||||||
svc := elb.New(nil)
|
|
||||||
|
|
||||||
params := &elb.AddTagsInput{
|
|
||||||
LoadBalancerNames: []*string{ // Required
|
|
||||||
aws.String("AccessPointName"), // Required
|
|
||||||
// More values...
|
|
||||||
},
|
|
||||||
Tags: []*elb.Tag{ // Required
|
|
||||||
{ // Required
|
|
||||||
Key: aws.String("TagKey"), // Required
|
|
||||||
Value: aws.String("TagValue"),
|
|
||||||
},
|
|
||||||
// More values...
|
|
||||||
},
|
|
||||||
}
|
|
||||||
resp, err := svc.AddTags(params)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
// Print the error, cast err to awserr.Error to get the Code and
|
|
||||||
// Message from an error.
|
|
||||||
fmt.Println(err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pretty-print the response data.
|
|
||||||
fmt.Println(resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
func ExampleELB_ApplySecurityGroupsToLoadBalancer() {
|
|
||||||
svc := elb.New(nil)
|
|
||||||
|
|
||||||
params := &elb.ApplySecurityGroupsToLoadBalancerInput{
|
|
||||||
LoadBalancerName: aws.String("AccessPointName"), // Required
|
|
||||||
SecurityGroups: []*string{ // Required
|
|
||||||
aws.String("SecurityGroupId"), // Required
|
|
||||||
// More values...
|
|
||||||
},
|
|
||||||
}
|
|
||||||
resp, err := svc.ApplySecurityGroupsToLoadBalancer(params)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
// Print the error, cast err to awserr.Error to get the Code and
|
|
||||||
// Message from an error.
|
|
||||||
fmt.Println(err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pretty-print the response data.
|
|
||||||
fmt.Println(resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
func ExampleELB_AttachLoadBalancerToSubnets() {
|
|
||||||
svc := elb.New(nil)
|
|
||||||
|
|
||||||
params := &elb.AttachLoadBalancerToSubnetsInput{
|
|
||||||
LoadBalancerName: aws.String("AccessPointName"), // Required
|
|
||||||
Subnets: []*string{ // Required
|
|
||||||
aws.String("SubnetId"), // Required
|
|
||||||
// More values...
|
|
||||||
},
|
|
||||||
}
|
|
||||||
resp, err := svc.AttachLoadBalancerToSubnets(params)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
// Print the error, cast err to awserr.Error to get the Code and
|
|
||||||
// Message from an error.
|
|
||||||
fmt.Println(err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pretty-print the response data.
|
|
||||||
fmt.Println(resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
func ExampleELB_ConfigureHealthCheck() {
|
|
||||||
svc := elb.New(nil)
|
|
||||||
|
|
||||||
params := &elb.ConfigureHealthCheckInput{
|
|
||||||
HealthCheck: &elb.HealthCheck{ // Required
|
|
||||||
HealthyThreshold: aws.Int64(1), // Required
|
|
||||||
Interval: aws.Int64(1), // Required
|
|
||||||
Target: aws.String("HealthCheckTarget"), // Required
|
|
||||||
Timeout: aws.Int64(1), // Required
|
|
||||||
UnhealthyThreshold: aws.Int64(1), // Required
|
|
||||||
},
|
|
||||||
LoadBalancerName: aws.String("AccessPointName"), // Required
|
|
||||||
}
|
|
||||||
resp, err := svc.ConfigureHealthCheck(params)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
// Print the error, cast err to awserr.Error to get the Code and
|
|
||||||
// Message from an error.
|
|
||||||
fmt.Println(err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pretty-print the response data.
|
|
||||||
fmt.Println(resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
func ExampleELB_CreateAppCookieStickinessPolicy() {
|
|
||||||
svc := elb.New(nil)
|
|
||||||
|
|
||||||
params := &elb.CreateAppCookieStickinessPolicyInput{
|
|
||||||
CookieName: aws.String("CookieName"), // Required
|
|
||||||
LoadBalancerName: aws.String("AccessPointName"), // Required
|
|
||||||
PolicyName: aws.String("PolicyName"), // Required
|
|
||||||
}
|
|
||||||
resp, err := svc.CreateAppCookieStickinessPolicy(params)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
// Print the error, cast err to awserr.Error to get the Code and
|
|
||||||
// Message from an error.
|
|
||||||
fmt.Println(err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pretty-print the response data.
|
|
||||||
fmt.Println(resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
func ExampleELB_CreateLBCookieStickinessPolicy() {
|
|
||||||
svc := elb.New(nil)
|
|
||||||
|
|
||||||
params := &elb.CreateLBCookieStickinessPolicyInput{
|
|
||||||
LoadBalancerName: aws.String("AccessPointName"), // Required
|
|
||||||
PolicyName: aws.String("PolicyName"), // Required
|
|
||||||
CookieExpirationPeriod: aws.Int64(1),
|
|
||||||
}
|
|
||||||
resp, err := svc.CreateLBCookieStickinessPolicy(params)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
// Print the error, cast err to awserr.Error to get the Code and
|
|
||||||
// Message from an error.
|
|
||||||
fmt.Println(err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pretty-print the response data.
|
|
||||||
fmt.Println(resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
func ExampleELB_CreateLoadBalancer() {
|
|
||||||
svc := elb.New(nil)
|
|
||||||
|
|
||||||
params := &elb.CreateLoadBalancerInput{
|
|
||||||
Listeners: []*elb.Listener{ // Required
|
|
||||||
{ // Required
|
|
||||||
InstancePort: aws.Int64(1), // Required
|
|
||||||
LoadBalancerPort: aws.Int64(1), // Required
|
|
||||||
Protocol: aws.String("Protocol"), // Required
|
|
||||||
InstanceProtocol: aws.String("Protocol"),
|
|
||||||
SSLCertificateId: aws.String("SSLCertificateId"),
|
|
||||||
},
|
|
||||||
// More values...
|
|
||||||
},
|
|
||||||
LoadBalancerName: aws.String("AccessPointName"), // Required
|
|
||||||
AvailabilityZones: []*string{
|
|
||||||
aws.String("AvailabilityZone"), // Required
|
|
||||||
// More values...
|
|
||||||
},
|
|
||||||
Scheme: aws.String("LoadBalancerScheme"),
|
|
||||||
SecurityGroups: []*string{
|
|
||||||
aws.String("SecurityGroupId"), // Required
|
|
||||||
// More values...
|
|
||||||
},
|
|
||||||
Subnets: []*string{
|
|
||||||
aws.String("SubnetId"), // Required
|
|
||||||
// More values...
|
|
||||||
},
|
|
||||||
Tags: []*elb.Tag{
|
|
||||||
{ // Required
|
|
||||||
Key: aws.String("TagKey"), // Required
|
|
||||||
Value: aws.String("TagValue"),
|
|
||||||
},
|
|
||||||
// More values...
|
|
||||||
},
|
|
||||||
}
|
|
||||||
resp, err := svc.CreateLoadBalancer(params)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
// Print the error, cast err to awserr.Error to get the Code and
|
|
||||||
// Message from an error.
|
|
||||||
fmt.Println(err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pretty-print the response data.
|
|
||||||
fmt.Println(resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
func ExampleELB_CreateLoadBalancerListeners() {
|
|
||||||
svc := elb.New(nil)
|
|
||||||
|
|
||||||
params := &elb.CreateLoadBalancerListenersInput{
|
|
||||||
Listeners: []*elb.Listener{ // Required
|
|
||||||
{ // Required
|
|
||||||
InstancePort: aws.Int64(1), // Required
|
|
||||||
LoadBalancerPort: aws.Int64(1), // Required
|
|
||||||
Protocol: aws.String("Protocol"), // Required
|
|
||||||
InstanceProtocol: aws.String("Protocol"),
|
|
||||||
SSLCertificateId: aws.String("SSLCertificateId"),
|
|
||||||
},
|
|
||||||
// More values...
|
|
||||||
},
|
|
||||||
LoadBalancerName: aws.String("AccessPointName"), // Required
|
|
||||||
}
|
|
||||||
resp, err := svc.CreateLoadBalancerListeners(params)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
// Print the error, cast err to awserr.Error to get the Code and
|
|
||||||
// Message from an error.
|
|
||||||
fmt.Println(err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pretty-print the response data.
|
|
||||||
fmt.Println(resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
func ExampleELB_CreateLoadBalancerPolicy() {
|
|
||||||
svc := elb.New(nil)
|
|
||||||
|
|
||||||
params := &elb.CreateLoadBalancerPolicyInput{
|
|
||||||
LoadBalancerName: aws.String("AccessPointName"), // Required
|
|
||||||
PolicyName: aws.String("PolicyName"), // Required
|
|
||||||
PolicyTypeName: aws.String("PolicyTypeName"), // Required
|
|
||||||
PolicyAttributes: []*elb.PolicyAttribute{
|
|
||||||
{ // Required
|
|
||||||
AttributeName: aws.String("AttributeName"),
|
|
||||||
AttributeValue: aws.String("AttributeValue"),
|
|
||||||
},
|
|
||||||
// More values...
|
|
||||||
},
|
|
||||||
}
|
|
||||||
resp, err := svc.CreateLoadBalancerPolicy(params)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
// Print the error, cast err to awserr.Error to get the Code and
|
|
||||||
// Message from an error.
|
|
||||||
fmt.Println(err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pretty-print the response data.
|
|
||||||
fmt.Println(resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
func ExampleELB_DeleteLoadBalancer() {
|
|
||||||
svc := elb.New(nil)
|
|
||||||
|
|
||||||
params := &elb.DeleteLoadBalancerInput{
|
|
||||||
LoadBalancerName: aws.String("AccessPointName"), // Required
|
|
||||||
}
|
|
||||||
resp, err := svc.DeleteLoadBalancer(params)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
// Print the error, cast err to awserr.Error to get the Code and
|
|
||||||
// Message from an error.
|
|
||||||
fmt.Println(err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pretty-print the response data.
|
|
||||||
fmt.Println(resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
func ExampleELB_DeleteLoadBalancerListeners() {
|
|
||||||
svc := elb.New(nil)
|
|
||||||
|
|
||||||
params := &elb.DeleteLoadBalancerListenersInput{
|
|
||||||
LoadBalancerName: aws.String("AccessPointName"), // Required
|
|
||||||
LoadBalancerPorts: []*int64{ // Required
|
|
||||||
aws.Int64(1), // Required
|
|
||||||
// More values...
|
|
||||||
},
|
|
||||||
}
|
|
||||||
resp, err := svc.DeleteLoadBalancerListeners(params)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
// Print the error, cast err to awserr.Error to get the Code and
|
|
||||||
// Message from an error.
|
|
||||||
fmt.Println(err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pretty-print the response data.
|
|
||||||
fmt.Println(resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
func ExampleELB_DeleteLoadBalancerPolicy() {
|
|
||||||
svc := elb.New(nil)
|
|
||||||
|
|
||||||
params := &elb.DeleteLoadBalancerPolicyInput{
|
|
||||||
LoadBalancerName: aws.String("AccessPointName"), // Required
|
|
||||||
PolicyName: aws.String("PolicyName"), // Required
|
|
||||||
}
|
|
||||||
resp, err := svc.DeleteLoadBalancerPolicy(params)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
// Print the error, cast err to awserr.Error to get the Code and
|
|
||||||
// Message from an error.
|
|
||||||
fmt.Println(err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pretty-print the response data.
|
|
||||||
fmt.Println(resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
func ExampleELB_DeregisterInstancesFromLoadBalancer() {
|
|
||||||
svc := elb.New(nil)
|
|
||||||
|
|
||||||
params := &elb.DeregisterInstancesFromLoadBalancerInput{
|
|
||||||
Instances: []*elb.Instance{ // Required
|
|
||||||
{ // Required
|
|
||||||
InstanceId: aws.String("InstanceId"),
|
|
||||||
},
|
|
||||||
// More values...
|
|
||||||
},
|
|
||||||
LoadBalancerName: aws.String("AccessPointName"), // Required
|
|
||||||
}
|
|
||||||
resp, err := svc.DeregisterInstancesFromLoadBalancer(params)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
// Print the error, cast err to awserr.Error to get the Code and
|
|
||||||
// Message from an error.
|
|
||||||
fmt.Println(err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pretty-print the response data.
|
|
||||||
fmt.Println(resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
func ExampleELB_DescribeInstanceHealth() {
|
|
||||||
svc := elb.New(nil)
|
|
||||||
|
|
||||||
params := &elb.DescribeInstanceHealthInput{
|
|
||||||
LoadBalancerName: aws.String("AccessPointName"), // Required
|
|
||||||
Instances: []*elb.Instance{
|
|
||||||
{ // Required
|
|
||||||
InstanceId: aws.String("InstanceId"),
|
|
||||||
},
|
|
||||||
// More values...
|
|
||||||
},
|
|
||||||
}
|
|
||||||
resp, err := svc.DescribeInstanceHealth(params)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
// Print the error, cast err to awserr.Error to get the Code and
|
|
||||||
// Message from an error.
|
|
||||||
fmt.Println(err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pretty-print the response data.
|
|
||||||
fmt.Println(resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
func ExampleELB_DescribeLoadBalancerAttributes() {
|
|
||||||
svc := elb.New(nil)
|
|
||||||
|
|
||||||
params := &elb.DescribeLoadBalancerAttributesInput{
|
|
||||||
LoadBalancerName: aws.String("AccessPointName"), // Required
|
|
||||||
}
|
|
||||||
resp, err := svc.DescribeLoadBalancerAttributes(params)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
// Print the error, cast err to awserr.Error to get the Code and
|
|
||||||
// Message from an error.
|
|
||||||
fmt.Println(err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pretty-print the response data.
|
|
||||||
fmt.Println(resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
func ExampleELB_DescribeLoadBalancerPolicies() {
|
|
||||||
svc := elb.New(nil)
|
|
||||||
|
|
||||||
params := &elb.DescribeLoadBalancerPoliciesInput{
|
|
||||||
LoadBalancerName: aws.String("AccessPointName"),
|
|
||||||
PolicyNames: []*string{
|
|
||||||
aws.String("PolicyName"), // Required
|
|
||||||
// More values...
|
|
||||||
},
|
|
||||||
}
|
|
||||||
resp, err := svc.DescribeLoadBalancerPolicies(params)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
// Print the error, cast err to awserr.Error to get the Code and
|
|
||||||
// Message from an error.
|
|
||||||
fmt.Println(err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pretty-print the response data.
|
|
||||||
fmt.Println(resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
func ExampleELB_DescribeLoadBalancerPolicyTypes() {
|
|
||||||
svc := elb.New(nil)
|
|
||||||
|
|
||||||
params := &elb.DescribeLoadBalancerPolicyTypesInput{
|
|
||||||
PolicyTypeNames: []*string{
|
|
||||||
aws.String("PolicyTypeName"), // Required
|
|
||||||
// More values...
|
|
||||||
},
|
|
||||||
}
|
|
||||||
resp, err := svc.DescribeLoadBalancerPolicyTypes(params)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
// Print the error, cast err to awserr.Error to get the Code and
|
|
||||||
// Message from an error.
|
|
||||||
fmt.Println(err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pretty-print the response data.
|
|
||||||
fmt.Println(resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
func ExampleELB_DescribeLoadBalancers() {
|
|
||||||
svc := elb.New(nil)
|
|
||||||
|
|
||||||
params := &elb.DescribeLoadBalancersInput{
|
|
||||||
LoadBalancerNames: []*string{
|
|
||||||
aws.String("AccessPointName"), // Required
|
|
||||||
// More values...
|
|
||||||
},
|
|
||||||
Marker: aws.String("Marker"),
|
|
||||||
PageSize: aws.Int64(1),
|
|
||||||
}
|
|
||||||
resp, err := svc.DescribeLoadBalancers(params)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
// Print the error, cast err to awserr.Error to get the Code and
|
|
||||||
// Message from an error.
|
|
||||||
fmt.Println(err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pretty-print the response data.
|
|
||||||
fmt.Println(resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
func ExampleELB_DescribeTags() {
|
|
||||||
svc := elb.New(nil)
|
|
||||||
|
|
||||||
params := &elb.DescribeTagsInput{
|
|
||||||
LoadBalancerNames: []*string{ // Required
|
|
||||||
aws.String("AccessPointName"), // Required
|
|
||||||
// More values...
|
|
||||||
},
|
|
||||||
}
|
|
||||||
resp, err := svc.DescribeTags(params)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
// Print the error, cast err to awserr.Error to get the Code and
|
|
||||||
// Message from an error.
|
|
||||||
fmt.Println(err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pretty-print the response data.
|
|
||||||
fmt.Println(resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
func ExampleELB_DetachLoadBalancerFromSubnets() {
|
|
||||||
svc := elb.New(nil)
|
|
||||||
|
|
||||||
params := &elb.DetachLoadBalancerFromSubnetsInput{
|
|
||||||
LoadBalancerName: aws.String("AccessPointName"), // Required
|
|
||||||
Subnets: []*string{ // Required
|
|
||||||
aws.String("SubnetId"), // Required
|
|
||||||
// More values...
|
|
||||||
},
|
|
||||||
}
|
|
||||||
resp, err := svc.DetachLoadBalancerFromSubnets(params)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
// Print the error, cast err to awserr.Error to get the Code and
|
|
||||||
// Message from an error.
|
|
||||||
fmt.Println(err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pretty-print the response data.
|
|
||||||
fmt.Println(resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
func ExampleELB_DisableAvailabilityZonesForLoadBalancer() {
|
|
||||||
svc := elb.New(nil)
|
|
||||||
|
|
||||||
params := &elb.DisableAvailabilityZonesForLoadBalancerInput{
|
|
||||||
AvailabilityZones: []*string{ // Required
|
|
||||||
aws.String("AvailabilityZone"), // Required
|
|
||||||
// More values...
|
|
||||||
},
|
|
||||||
LoadBalancerName: aws.String("AccessPointName"), // Required
|
|
||||||
}
|
|
||||||
resp, err := svc.DisableAvailabilityZonesForLoadBalancer(params)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
// Print the error, cast err to awserr.Error to get the Code and
|
|
||||||
// Message from an error.
|
|
||||||
fmt.Println(err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pretty-print the response data.
|
|
||||||
fmt.Println(resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
func ExampleELB_EnableAvailabilityZonesForLoadBalancer() {
|
|
||||||
svc := elb.New(nil)
|
|
||||||
|
|
||||||
params := &elb.EnableAvailabilityZonesForLoadBalancerInput{
|
|
||||||
AvailabilityZones: []*string{ // Required
|
|
||||||
aws.String("AvailabilityZone"), // Required
|
|
||||||
// More values...
|
|
||||||
},
|
|
||||||
LoadBalancerName: aws.String("AccessPointName"), // Required
|
|
||||||
}
|
|
||||||
resp, err := svc.EnableAvailabilityZonesForLoadBalancer(params)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
// Print the error, cast err to awserr.Error to get the Code and
|
|
||||||
// Message from an error.
|
|
||||||
fmt.Println(err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pretty-print the response data.
|
|
||||||
fmt.Println(resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
func ExampleELB_ModifyLoadBalancerAttributes() {
|
|
||||||
svc := elb.New(nil)
|
|
||||||
|
|
||||||
params := &elb.ModifyLoadBalancerAttributesInput{
|
|
||||||
LoadBalancerAttributes: &elb.LoadBalancerAttributes{ // Required
|
|
||||||
AccessLog: &elb.AccessLog{
|
|
||||||
Enabled: aws.Bool(true), // Required
|
|
||||||
EmitInterval: aws.Int64(1),
|
|
||||||
S3BucketName: aws.String("S3BucketName"),
|
|
||||||
S3BucketPrefix: aws.String("AccessLogPrefix"),
|
|
||||||
},
|
|
||||||
AdditionalAttributes: []*elb.AdditionalAttribute{
|
|
||||||
{ // Required
|
|
||||||
Key: aws.String("StringVal"),
|
|
||||||
Value: aws.String("StringVal"),
|
|
||||||
},
|
|
||||||
// More values...
|
|
||||||
},
|
|
||||||
ConnectionDraining: &elb.ConnectionDraining{
|
|
||||||
Enabled: aws.Bool(true), // Required
|
|
||||||
Timeout: aws.Int64(1),
|
|
||||||
},
|
|
||||||
ConnectionSettings: &elb.ConnectionSettings{
|
|
||||||
IdleTimeout: aws.Int64(1), // Required
|
|
||||||
},
|
|
||||||
CrossZoneLoadBalancing: &elb.CrossZoneLoadBalancing{
|
|
||||||
Enabled: aws.Bool(true), // Required
|
|
||||||
},
|
|
||||||
},
|
|
||||||
LoadBalancerName: aws.String("AccessPointName"), // Required
|
|
||||||
}
|
|
||||||
resp, err := svc.ModifyLoadBalancerAttributes(params)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
// Print the error, cast err to awserr.Error to get the Code and
|
|
||||||
// Message from an error.
|
|
||||||
fmt.Println(err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pretty-print the response data.
|
|
||||||
fmt.Println(resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
func ExampleELB_RegisterInstancesWithLoadBalancer() {
|
|
||||||
svc := elb.New(nil)
|
|
||||||
|
|
||||||
params := &elb.RegisterInstancesWithLoadBalancerInput{
|
|
||||||
Instances: []*elb.Instance{ // Required
|
|
||||||
{ // Required
|
|
||||||
InstanceId: aws.String("InstanceId"),
|
|
||||||
},
|
|
||||||
// More values...
|
|
||||||
},
|
|
||||||
LoadBalancerName: aws.String("AccessPointName"), // Required
|
|
||||||
}
|
|
||||||
resp, err := svc.RegisterInstancesWithLoadBalancer(params)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
// Print the error, cast err to awserr.Error to get the Code and
|
|
||||||
// Message from an error.
|
|
||||||
fmt.Println(err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pretty-print the response data.
|
|
||||||
fmt.Println(resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
func ExampleELB_RemoveTags() {
|
|
||||||
svc := elb.New(nil)
|
|
||||||
|
|
||||||
params := &elb.RemoveTagsInput{
|
|
||||||
LoadBalancerNames: []*string{ // Required
|
|
||||||
aws.String("AccessPointName"), // Required
|
|
||||||
// More values...
|
|
||||||
},
|
|
||||||
Tags: []*elb.TagKeyOnly{ // Required
|
|
||||||
{ // Required
|
|
||||||
Key: aws.String("TagKey"),
|
|
||||||
},
|
|
||||||
// More values...
|
|
||||||
},
|
|
||||||
}
|
|
||||||
resp, err := svc.RemoveTags(params)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
// Print the error, cast err to awserr.Error to get the Code and
|
|
||||||
// Message from an error.
|
|
||||||
fmt.Println(err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pretty-print the response data.
|
|
||||||
fmt.Println(resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
func ExampleELB_SetLoadBalancerListenerSSLCertificate() {
|
|
||||||
svc := elb.New(nil)
|
|
||||||
|
|
||||||
params := &elb.SetLoadBalancerListenerSSLCertificateInput{
|
|
||||||
LoadBalancerName: aws.String("AccessPointName"), // Required
|
|
||||||
LoadBalancerPort: aws.Int64(1), // Required
|
|
||||||
SSLCertificateId: aws.String("SSLCertificateId"), // Required
|
|
||||||
}
|
|
||||||
resp, err := svc.SetLoadBalancerListenerSSLCertificate(params)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
// Print the error, cast err to awserr.Error to get the Code and
|
|
||||||
// Message from an error.
|
|
||||||
fmt.Println(err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pretty-print the response data.
|
|
||||||
fmt.Println(resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
func ExampleELB_SetLoadBalancerPoliciesForBackendServer() {
|
|
||||||
svc := elb.New(nil)
|
|
||||||
|
|
||||||
params := &elb.SetLoadBalancerPoliciesForBackendServerInput{
|
|
||||||
InstancePort: aws.Int64(1), // Required
|
|
||||||
LoadBalancerName: aws.String("AccessPointName"), // Required
|
|
||||||
PolicyNames: []*string{ // Required
|
|
||||||
aws.String("PolicyName"), // Required
|
|
||||||
// More values...
|
|
||||||
},
|
|
||||||
}
|
|
||||||
resp, err := svc.SetLoadBalancerPoliciesForBackendServer(params)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
// Print the error, cast err to awserr.Error to get the Code and
|
|
||||||
// Message from an error.
|
|
||||||
fmt.Println(err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pretty-print the response data.
|
|
||||||
fmt.Println(resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
func ExampleELB_SetLoadBalancerPoliciesOfListener() {
|
|
||||||
svc := elb.New(nil)
|
|
||||||
|
|
||||||
params := &elb.SetLoadBalancerPoliciesOfListenerInput{
|
|
||||||
LoadBalancerName: aws.String("AccessPointName"), // Required
|
|
||||||
LoadBalancerPort: aws.Int64(1), // Required
|
|
||||||
PolicyNames: []*string{ // Required
|
|
||||||
aws.String("PolicyName"), // Required
|
|
||||||
// More values...
|
|
||||||
},
|
|
||||||
}
|
|
||||||
resp, err := svc.SetLoadBalancerPoliciesOfListener(params)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
// Print the error, cast err to awserr.Error to get the Code and
|
|
||||||
// Message from an error.
|
|
||||||
fmt.Println(err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pretty-print the response data.
|
|
||||||
fmt.Println(resp)
|
|
||||||
}
|
|
||||||
63
Godeps/_workspace/src/github.com/beorn7/perks/quantile/bench_test.go
generated
vendored
63
Godeps/_workspace/src/github.com/beorn7/perks/quantile/bench_test.go
generated
vendored
@@ -1,63 +0,0 @@
|
|||||||
package quantile
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func BenchmarkInsertTargeted(b *testing.B) {
|
|
||||||
b.ReportAllocs()
|
|
||||||
|
|
||||||
s := NewTargeted(Targets)
|
|
||||||
b.ResetTimer()
|
|
||||||
for i := float64(0); i < float64(b.N); i++ {
|
|
||||||
s.Insert(i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func BenchmarkInsertTargetedSmallEpsilon(b *testing.B) {
|
|
||||||
s := NewTargeted(TargetsSmallEpsilon)
|
|
||||||
b.ResetTimer()
|
|
||||||
for i := float64(0); i < float64(b.N); i++ {
|
|
||||||
s.Insert(i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func BenchmarkInsertBiased(b *testing.B) {
|
|
||||||
s := NewLowBiased(0.01)
|
|
||||||
b.ResetTimer()
|
|
||||||
for i := float64(0); i < float64(b.N); i++ {
|
|
||||||
s.Insert(i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func BenchmarkInsertBiasedSmallEpsilon(b *testing.B) {
|
|
||||||
s := NewLowBiased(0.0001)
|
|
||||||
b.ResetTimer()
|
|
||||||
for i := float64(0); i < float64(b.N); i++ {
|
|
||||||
s.Insert(i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func BenchmarkQuery(b *testing.B) {
|
|
||||||
s := NewTargeted(Targets)
|
|
||||||
for i := float64(0); i < 1e6; i++ {
|
|
||||||
s.Insert(i)
|
|
||||||
}
|
|
||||||
b.ResetTimer()
|
|
||||||
n := float64(b.N)
|
|
||||||
for i := float64(0); i < n; i++ {
|
|
||||||
s.Query(i / n)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func BenchmarkQuerySmallEpsilon(b *testing.B) {
|
|
||||||
s := NewTargeted(TargetsSmallEpsilon)
|
|
||||||
for i := float64(0); i < 1e6; i++ {
|
|
||||||
s.Insert(i)
|
|
||||||
}
|
|
||||||
b.ResetTimer()
|
|
||||||
n := float64(b.N)
|
|
||||||
for i := float64(0); i < n; i++ {
|
|
||||||
s.Query(i / n)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
121
Godeps/_workspace/src/github.com/beorn7/perks/quantile/example_test.go
generated
vendored
121
Godeps/_workspace/src/github.com/beorn7/perks/quantile/example_test.go
generated
vendored
@@ -1,121 +0,0 @@
|
|||||||
// +build go1.1
|
|
||||||
|
|
||||||
package quantile_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bufio"
|
|
||||||
"fmt"
|
|
||||||
"log"
|
|
||||||
"os"
|
|
||||||
"strconv"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/beorn7/perks/quantile"
|
|
||||||
)
|
|
||||||
|
|
||||||
func Example_simple() {
|
|
||||||
ch := make(chan float64)
|
|
||||||
go sendFloats(ch)
|
|
||||||
|
|
||||||
// Compute the 50th, 90th, and 99th percentile.
|
|
||||||
q := quantile.NewTargeted(map[float64]float64{
|
|
||||||
0.50: 0.005,
|
|
||||||
0.90: 0.001,
|
|
||||||
0.99: 0.0001,
|
|
||||||
})
|
|
||||||
for v := range ch {
|
|
||||||
q.Insert(v)
|
|
||||||
}
|
|
||||||
|
|
||||||
fmt.Println("perc50:", q.Query(0.50))
|
|
||||||
fmt.Println("perc90:", q.Query(0.90))
|
|
||||||
fmt.Println("perc99:", q.Query(0.99))
|
|
||||||
fmt.Println("count:", q.Count())
|
|
||||||
// Output:
|
|
||||||
// perc50: 5
|
|
||||||
// perc90: 16
|
|
||||||
// perc99: 223
|
|
||||||
// count: 2388
|
|
||||||
}
|
|
||||||
|
|
||||||
func Example_mergeMultipleStreams() {
|
|
||||||
// Scenario:
|
|
||||||
// We have multiple database shards. On each shard, there is a process
|
|
||||||
// collecting query response times from the database logs and inserting
|
|
||||||
// them into a Stream (created via NewTargeted(0.90)), much like the
|
|
||||||
// Simple example. These processes expose a network interface for us to
|
|
||||||
// ask them to serialize and send us the results of their
|
|
||||||
// Stream.Samples so we may Merge and Query them.
|
|
||||||
//
|
|
||||||
// NOTES:
|
|
||||||
// * These sample sets are small, allowing us to get them
|
|
||||||
// across the network much faster than sending the entire list of data
|
|
||||||
// points.
|
|
||||||
//
|
|
||||||
// * For this to work correctly, we must supply the same quantiles
|
|
||||||
// a priori the process collecting the samples supplied to NewTargeted,
|
|
||||||
// even if we do not plan to query them all here.
|
|
||||||
ch := make(chan quantile.Samples)
|
|
||||||
getDBQuerySamples(ch)
|
|
||||||
q := quantile.NewTargeted(map[float64]float64{0.90: 0.001})
|
|
||||||
for samples := range ch {
|
|
||||||
q.Merge(samples)
|
|
||||||
}
|
|
||||||
fmt.Println("perc90:", q.Query(0.90))
|
|
||||||
}
|
|
||||||
|
|
||||||
func Example_window() {
|
|
||||||
// Scenario: We want the 90th, 95th, and 99th percentiles for each
|
|
||||||
// minute.
|
|
||||||
|
|
||||||
ch := make(chan float64)
|
|
||||||
go sendStreamValues(ch)
|
|
||||||
|
|
||||||
tick := time.NewTicker(1 * time.Minute)
|
|
||||||
q := quantile.NewTargeted(map[float64]float64{
|
|
||||||
0.90: 0.001,
|
|
||||||
0.95: 0.0005,
|
|
||||||
0.99: 0.0001,
|
|
||||||
})
|
|
||||||
for {
|
|
||||||
select {
|
|
||||||
case t := <-tick.C:
|
|
||||||
flushToDB(t, q.Samples())
|
|
||||||
q.Reset()
|
|
||||||
case v := <-ch:
|
|
||||||
q.Insert(v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func sendStreamValues(ch chan float64) {
|
|
||||||
// Use your imagination
|
|
||||||
}
|
|
||||||
|
|
||||||
func flushToDB(t time.Time, samples quantile.Samples) {
|
|
||||||
// Use your imagination
|
|
||||||
}
|
|
||||||
|
|
||||||
// This is a stub for the above example. In reality this would hit the remote
|
|
||||||
// servers via http or something like it.
|
|
||||||
func getDBQuerySamples(ch chan quantile.Samples) {}
|
|
||||||
|
|
||||||
func sendFloats(ch chan<- float64) {
|
|
||||||
f, err := os.Open("exampledata.txt")
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
sc := bufio.NewScanner(f)
|
|
||||||
for sc.Scan() {
|
|
||||||
b := sc.Bytes()
|
|
||||||
v, err := strconv.ParseFloat(string(b), 64)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
ch <- v
|
|
||||||
}
|
|
||||||
if sc.Err() != nil {
|
|
||||||
log.Fatal(sc.Err())
|
|
||||||
}
|
|
||||||
close(ch)
|
|
||||||
}
|
|
||||||
188
Godeps/_workspace/src/github.com/beorn7/perks/quantile/stream_test.go
generated
vendored
188
Godeps/_workspace/src/github.com/beorn7/perks/quantile/stream_test.go
generated
vendored
@@ -1,188 +0,0 @@
|
|||||||
package quantile
|
|
||||||
|
|
||||||
import (
|
|
||||||
"math"
|
|
||||||
"math/rand"
|
|
||||||
"sort"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
Targets = map[float64]float64{
|
|
||||||
0.01: 0.001,
|
|
||||||
0.10: 0.01,
|
|
||||||
0.50: 0.05,
|
|
||||||
0.90: 0.01,
|
|
||||||
0.99: 0.001,
|
|
||||||
}
|
|
||||||
TargetsSmallEpsilon = map[float64]float64{
|
|
||||||
0.01: 0.0001,
|
|
||||||
0.10: 0.001,
|
|
||||||
0.50: 0.005,
|
|
||||||
0.90: 0.001,
|
|
||||||
0.99: 0.0001,
|
|
||||||
}
|
|
||||||
LowQuantiles = []float64{0.01, 0.1, 0.5}
|
|
||||||
HighQuantiles = []float64{0.99, 0.9, 0.5}
|
|
||||||
)
|
|
||||||
|
|
||||||
const RelativeEpsilon = 0.01
|
|
||||||
|
|
||||||
func verifyPercsWithAbsoluteEpsilon(t *testing.T, a []float64, s *Stream) {
|
|
||||||
sort.Float64s(a)
|
|
||||||
for quantile, epsilon := range Targets {
|
|
||||||
n := float64(len(a))
|
|
||||||
k := int(quantile * n)
|
|
||||||
lower := int((quantile - epsilon) * n)
|
|
||||||
if lower < 1 {
|
|
||||||
lower = 1
|
|
||||||
}
|
|
||||||
upper := int(math.Ceil((quantile + epsilon) * n))
|
|
||||||
if upper > len(a) {
|
|
||||||
upper = len(a)
|
|
||||||
}
|
|
||||||
w, min, max := a[k-1], a[lower-1], a[upper-1]
|
|
||||||
if g := s.Query(quantile); g < min || g > max {
|
|
||||||
t.Errorf("q=%f: want %v [%f,%f], got %v", quantile, w, min, max, g)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func verifyLowPercsWithRelativeEpsilon(t *testing.T, a []float64, s *Stream) {
|
|
||||||
sort.Float64s(a)
|
|
||||||
for _, qu := range LowQuantiles {
|
|
||||||
n := float64(len(a))
|
|
||||||
k := int(qu * n)
|
|
||||||
|
|
||||||
lowerRank := int((1 - RelativeEpsilon) * qu * n)
|
|
||||||
upperRank := int(math.Ceil((1 + RelativeEpsilon) * qu * n))
|
|
||||||
w, min, max := a[k-1], a[lowerRank-1], a[upperRank-1]
|
|
||||||
if g := s.Query(qu); g < min || g > max {
|
|
||||||
t.Errorf("q=%f: want %v [%f,%f], got %v", qu, w, min, max, g)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func verifyHighPercsWithRelativeEpsilon(t *testing.T, a []float64, s *Stream) {
|
|
||||||
sort.Float64s(a)
|
|
||||||
for _, qu := range HighQuantiles {
|
|
||||||
n := float64(len(a))
|
|
||||||
k := int(qu * n)
|
|
||||||
|
|
||||||
lowerRank := int((1 - (1+RelativeEpsilon)*(1-qu)) * n)
|
|
||||||
upperRank := int(math.Ceil((1 - (1-RelativeEpsilon)*(1-qu)) * n))
|
|
||||||
w, min, max := a[k-1], a[lowerRank-1], a[upperRank-1]
|
|
||||||
if g := s.Query(qu); g < min || g > max {
|
|
||||||
t.Errorf("q=%f: want %v [%f,%f], got %v", qu, w, min, max, g)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func populateStream(s *Stream) []float64 {
|
|
||||||
a := make([]float64, 0, 1e5+100)
|
|
||||||
for i := 0; i < cap(a); i++ {
|
|
||||||
v := rand.NormFloat64()
|
|
||||||
// Add 5% asymmetric outliers.
|
|
||||||
if i%20 == 0 {
|
|
||||||
v = v*v + 1
|
|
||||||
}
|
|
||||||
s.Insert(v)
|
|
||||||
a = append(a, v)
|
|
||||||
}
|
|
||||||
return a
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestTargetedQuery(t *testing.T) {
|
|
||||||
rand.Seed(42)
|
|
||||||
s := NewTargeted(Targets)
|
|
||||||
a := populateStream(s)
|
|
||||||
verifyPercsWithAbsoluteEpsilon(t, a, s)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestLowBiasedQuery(t *testing.T) {
|
|
||||||
rand.Seed(42)
|
|
||||||
s := NewLowBiased(RelativeEpsilon)
|
|
||||||
a := populateStream(s)
|
|
||||||
verifyLowPercsWithRelativeEpsilon(t, a, s)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestHighBiasedQuery(t *testing.T) {
|
|
||||||
rand.Seed(42)
|
|
||||||
s := NewHighBiased(RelativeEpsilon)
|
|
||||||
a := populateStream(s)
|
|
||||||
verifyHighPercsWithRelativeEpsilon(t, a, s)
|
|
||||||
}
|
|
||||||
|
|
||||||
// BrokenTestTargetedMerge is broken, see Merge doc comment.
|
|
||||||
func BrokenTestTargetedMerge(t *testing.T) {
|
|
||||||
rand.Seed(42)
|
|
||||||
s1 := NewTargeted(Targets)
|
|
||||||
s2 := NewTargeted(Targets)
|
|
||||||
a := populateStream(s1)
|
|
||||||
a = append(a, populateStream(s2)...)
|
|
||||||
s1.Merge(s2.Samples())
|
|
||||||
verifyPercsWithAbsoluteEpsilon(t, a, s1)
|
|
||||||
}
|
|
||||||
|
|
||||||
// BrokenTestLowBiasedMerge is broken, see Merge doc comment.
|
|
||||||
func BrokenTestLowBiasedMerge(t *testing.T) {
|
|
||||||
rand.Seed(42)
|
|
||||||
s1 := NewLowBiased(RelativeEpsilon)
|
|
||||||
s2 := NewLowBiased(RelativeEpsilon)
|
|
||||||
a := populateStream(s1)
|
|
||||||
a = append(a, populateStream(s2)...)
|
|
||||||
s1.Merge(s2.Samples())
|
|
||||||
verifyLowPercsWithRelativeEpsilon(t, a, s2)
|
|
||||||
}
|
|
||||||
|
|
||||||
// BrokenTestHighBiasedMerge is broken, see Merge doc comment.
|
|
||||||
func BrokenTestHighBiasedMerge(t *testing.T) {
|
|
||||||
rand.Seed(42)
|
|
||||||
s1 := NewHighBiased(RelativeEpsilon)
|
|
||||||
s2 := NewHighBiased(RelativeEpsilon)
|
|
||||||
a := populateStream(s1)
|
|
||||||
a = append(a, populateStream(s2)...)
|
|
||||||
s1.Merge(s2.Samples())
|
|
||||||
verifyHighPercsWithRelativeEpsilon(t, a, s2)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestUncompressed(t *testing.T) {
|
|
||||||
q := NewTargeted(Targets)
|
|
||||||
for i := 100; i > 0; i-- {
|
|
||||||
q.Insert(float64(i))
|
|
||||||
}
|
|
||||||
if g := q.Count(); g != 100 {
|
|
||||||
t.Errorf("want count 100, got %d", g)
|
|
||||||
}
|
|
||||||
// Before compression, Query should have 100% accuracy.
|
|
||||||
for quantile := range Targets {
|
|
||||||
w := quantile * 100
|
|
||||||
if g := q.Query(quantile); g != w {
|
|
||||||
t.Errorf("want %f, got %f", w, g)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestUncompressedSamples(t *testing.T) {
|
|
||||||
q := NewTargeted(map[float64]float64{0.99: 0.001})
|
|
||||||
for i := 1; i <= 100; i++ {
|
|
||||||
q.Insert(float64(i))
|
|
||||||
}
|
|
||||||
if g := q.Samples().Len(); g != 100 {
|
|
||||||
t.Errorf("want count 100, got %d", g)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestUncompressedOne(t *testing.T) {
|
|
||||||
q := NewTargeted(map[float64]float64{0.99: 0.01})
|
|
||||||
q.Insert(3.14)
|
|
||||||
if g := q.Query(0.90); g != 3.14 {
|
|
||||||
t.Error("want PI, got", g)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestDefaults(t *testing.T) {
|
|
||||||
if g := NewTargeted(map[float64]float64{0.99: 0.001}).Query(0.99); g != 0 {
|
|
||||||
t.Errorf("want 0, got %f", g)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
33
Godeps/_workspace/src/github.com/codegangsta/negroni/logger_test.go
generated
vendored
33
Godeps/_workspace/src/github.com/codegangsta/negroni/logger_test.go
generated
vendored
@@ -1,33 +0,0 @@
|
|||||||
package negroni
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"log"
|
|
||||||
"net/http"
|
|
||||||
"net/http/httptest"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func Test_Logger(t *testing.T) {
|
|
||||||
buff := bytes.NewBufferString("")
|
|
||||||
recorder := httptest.NewRecorder()
|
|
||||||
|
|
||||||
l := NewLogger()
|
|
||||||
l.Logger = log.New(buff, "[negroni] ", 0)
|
|
||||||
|
|
||||||
n := New()
|
|
||||||
// replace log for testing
|
|
||||||
n.Use(l)
|
|
||||||
n.UseHandler(http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
|
|
||||||
rw.WriteHeader(http.StatusNotFound)
|
|
||||||
}))
|
|
||||||
|
|
||||||
req, err := http.NewRequest("GET", "http://localhost:3000/foobar", nil)
|
|
||||||
if err != nil {
|
|
||||||
t.Error(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
n.ServeHTTP(recorder, req)
|
|
||||||
expect(t, recorder.Code, http.StatusNotFound)
|
|
||||||
refute(t, len(buff.String()), 0)
|
|
||||||
}
|
|
||||||
75
Godeps/_workspace/src/github.com/codegangsta/negroni/negroni_test.go
generated
vendored
75
Godeps/_workspace/src/github.com/codegangsta/negroni/negroni_test.go
generated
vendored
@@ -1,75 +0,0 @@
|
|||||||
package negroni
|
|
||||||
|
|
||||||
import (
|
|
||||||
"net/http"
|
|
||||||
"net/http/httptest"
|
|
||||||
"reflect"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
/* Test Helpers */
|
|
||||||
func expect(t *testing.T, a interface{}, b interface{}) {
|
|
||||||
if a != b {
|
|
||||||
t.Errorf("Expected %v (type %v) - Got %v (type %v)", b, reflect.TypeOf(b), a, reflect.TypeOf(a))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func refute(t *testing.T, a interface{}, b interface{}) {
|
|
||||||
if a == b {
|
|
||||||
t.Errorf("Did not expect %v (type %v) - Got %v (type %v)", b, reflect.TypeOf(b), a, reflect.TypeOf(a))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestNegroniRun(t *testing.T) {
|
|
||||||
// just test that Run doesn't bomb
|
|
||||||
go New().Run(":3000")
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestNegroniServeHTTP(t *testing.T) {
|
|
||||||
result := ""
|
|
||||||
response := httptest.NewRecorder()
|
|
||||||
|
|
||||||
n := New()
|
|
||||||
n.Use(HandlerFunc(func(rw http.ResponseWriter, r *http.Request, next http.HandlerFunc) {
|
|
||||||
result += "foo"
|
|
||||||
next(rw, r)
|
|
||||||
result += "ban"
|
|
||||||
}))
|
|
||||||
n.Use(HandlerFunc(func(rw http.ResponseWriter, r *http.Request, next http.HandlerFunc) {
|
|
||||||
result += "bar"
|
|
||||||
next(rw, r)
|
|
||||||
result += "baz"
|
|
||||||
}))
|
|
||||||
n.Use(HandlerFunc(func(rw http.ResponseWriter, r *http.Request, next http.HandlerFunc) {
|
|
||||||
result += "bat"
|
|
||||||
rw.WriteHeader(http.StatusBadRequest)
|
|
||||||
}))
|
|
||||||
|
|
||||||
n.ServeHTTP(response, (*http.Request)(nil))
|
|
||||||
|
|
||||||
expect(t, result, "foobarbatbazban")
|
|
||||||
expect(t, response.Code, http.StatusBadRequest)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ensures that a Negroni middleware chain
|
|
||||||
// can correctly return all of its handlers.
|
|
||||||
func TestHandlers(t *testing.T) {
|
|
||||||
response := httptest.NewRecorder()
|
|
||||||
n := New()
|
|
||||||
handlers := n.Handlers()
|
|
||||||
expect(t, 0, len(handlers))
|
|
||||||
|
|
||||||
n.Use(HandlerFunc(func(rw http.ResponseWriter, r *http.Request, next http.HandlerFunc) {
|
|
||||||
rw.WriteHeader(http.StatusOK)
|
|
||||||
}))
|
|
||||||
|
|
||||||
// Expects the length of handlers to be exactly 1
|
|
||||||
// after adding exactly one handler to the middleware chain
|
|
||||||
handlers = n.Handlers()
|
|
||||||
expect(t, 1, len(handlers))
|
|
||||||
|
|
||||||
// Ensures that the first handler that is in sequence behaves
|
|
||||||
// exactly the same as the one that was registered earlier
|
|
||||||
handlers[0].ServeHTTP(response, (*http.Request)(nil), nil)
|
|
||||||
expect(t, response.Code, http.StatusOK)
|
|
||||||
}
|
|
||||||
28
Godeps/_workspace/src/github.com/codegangsta/negroni/recovery_test.go
generated
vendored
28
Godeps/_workspace/src/github.com/codegangsta/negroni/recovery_test.go
generated
vendored
@@ -1,28 +0,0 @@
|
|||||||
package negroni
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"log"
|
|
||||||
"net/http"
|
|
||||||
"net/http/httptest"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestRecovery(t *testing.T) {
|
|
||||||
buff := bytes.NewBufferString("")
|
|
||||||
recorder := httptest.NewRecorder()
|
|
||||||
|
|
||||||
rec := NewRecovery()
|
|
||||||
rec.Logger = log.New(buff, "[negroni] ", 0)
|
|
||||||
|
|
||||||
n := New()
|
|
||||||
// replace log for testing
|
|
||||||
n.Use(rec)
|
|
||||||
n.UseHandler(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) {
|
|
||||||
panic("here is a panic!")
|
|
||||||
}))
|
|
||||||
n.ServeHTTP(recorder, (*http.Request)(nil))
|
|
||||||
expect(t, recorder.Code, http.StatusInternalServerError)
|
|
||||||
refute(t, recorder.Body.Len(), 0)
|
|
||||||
refute(t, len(buff.String()), 0)
|
|
||||||
}
|
|
||||||
150
Godeps/_workspace/src/github.com/codegangsta/negroni/response_writer_test.go
generated
vendored
150
Godeps/_workspace/src/github.com/codegangsta/negroni/response_writer_test.go
generated
vendored
@@ -1,150 +0,0 @@
|
|||||||
package negroni
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bufio"
|
|
||||||
"net"
|
|
||||||
"net/http"
|
|
||||||
"net/http/httptest"
|
|
||||||
"testing"
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
type closeNotifyingRecorder struct {
|
|
||||||
*httptest.ResponseRecorder
|
|
||||||
closed chan bool
|
|
||||||
}
|
|
||||||
|
|
||||||
func newCloseNotifyingRecorder() *closeNotifyingRecorder {
|
|
||||||
return &closeNotifyingRecorder{
|
|
||||||
httptest.NewRecorder(),
|
|
||||||
make(chan bool, 1),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *closeNotifyingRecorder) close() {
|
|
||||||
c.closed <- true
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *closeNotifyingRecorder) CloseNotify() <-chan bool {
|
|
||||||
return c.closed
|
|
||||||
}
|
|
||||||
|
|
||||||
type hijackableResponse struct {
|
|
||||||
Hijacked bool
|
|
||||||
}
|
|
||||||
|
|
||||||
func newHijackableResponse() *hijackableResponse {
|
|
||||||
return &hijackableResponse{}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (h *hijackableResponse) Header() http.Header { return nil }
|
|
||||||
func (h *hijackableResponse) Write(buf []byte) (int, error) { return 0, nil }
|
|
||||||
func (h *hijackableResponse) WriteHeader(code int) {}
|
|
||||||
func (h *hijackableResponse) Flush() {}
|
|
||||||
func (h *hijackableResponse) Hijack() (net.Conn, *bufio.ReadWriter, error) {
|
|
||||||
h.Hijacked = true
|
|
||||||
return nil, nil, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestResponseWriterWritingString(t *testing.T) {
|
|
||||||
rec := httptest.NewRecorder()
|
|
||||||
rw := NewResponseWriter(rec)
|
|
||||||
|
|
||||||
rw.Write([]byte("Hello world"))
|
|
||||||
|
|
||||||
expect(t, rec.Code, rw.Status())
|
|
||||||
expect(t, rec.Body.String(), "Hello world")
|
|
||||||
expect(t, rw.Status(), http.StatusOK)
|
|
||||||
expect(t, rw.Size(), 11)
|
|
||||||
expect(t, rw.Written(), true)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestResponseWriterWritingStrings(t *testing.T) {
|
|
||||||
rec := httptest.NewRecorder()
|
|
||||||
rw := NewResponseWriter(rec)
|
|
||||||
|
|
||||||
rw.Write([]byte("Hello world"))
|
|
||||||
rw.Write([]byte("foo bar bat baz"))
|
|
||||||
|
|
||||||
expect(t, rec.Code, rw.Status())
|
|
||||||
expect(t, rec.Body.String(), "Hello worldfoo bar bat baz")
|
|
||||||
expect(t, rw.Status(), http.StatusOK)
|
|
||||||
expect(t, rw.Size(), 26)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestResponseWriterWritingHeader(t *testing.T) {
|
|
||||||
rec := httptest.NewRecorder()
|
|
||||||
rw := NewResponseWriter(rec)
|
|
||||||
|
|
||||||
rw.WriteHeader(http.StatusNotFound)
|
|
||||||
|
|
||||||
expect(t, rec.Code, rw.Status())
|
|
||||||
expect(t, rec.Body.String(), "")
|
|
||||||
expect(t, rw.Status(), http.StatusNotFound)
|
|
||||||
expect(t, rw.Size(), 0)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestResponseWriterBefore(t *testing.T) {
|
|
||||||
rec := httptest.NewRecorder()
|
|
||||||
rw := NewResponseWriter(rec)
|
|
||||||
result := ""
|
|
||||||
|
|
||||||
rw.Before(func(ResponseWriter) {
|
|
||||||
result += "foo"
|
|
||||||
})
|
|
||||||
rw.Before(func(ResponseWriter) {
|
|
||||||
result += "bar"
|
|
||||||
})
|
|
||||||
|
|
||||||
rw.WriteHeader(http.StatusNotFound)
|
|
||||||
|
|
||||||
expect(t, rec.Code, rw.Status())
|
|
||||||
expect(t, rec.Body.String(), "")
|
|
||||||
expect(t, rw.Status(), http.StatusNotFound)
|
|
||||||
expect(t, rw.Size(), 0)
|
|
||||||
expect(t, result, "barfoo")
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestResponseWriterHijack(t *testing.T) {
|
|
||||||
hijackable := newHijackableResponse()
|
|
||||||
rw := NewResponseWriter(hijackable)
|
|
||||||
hijacker, ok := rw.(http.Hijacker)
|
|
||||||
expect(t, ok, true)
|
|
||||||
_, _, err := hijacker.Hijack()
|
|
||||||
if err != nil {
|
|
||||||
t.Error(err)
|
|
||||||
}
|
|
||||||
expect(t, hijackable.Hijacked, true)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestResponseWriteHijackNotOK(t *testing.T) {
|
|
||||||
hijackable := new(http.ResponseWriter)
|
|
||||||
rw := NewResponseWriter(*hijackable)
|
|
||||||
hijacker, ok := rw.(http.Hijacker)
|
|
||||||
expect(t, ok, true)
|
|
||||||
_, _, err := hijacker.Hijack()
|
|
||||||
|
|
||||||
refute(t, err, nil)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestResponseWriterCloseNotify(t *testing.T) {
|
|
||||||
rec := newCloseNotifyingRecorder()
|
|
||||||
rw := NewResponseWriter(rec)
|
|
||||||
closed := false
|
|
||||||
notifier := rw.(http.CloseNotifier).CloseNotify()
|
|
||||||
rec.close()
|
|
||||||
select {
|
|
||||||
case <-notifier:
|
|
||||||
closed = true
|
|
||||||
case <-time.After(time.Second):
|
|
||||||
}
|
|
||||||
expect(t, closed, true)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestResponseWriterFlusher(t *testing.T) {
|
|
||||||
rec := httptest.NewRecorder()
|
|
||||||
rw := NewResponseWriter(rec)
|
|
||||||
|
|
||||||
_, ok := rw.(http.Flusher)
|
|
||||||
expect(t, ok, true)
|
|
||||||
}
|
|
||||||
113
Godeps/_workspace/src/github.com/codegangsta/negroni/static_test.go
generated
vendored
113
Godeps/_workspace/src/github.com/codegangsta/negroni/static_test.go
generated
vendored
@@ -1,113 +0,0 @@
|
|||||||
package negroni
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"net/http"
|
|
||||||
"net/http/httptest"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestStatic(t *testing.T) {
|
|
||||||
response := httptest.NewRecorder()
|
|
||||||
response.Body = new(bytes.Buffer)
|
|
||||||
|
|
||||||
n := New()
|
|
||||||
n.Use(NewStatic(http.Dir(".")))
|
|
||||||
|
|
||||||
req, err := http.NewRequest("GET", "http://localhost:3000/negroni.go", nil)
|
|
||||||
if err != nil {
|
|
||||||
t.Error(err)
|
|
||||||
}
|
|
||||||
n.ServeHTTP(response, req)
|
|
||||||
expect(t, response.Code, http.StatusOK)
|
|
||||||
expect(t, response.Header().Get("Expires"), "")
|
|
||||||
if response.Body.Len() == 0 {
|
|
||||||
t.Errorf("Got empty body for GET request")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestStaticHead(t *testing.T) {
|
|
||||||
response := httptest.NewRecorder()
|
|
||||||
response.Body = new(bytes.Buffer)
|
|
||||||
|
|
||||||
n := New()
|
|
||||||
n.Use(NewStatic(http.Dir(".")))
|
|
||||||
n.UseHandler(http.NotFoundHandler())
|
|
||||||
|
|
||||||
req, err := http.NewRequest("HEAD", "http://localhost:3000/negroni.go", nil)
|
|
||||||
if err != nil {
|
|
||||||
t.Error(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
n.ServeHTTP(response, req)
|
|
||||||
expect(t, response.Code, http.StatusOK)
|
|
||||||
if response.Body.Len() != 0 {
|
|
||||||
t.Errorf("Got non-empty body for HEAD request")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestStaticAsPost(t *testing.T) {
|
|
||||||
response := httptest.NewRecorder()
|
|
||||||
|
|
||||||
n := New()
|
|
||||||
n.Use(NewStatic(http.Dir(".")))
|
|
||||||
n.UseHandler(http.NotFoundHandler())
|
|
||||||
|
|
||||||
req, err := http.NewRequest("POST", "http://localhost:3000/negroni.go", nil)
|
|
||||||
if err != nil {
|
|
||||||
t.Error(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
n.ServeHTTP(response, req)
|
|
||||||
expect(t, response.Code, http.StatusNotFound)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestStaticBadDir(t *testing.T) {
|
|
||||||
response := httptest.NewRecorder()
|
|
||||||
|
|
||||||
n := Classic()
|
|
||||||
n.UseHandler(http.NotFoundHandler())
|
|
||||||
|
|
||||||
req, err := http.NewRequest("GET", "http://localhost:3000/negroni.go", nil)
|
|
||||||
if err != nil {
|
|
||||||
t.Error(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
n.ServeHTTP(response, req)
|
|
||||||
refute(t, response.Code, http.StatusOK)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestStaticOptionsServeIndex(t *testing.T) {
|
|
||||||
response := httptest.NewRecorder()
|
|
||||||
|
|
||||||
n := New()
|
|
||||||
s := NewStatic(http.Dir("."))
|
|
||||||
s.IndexFile = "negroni.go"
|
|
||||||
n.Use(s)
|
|
||||||
|
|
||||||
req, err := http.NewRequest("GET", "http://localhost:3000/", nil)
|
|
||||||
if err != nil {
|
|
||||||
t.Error(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
n.ServeHTTP(response, req)
|
|
||||||
expect(t, response.Code, http.StatusOK)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestStaticOptionsPrefix(t *testing.T) {
|
|
||||||
response := httptest.NewRecorder()
|
|
||||||
|
|
||||||
n := New()
|
|
||||||
s := NewStatic(http.Dir("."))
|
|
||||||
s.Prefix = "/public"
|
|
||||||
n.Use(s)
|
|
||||||
|
|
||||||
// Check file content behaviour
|
|
||||||
req, err := http.NewRequest("GET", "http://localhost:3000/public/negroni.go", nil)
|
|
||||||
if err != nil {
|
|
||||||
t.Error(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
n.ServeHTTP(response, req)
|
|
||||||
expect(t, response.Code, http.StatusOK)
|
|
||||||
}
|
|
||||||
73
Godeps/_workspace/src/github.com/coreos/go-etcd/etcd/add_child_test.go
generated
vendored
73
Godeps/_workspace/src/github.com/coreos/go-etcd/etcd/add_child_test.go
generated
vendored
@@ -1,73 +0,0 @@
|
|||||||
package etcd
|
|
||||||
|
|
||||||
import "testing"
|
|
||||||
|
|
||||||
func TestAddChild(t *testing.T) {
|
|
||||||
c := NewClient(nil)
|
|
||||||
defer func() {
|
|
||||||
c.Delete("fooDir", true)
|
|
||||||
c.Delete("nonexistentDir", true)
|
|
||||||
}()
|
|
||||||
|
|
||||||
c.CreateDir("fooDir", 5)
|
|
||||||
|
|
||||||
_, err := c.AddChild("fooDir", "v0", 5)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err = c.AddChild("fooDir", "v1", 5)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := c.Get("fooDir", true, false)
|
|
||||||
// The child with v0 should proceed the child with v1 because it's added
|
|
||||||
// earlier, so it should have a lower key.
|
|
||||||
if !(len(resp.Node.Nodes) == 2 && (resp.Node.Nodes[0].Value == "v0" && resp.Node.Nodes[1].Value == "v1")) {
|
|
||||||
t.Fatalf("AddChild 1 failed. There should be two chlidren whose values are v0 and v1, respectively."+
|
|
||||||
" The response was: %#v", resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Creating a child under a nonexistent directory should succeed.
|
|
||||||
// The directory should be created.
|
|
||||||
resp, err = c.AddChild("nonexistentDir", "foo", 5)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestAddChildDir(t *testing.T) {
|
|
||||||
c := NewClient(nil)
|
|
||||||
defer func() {
|
|
||||||
c.Delete("fooDir", true)
|
|
||||||
c.Delete("nonexistentDir", true)
|
|
||||||
}()
|
|
||||||
|
|
||||||
c.CreateDir("fooDir", 5)
|
|
||||||
|
|
||||||
_, err := c.AddChildDir("fooDir", 5)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err = c.AddChildDir("fooDir", 5)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := c.Get("fooDir", true, false)
|
|
||||||
// The child with v0 should proceed the child with v1 because it's added
|
|
||||||
// earlier, so it should have a lower key.
|
|
||||||
if !(len(resp.Node.Nodes) == 2 && (len(resp.Node.Nodes[0].Nodes) == 0 && len(resp.Node.Nodes[1].Nodes) == 0)) {
|
|
||||||
t.Fatalf("AddChildDir 1 failed. There should be two chlidren whose values are v0 and v1, respectively."+
|
|
||||||
" The response was: %#v", resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Creating a child under a nonexistent directory should succeed.
|
|
||||||
// The directory should be created.
|
|
||||||
resp, err = c.AddChildDir("nonexistentDir", 5)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
108
Godeps/_workspace/src/github.com/coreos/go-etcd/etcd/client_test.go
generated
vendored
108
Godeps/_workspace/src/github.com/coreos/go-etcd/etcd/client_test.go
generated
vendored
@@ -1,108 +0,0 @@
|
|||||||
package etcd
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
|
||||||
"net"
|
|
||||||
"net/url"
|
|
||||||
"os"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
// To pass this test, we need to create a cluster of 3 machines
|
|
||||||
// The server should be listening on localhost:4001, 4002, 4003
|
|
||||||
func TestSync(t *testing.T) {
|
|
||||||
fmt.Println("Make sure there are three nodes at 0.0.0.0:4001-4003")
|
|
||||||
|
|
||||||
// Explicit trailing slash to ensure this doesn't reproduce:
|
|
||||||
// https://github.com/coreos/go-etcd/issues/82
|
|
||||||
c := NewClient([]string{"http://127.0.0.1:4001/"})
|
|
||||||
|
|
||||||
success := c.SyncCluster()
|
|
||||||
if !success {
|
|
||||||
t.Fatal("cannot sync machines")
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, m := range c.GetCluster() {
|
|
||||||
u, err := url.Parse(m)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
if u.Scheme != "http" {
|
|
||||||
t.Fatal("scheme must be http")
|
|
||||||
}
|
|
||||||
|
|
||||||
host, _, err := net.SplitHostPort(u.Host)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
if host != "localhost" {
|
|
||||||
t.Fatal("Host must be localhost")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
badMachines := []string{"abc", "edef"}
|
|
||||||
|
|
||||||
success = c.SetCluster(badMachines)
|
|
||||||
|
|
||||||
if success {
|
|
||||||
t.Fatal("should not sync on bad machines")
|
|
||||||
}
|
|
||||||
|
|
||||||
goodMachines := []string{"127.0.0.1:4002"}
|
|
||||||
|
|
||||||
success = c.SetCluster(goodMachines)
|
|
||||||
|
|
||||||
if !success {
|
|
||||||
t.Fatal("cannot sync machines")
|
|
||||||
} else {
|
|
||||||
fmt.Println(c.cluster.Machines)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestPersistence(t *testing.T) {
|
|
||||||
c := NewClient(nil)
|
|
||||||
c.SyncCluster()
|
|
||||||
|
|
||||||
fo, err := os.Create("config.json")
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
defer func() {
|
|
||||||
if err := fo.Close(); err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
c.SetPersistence(fo)
|
|
||||||
err = c.saveConfig()
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
c2, err := NewClientFromFile("config.json")
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Verify that the two clients have the same config
|
|
||||||
b1, _ := json.Marshal(c)
|
|
||||||
b2, _ := json.Marshal(c2)
|
|
||||||
|
|
||||||
if string(b1) != string(b2) {
|
|
||||||
t.Fatalf("The two configs should be equal!")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestClientRetry(t *testing.T) {
|
|
||||||
c := NewClient([]string{"http://strange", "http://127.0.0.1:4001"})
|
|
||||||
// use first endpoint as the picked url
|
|
||||||
c.cluster.picked = 0
|
|
||||||
if _, err := c.Set("foo", "bar", 5); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
if _, err := c.Delete("foo", true); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
46
Godeps/_workspace/src/github.com/coreos/go-etcd/etcd/compare_and_delete_test.go
generated
vendored
46
Godeps/_workspace/src/github.com/coreos/go-etcd/etcd/compare_and_delete_test.go
generated
vendored
@@ -1,46 +0,0 @@
|
|||||||
package etcd
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestCompareAndDelete(t *testing.T) {
|
|
||||||
c := NewClient(nil)
|
|
||||||
defer func() {
|
|
||||||
c.Delete("foo", true)
|
|
||||||
}()
|
|
||||||
|
|
||||||
c.Set("foo", "bar", 5)
|
|
||||||
|
|
||||||
// This should succeed an correct prevValue
|
|
||||||
resp, err := c.CompareAndDelete("foo", "bar", 0)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
if !(resp.PrevNode.Value == "bar" && resp.PrevNode.Key == "/foo" && resp.PrevNode.TTL == 5) {
|
|
||||||
t.Fatalf("CompareAndDelete 1 prevNode failed: %#v", resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, _ = c.Set("foo", "bar", 5)
|
|
||||||
// This should fail because it gives an incorrect prevValue
|
|
||||||
_, err = c.CompareAndDelete("foo", "xxx", 0)
|
|
||||||
if err == nil {
|
|
||||||
t.Fatalf("CompareAndDelete 2 should have failed. The response is: %#v", resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
// This should succeed because it gives an correct prevIndex
|
|
||||||
resp, err = c.CompareAndDelete("foo", "", resp.Node.ModifiedIndex)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
if !(resp.PrevNode.Value == "bar" && resp.PrevNode.Key == "/foo" && resp.PrevNode.TTL == 5) {
|
|
||||||
t.Fatalf("CompareAndSwap 3 prevNode failed: %#v", resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
c.Set("foo", "bar", 5)
|
|
||||||
// This should fail because it gives an incorrect prevIndex
|
|
||||||
resp, err = c.CompareAndDelete("foo", "", 29817514)
|
|
||||||
if err == nil {
|
|
||||||
t.Fatalf("CompareAndDelete 4 should have failed. The response is: %#v", resp)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
57
Godeps/_workspace/src/github.com/coreos/go-etcd/etcd/compare_and_swap_test.go
generated
vendored
57
Godeps/_workspace/src/github.com/coreos/go-etcd/etcd/compare_and_swap_test.go
generated
vendored
@@ -1,57 +0,0 @@
|
|||||||
package etcd
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestCompareAndSwap(t *testing.T) {
|
|
||||||
c := NewClient(nil)
|
|
||||||
defer func() {
|
|
||||||
c.Delete("foo", true)
|
|
||||||
}()
|
|
||||||
|
|
||||||
c.Set("foo", "bar", 5)
|
|
||||||
|
|
||||||
// This should succeed
|
|
||||||
resp, err := c.CompareAndSwap("foo", "bar2", 5, "bar", 0)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
if !(resp.Node.Value == "bar2" && resp.Node.Key == "/foo" && resp.Node.TTL == 5) {
|
|
||||||
t.Fatalf("CompareAndSwap 1 failed: %#v", resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
if !(resp.PrevNode.Value == "bar" && resp.PrevNode.Key == "/foo" && resp.PrevNode.TTL == 5) {
|
|
||||||
t.Fatalf("CompareAndSwap 1 prevNode failed: %#v", resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
// This should fail because it gives an incorrect prevValue
|
|
||||||
resp, err = c.CompareAndSwap("foo", "bar3", 5, "xxx", 0)
|
|
||||||
if err == nil {
|
|
||||||
t.Fatalf("CompareAndSwap 2 should have failed. The response is: %#v", resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err = c.Set("foo", "bar", 5)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// This should succeed
|
|
||||||
resp, err = c.CompareAndSwap("foo", "bar2", 5, "", resp.Node.ModifiedIndex)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
if !(resp.Node.Value == "bar2" && resp.Node.Key == "/foo" && resp.Node.TTL == 5) {
|
|
||||||
t.Fatalf("CompareAndSwap 3 failed: %#v", resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
if !(resp.PrevNode.Value == "bar" && resp.PrevNode.Key == "/foo" && resp.PrevNode.TTL == 5) {
|
|
||||||
t.Fatalf("CompareAndSwap 3 prevNode failed: %#v", resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
// This should fail because it gives an incorrect prevIndex
|
|
||||||
resp, err = c.CompareAndSwap("foo", "bar3", 5, "", 29817514)
|
|
||||||
if err == nil {
|
|
||||||
t.Fatalf("CompareAndSwap 4 should have failed. The response is: %#v", resp)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
28
Godeps/_workspace/src/github.com/coreos/go-etcd/etcd/debug_test.go
generated
vendored
28
Godeps/_workspace/src/github.com/coreos/go-etcd/etcd/debug_test.go
generated
vendored
@@ -1,28 +0,0 @@
|
|||||||
package etcd
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
type Foo struct{}
|
|
||||||
type Bar struct {
|
|
||||||
one string
|
|
||||||
two int
|
|
||||||
}
|
|
||||||
|
|
||||||
// Tests that logs don't panic with arbitrary interfaces
|
|
||||||
func TestDebug(t *testing.T) {
|
|
||||||
f := &Foo{}
|
|
||||||
b := &Bar{"asfd", 3}
|
|
||||||
for _, test := range []interface{}{
|
|
||||||
1234,
|
|
||||||
"asdf",
|
|
||||||
f,
|
|
||||||
b,
|
|
||||||
} {
|
|
||||||
logger.Debug(test)
|
|
||||||
logger.Debugf("something, %s", test)
|
|
||||||
logger.Warning(test)
|
|
||||||
logger.Warningf("something, %s", test)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
81
Godeps/_workspace/src/github.com/coreos/go-etcd/etcd/delete_test.go
generated
vendored
81
Godeps/_workspace/src/github.com/coreos/go-etcd/etcd/delete_test.go
generated
vendored
@@ -1,81 +0,0 @@
|
|||||||
package etcd
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestDelete(t *testing.T) {
|
|
||||||
c := NewClient(nil)
|
|
||||||
defer func() {
|
|
||||||
c.Delete("foo", true)
|
|
||||||
}()
|
|
||||||
|
|
||||||
c.Set("foo", "bar", 5)
|
|
||||||
resp, err := c.Delete("foo", false)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if !(resp.Node.Value == "") {
|
|
||||||
t.Fatalf("Delete failed with %s", resp.Node.Value)
|
|
||||||
}
|
|
||||||
|
|
||||||
if !(resp.PrevNode.Value == "bar") {
|
|
||||||
t.Fatalf("Delete PrevNode failed with %s", resp.Node.Value)
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err = c.Delete("foo", false)
|
|
||||||
if err == nil {
|
|
||||||
t.Fatalf("Delete should have failed because the key foo did not exist. "+
|
|
||||||
"The response was: %v", resp)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestDeleteAll(t *testing.T) {
|
|
||||||
c := NewClient(nil)
|
|
||||||
defer func() {
|
|
||||||
c.Delete("foo", true)
|
|
||||||
c.Delete("fooDir", true)
|
|
||||||
}()
|
|
||||||
|
|
||||||
c.SetDir("foo", 5)
|
|
||||||
// test delete an empty dir
|
|
||||||
resp, err := c.DeleteDir("foo")
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if !(resp.Node.Value == "") {
|
|
||||||
t.Fatalf("DeleteAll 1 failed: %#v", resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
if !(resp.PrevNode.Dir == true && resp.PrevNode.Value == "") {
|
|
||||||
t.Fatalf("DeleteAll 1 PrevNode failed: %#v", resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
c.CreateDir("fooDir", 5)
|
|
||||||
c.Set("fooDir/foo", "bar", 5)
|
|
||||||
_, err = c.DeleteDir("fooDir")
|
|
||||||
if err == nil {
|
|
||||||
t.Fatal("should not able to delete a non-empty dir with deletedir")
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err = c.Delete("fooDir", true)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if !(resp.Node.Value == "") {
|
|
||||||
t.Fatalf("DeleteAll 2 failed: %#v", resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
if !(resp.PrevNode.Dir == true && resp.PrevNode.Value == "") {
|
|
||||||
t.Fatalf("DeleteAll 2 PrevNode failed: %#v", resp)
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err = c.Delete("foo", true)
|
|
||||||
if err == nil {
|
|
||||||
t.Fatalf("DeleteAll should have failed because the key foo did not exist. "+
|
|
||||||
"The response was: %v", resp)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
131
Godeps/_workspace/src/github.com/coreos/go-etcd/etcd/get_test.go
generated
vendored
131
Godeps/_workspace/src/github.com/coreos/go-etcd/etcd/get_test.go
generated
vendored
@@ -1,131 +0,0 @@
|
|||||||
package etcd
|
|
||||||
|
|
||||||
import (
|
|
||||||
"reflect"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
// cleanNode scrubs Expiration, ModifiedIndex and CreatedIndex of a node.
|
|
||||||
func cleanNode(n *Node) {
|
|
||||||
n.Expiration = nil
|
|
||||||
n.ModifiedIndex = 0
|
|
||||||
n.CreatedIndex = 0
|
|
||||||
}
|
|
||||||
|
|
||||||
// cleanResult scrubs a result object two levels deep of Expiration,
|
|
||||||
// ModifiedIndex and CreatedIndex.
|
|
||||||
func cleanResult(result *Response) {
|
|
||||||
// TODO(philips): make this recursive.
|
|
||||||
cleanNode(result.Node)
|
|
||||||
for i, _ := range result.Node.Nodes {
|
|
||||||
cleanNode(result.Node.Nodes[i])
|
|
||||||
for j, _ := range result.Node.Nodes[i].Nodes {
|
|
||||||
cleanNode(result.Node.Nodes[i].Nodes[j])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestGet(t *testing.T) {
|
|
||||||
c := NewClient(nil)
|
|
||||||
defer func() {
|
|
||||||
c.Delete("foo", true)
|
|
||||||
}()
|
|
||||||
|
|
||||||
c.Set("foo", "bar", 5)
|
|
||||||
|
|
||||||
result, err := c.Get("foo", false, false)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if result.Node.Key != "/foo" || result.Node.Value != "bar" {
|
|
||||||
t.Fatalf("Get failed with %s %s %v", result.Node.Key, result.Node.Value, result.Node.TTL)
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = c.Get("goo", false, false)
|
|
||||||
if err == nil {
|
|
||||||
t.Fatalf("should not be able to get non-exist key")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestGetAll(t *testing.T) {
|
|
||||||
c := NewClient(nil)
|
|
||||||
defer func() {
|
|
||||||
c.Delete("fooDir", true)
|
|
||||||
}()
|
|
||||||
|
|
||||||
c.CreateDir("fooDir", 5)
|
|
||||||
c.Set("fooDir/k0", "v0", 5)
|
|
||||||
c.Set("fooDir/k1", "v1", 5)
|
|
||||||
|
|
||||||
// Return kv-pairs in sorted order
|
|
||||||
result, err := c.Get("fooDir", true, false)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
expected := Nodes{
|
|
||||||
&Node{
|
|
||||||
Key: "/fooDir/k0",
|
|
||||||
Value: "v0",
|
|
||||||
TTL: 5,
|
|
||||||
},
|
|
||||||
&Node{
|
|
||||||
Key: "/fooDir/k1",
|
|
||||||
Value: "v1",
|
|
||||||
TTL: 5,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
cleanResult(result)
|
|
||||||
|
|
||||||
if !reflect.DeepEqual(result.Node.Nodes, expected) {
|
|
||||||
t.Fatalf("(actual) %v != (expected) %v", result.Node.Nodes, expected)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Test the `recursive` option
|
|
||||||
c.CreateDir("fooDir/childDir", 5)
|
|
||||||
c.Set("fooDir/childDir/k2", "v2", 5)
|
|
||||||
|
|
||||||
// Return kv-pairs in sorted order
|
|
||||||
result, err = c.Get("fooDir", true, true)
|
|
||||||
|
|
||||||
cleanResult(result)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
expected = Nodes{
|
|
||||||
&Node{
|
|
||||||
Key: "/fooDir/childDir",
|
|
||||||
Dir: true,
|
|
||||||
Nodes: Nodes{
|
|
||||||
&Node{
|
|
||||||
Key: "/fooDir/childDir/k2",
|
|
||||||
Value: "v2",
|
|
||||||
TTL: 5,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
TTL: 5,
|
|
||||||
},
|
|
||||||
&Node{
|
|
||||||
Key: "/fooDir/k0",
|
|
||||||
Value: "v0",
|
|
||||||
TTL: 5,
|
|
||||||
},
|
|
||||||
&Node{
|
|
||||||
Key: "/fooDir/k1",
|
|
||||||
Value: "v1",
|
|
||||||
TTL: 5,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
cleanResult(result)
|
|
||||||
|
|
||||||
if !reflect.DeepEqual(result.Node.Nodes, expected) {
|
|
||||||
t.Fatalf("(actual) %v != (expected) %v", result.Node.Nodes, expected)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user