1
// Copyright 2016 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
7
jc "github.com/juju/testing/checkers"
12
type PortRangeCheck struct{}
14
func (*PortRangeCheck) AssertPortRange(c *gc.C, pr PortRange, args PortRangeArgs) {
15
c.Assert(pr.UnitName(), gc.Equals, args.UnitName)
16
c.Assert(pr.FromPort(), gc.Equals, args.FromPort)
17
c.Assert(pr.ToPort(), gc.Equals, args.ToPort)
18
c.Assert(pr.Protocol(), gc.Equals, args.Protocol)
21
type NetworkPortsSerializationSuite struct {
22
SliceSerializationSuite
26
var _ = gc.Suite(&NetworkPortsSerializationSuite{})
28
func (s *NetworkPortsSerializationSuite) SetUpTest(c *gc.C) {
29
s.SliceSerializationSuite.SetUpTest(c)
30
s.importName = "network-ports"
31
s.sliceName = "network-ports"
32
s.importFunc = func(m map[string]interface{}) (interface{}, error) {
33
return importNetworkPorts(m)
35
s.testFields = func(m map[string]interface{}) {
36
m["network-ports"] = []interface{}{}
40
func (s *NetworkPortsSerializationSuite) TestNewNetworkPorts(c *gc.C) {
41
args := NetworkPortsArgs{
42
NetworkName: "special",
43
OpenPorts: []PortRangeArgs{
59
ports := newNetworkPorts(args)
60
c.Assert(ports.NetworkName(), gc.Equals, args.NetworkName)
61
opened := ports.OpenPorts()
62
c.Assert(opened, gc.HasLen, 2)
63
s.AssertPortRange(c, opened[0], args.OpenPorts[0])
64
s.AssertPortRange(c, opened[1], args.OpenPorts[1])
67
func (*NetworkPortsSerializationSuite) TestParsingSerializedData(c *gc.C) {
68
initial := &versionedNetworkPorts{
70
NetworkPorts_: []*networkPorts{
72
NetworkName_: "storage",
73
OpenPorts_: &portRanges{
75
OpenPorts_: []*portRange{
86
NetworkName_: "workload",
87
OpenPorts_: &portRanges{
89
OpenPorts_: []*portRange{
91
UnitName_: "unicorn/0",
102
bytes, err := yaml.Marshal(initial)
103
c.Assert(err, jc.ErrorIsNil)
105
var source map[string]interface{}
106
err = yaml.Unmarshal(bytes, &source)
107
c.Assert(err, jc.ErrorIsNil)
109
imported, err := importNetworkPorts(source)
110
c.Assert(err, jc.ErrorIsNil)
112
c.Assert(imported, jc.DeepEquals, initial.NetworkPorts_)
115
type PortRangeSerializationSuite struct {
116
SliceSerializationSuite
120
var _ = gc.Suite(&PortRangeSerializationSuite{})
122
func (s *PortRangeSerializationSuite) SetUpTest(c *gc.C) {
123
s.SliceSerializationSuite.SetUpTest(c)
124
s.importName = "port-range"
125
s.sliceName = "open-ports"
126
s.importFunc = func(m map[string]interface{}) (interface{}, error) {
127
return importPortRanges(m)
129
s.testFields = func(m map[string]interface{}) {
130
m["open-ports"] = []interface{}{}
134
func (s *PortRangeSerializationSuite) TestNewPortRange(c *gc.C) {
135
args := PortRangeArgs{
141
pr := newPortRange(args)
142
s.AssertPortRange(c, pr, args)
145
func (*PortRangeSerializationSuite) TestParsingSerializedData(c *gc.C) {
146
initial := &portRanges{
148
OpenPorts_: []*portRange{
150
UnitName_: "magic/0",
156
UnitName_: "unicorn/1",
164
bytes, err := yaml.Marshal(initial)
165
c.Assert(err, jc.ErrorIsNil)
167
var source map[string]interface{}
168
err = yaml.Unmarshal(bytes, &source)
169
c.Assert(err, jc.ErrorIsNil)
171
imported, err := importPortRanges(source)
172
c.Assert(err, jc.ErrorIsNil)
174
c.Assert(imported, jc.DeepEquals, initial.OpenPorts_)