github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/logfwd/origin_test.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package logfwd_test 5 6 import ( 7 "github.com/juju/errors" 8 "github.com/juju/testing" 9 jc "github.com/juju/testing/checkers" 10 "github.com/juju/version" 11 gc "gopkg.in/check.v1" 12 "gopkg.in/juju/names.v2" 13 14 "github.com/juju/juju/logfwd" 15 ) 16 17 type OriginSuite struct { 18 testing.IsolationSuite 19 } 20 21 var _ = gc.Suite(&OriginSuite{}) 22 23 func (s *OriginSuite) TestOriginForMachineAgent(c *gc.C) { 24 tag := names.NewMachineTag("99") 25 26 origin := logfwd.OriginForMachineAgent(tag, validOrigin.ControllerUUID, validOrigin.ModelUUID, validOrigin.Software.Version) 27 28 c.Check(origin, jc.DeepEquals, logfwd.Origin{ 29 ControllerUUID: validOrigin.ControllerUUID, 30 ModelUUID: validOrigin.ModelUUID, 31 Hostname: "machine-99." + validOrigin.ModelUUID, 32 Type: logfwd.OriginTypeMachine, 33 Name: "99", 34 Software: logfwd.Software{ 35 PrivateEnterpriseNumber: 28978, 36 Name: "jujud-machine-agent", 37 Version: version.MustParse("2.0.1"), 38 }, 39 }) 40 } 41 42 func (s *OriginSuite) TestOriginForUnitAgent(c *gc.C) { 43 tag := names.NewUnitTag("svc-a/0") 44 45 origin := logfwd.OriginForUnitAgent(tag, validOrigin.ControllerUUID, validOrigin.ModelUUID, validOrigin.Software.Version) 46 47 c.Check(origin, jc.DeepEquals, logfwd.Origin{ 48 ControllerUUID: validOrigin.ControllerUUID, 49 ModelUUID: validOrigin.ModelUUID, 50 Hostname: "unit-svc-a-0." + validOrigin.ModelUUID, 51 Type: logfwd.OriginTypeUnit, 52 Name: "svc-a/0", 53 Software: logfwd.Software{ 54 PrivateEnterpriseNumber: 28978, 55 Name: "jujud-unit-agent", 56 Version: version.MustParse("2.0.1"), 57 }, 58 }) 59 } 60 61 func (s *OriginSuite) TestOriginForJuju(c *gc.C) { 62 tag := names.NewUserTag("bob") 63 64 origin, err := logfwd.OriginForJuju(tag, validOrigin.ControllerUUID, validOrigin.ModelUUID, validOrigin.Software.Version) 65 c.Assert(err, jc.ErrorIsNil) 66 67 c.Check(origin, jc.DeepEquals, logfwd.Origin{ 68 ControllerUUID: validOrigin.ControllerUUID, 69 ModelUUID: validOrigin.ModelUUID, 70 Hostname: "", 71 Type: logfwd.OriginTypeUser, 72 Name: "bob", 73 Software: logfwd.Software{ 74 PrivateEnterpriseNumber: 28978, 75 Name: "juju", 76 Version: version.MustParse("2.0.1"), 77 }, 78 }) 79 } 80 81 func (s *OriginSuite) TestValidateValid(c *gc.C) { 82 origin := validOrigin 83 84 err := origin.Validate() 85 86 c.Check(err, jc.ErrorIsNil) 87 } 88 89 func (s *OriginSuite) TestValidateEmpty(c *gc.C) { 90 var origin logfwd.Origin 91 92 err := origin.Validate() 93 94 c.Check(err, jc.Satisfies, errors.IsNotValid) 95 } 96 97 func (s *OriginSuite) TestValidateEmptyControllerUUID(c *gc.C) { 98 origin := validOrigin 99 origin.ControllerUUID = "" 100 101 err := origin.Validate() 102 103 c.Check(err, jc.Satisfies, errors.IsNotValid) 104 c.Check(err, gc.ErrorMatches, `empty ControllerUUID`) 105 } 106 107 func (s *OriginSuite) TestValidateBadControllerUUID(c *gc.C) { 108 origin := validOrigin 109 origin.ControllerUUID = "..." 110 111 err := origin.Validate() 112 113 c.Check(err, jc.Satisfies, errors.IsNotValid) 114 c.Check(err, gc.ErrorMatches, `ControllerUUID "..." not a valid UUID`) 115 } 116 117 func (s *OriginSuite) TestValidateEmptyModelUUID(c *gc.C) { 118 origin := validOrigin 119 origin.ModelUUID = "" 120 121 err := origin.Validate() 122 123 c.Check(err, jc.Satisfies, errors.IsNotValid) 124 c.Check(err, gc.ErrorMatches, `empty ModelUUID`) 125 } 126 127 func (s *OriginSuite) TestValidateBadModelUUID(c *gc.C) { 128 origin := validOrigin 129 origin.ModelUUID = "..." 130 131 err := origin.Validate() 132 133 c.Check(err, jc.Satisfies, errors.IsNotValid) 134 c.Check(err, gc.ErrorMatches, `ModelUUID "..." not a valid UUID`) 135 } 136 137 func (s *OriginSuite) TestValidateEmptyHostname(c *gc.C) { 138 origin := validOrigin 139 origin.Hostname = "" 140 141 err := origin.Validate() 142 143 c.Check(err, jc.ErrorIsNil) 144 } 145 146 func (s *OriginSuite) TestValidateBadOriginType(c *gc.C) { 147 origin := validOrigin 148 origin.Type = logfwd.OriginType(999) 149 150 err := origin.Validate() 151 152 c.Check(err, jc.Satisfies, errors.IsNotValid) 153 c.Check(err, gc.ErrorMatches, `invalid Type: unsupported origin type`) 154 } 155 156 func (s *OriginSuite) TestValidateEmptyName(c *gc.C) { 157 origin := validOrigin 158 origin.Name = "" 159 160 err := origin.Validate() 161 162 c.Check(err, jc.Satisfies, errors.IsNotValid) 163 c.Check(err, gc.ErrorMatches, `empty Name`) 164 } 165 166 func (s *OriginSuite) TestValidateBadName(c *gc.C) { 167 origin := validOrigin 168 origin.Name = "..." 169 170 err := origin.Validate() 171 172 c.Check(err, jc.Satisfies, errors.IsNotValid) 173 c.Check(err, gc.ErrorMatches, `invalid Name "...": bad user name`) 174 } 175 176 func (s *OriginSuite) TestValidateEmptySoftware(c *gc.C) { 177 origin := validOrigin 178 origin.Software = logfwd.Software{} 179 180 err := origin.Validate() 181 182 c.Check(err, jc.ErrorIsNil) 183 } 184 185 func (s *OriginSuite) TestValidateBadSoftware(c *gc.C) { 186 origin := validOrigin 187 origin.Software.Version = version.Zero 188 189 err := origin.Validate() 190 191 c.Check(err, jc.Satisfies, errors.IsNotValid) 192 c.Check(err, gc.ErrorMatches, `invalid Software: empty Version`) 193 } 194 195 var validOrigin = logfwd.Origin{ 196 ControllerUUID: "9f484882-2f18-4fd2-967d-db9663db7bea", 197 ModelUUID: "deadbeef-2f18-4fd2-967d-db9663db7bea", 198 Hostname: "spam.x.y.z.com", 199 Type: logfwd.OriginTypeUser, 200 Name: "a-user", 201 Software: logfwd.Software{ 202 PrivateEnterpriseNumber: 28978, 203 Name: "juju", 204 Version: version.MustParse("2.0.1"), 205 }, 206 }