Merge lp:~dave-cheney/juju-core/104-fix-lp-1298703 into lp:~go-bot/juju-core/trunk

Proposed by Dave Cheney
Status: Merged
Approved by: Dave Cheney
Approved revision: no longer in the source branch.
Merged at revision: 2504
Proposed branch: lp:~dave-cheney/juju-core/104-fix-lp-1298703
Merge into: lp:~go-bot/juju-core/trunk
Diff against target: 51 lines (+15/-9)
2 files modified
state/machine_test.go (+1/-1)
state/unit_test.go (+14/-8)
To merge this branch: bzr merge lp:~dave-cheney/juju-core/104-fix-lp-1298703
Reviewer Review Type Date Requested Status
Juju Engineering Pending
Review via email: mp+213195@code.launchpad.net

Commit message

Fix lp 1298703

One failure was a simple list ordering bug.

The other two more complicated. NewAddress always returns an address with the scope of NetworkUnknown. In that case the results from calling unit.Public/PrivateAddress were essentially random.

It feels like there are some other footguns in this area.

Should NewAddress/NewAddresses create NetworkUnknown Address values ? What happens if they leak into the state and back to the client? How many other places are these things leaking into.

I'd like to explore removing NewAddress/NewAddresses in a followup, if they are used only for testing (axw), then they are doing us a disservice.

Thanks to Ian and Andrew for their assistance

https://codereview.appspot.com/81720043/

Description of the change

Fix lp 1298703

One failure was a simple list ordering bug.

The other two more complicated. NewAddress always returns an address with the scope of NetworkUnknown. In that case the results from calling unit.Public/PrivateAddress were essentially random.

It feels like there are some other footguns in this area.

Should NewAddress/NewAddresses create NetworkUnknown Address values ? What happens if they leak into the state and back to the client? How many other places are these things leaking into.

I'd like to explore removing NewAddress/NewAddresses in a followup, if they are used only for testing (axw), then they are doing us a disservice.

Thanks to Ian and Andrew for their assistance

https://codereview.appspot.com/81720043/

To post a comment you must log in.
Revision history for this message
Dave Cheney (dave-cheney) wrote :

Reviewers: mp+213195_code.launchpad.net,

Message:
Please take a look.

Description:
Fix lp 1298703

One failure was a simple list ordering bug.

The other two more complicated. NewAddress always returns an address
with the scope of NetworkUnknown. In that case the results from calling
unit.Public/PrivateAddress were essentially random.

It feels like there are some other footguns in this area.

Should NewAddress/NewAddresses create NetworkUnknown Address values ?
What happens if they leak into the state and back to the client? How
many other places are these things leaking into.

I'd like to explore removing NewAddress/NewAddresses in a followup, if
they are used only for testing (axw), then they are doing us a
disservice.

Thanks to Ian and Andrew for their assistance

https://code.launchpad.net/~dave-cheney/juju-core/104-fix-lp-1298703/+merge/213195

(do not edit description out of merge proposal)

Please review this at https://codereview.appspot.com/81720043/

Affected files (+17, -9 lines):
   A [revision details]
   M state/machine_test.go
   M state/unit_test.go

Index: [revision details]
=== added file '[revision details]'
--- [revision details] 2012-01-01 00:00:00 +0000
+++ [revision details] 2012-01-01 00:00:00 +0000
@@ -0,0 +1,2 @@
+Old revision: tarmac-20140327203820-qrgltgfsli0ff9ci
+New revision: <email address hidden>

Index: state/machine_test.go
=== modified file 'state/machine_test.go'
--- state/machine_test.go 2014-03-26 11:34:48 +0000
+++ state/machine_test.go 2014-03-28 04:37:31 +0000
@@ -1225,7 +1225,7 @@
   c.Assert(err, gc.IsNil)
   err = machine.Refresh()
   c.Assert(err, gc.IsNil)
- c.Assert(machine.Addresses(), gc.DeepEquals, addresses)
+ c.Assert(machine.Addresses(), jc.SameContents, addresses)
  }

  func (s *MachineSuite) TestSetMachineAddresses(c *gc.C) {

Index: state/unit_test.go
=== modified file 'state/unit_test.go'
--- state/unit_test.go 2014-03-13 07:54:56 +0000
+++ state/unit_test.go 2014-03-28 04:37:31 +0000
@@ -179,10 +179,13 @@
   c.Check(address, gc.Equals, "")
   c.Assert(ok, gc.Equals, false)

- addresses := []instance.Address{
- instance.NewAddress("127.0.0.1"),
- instance.NewAddress("8.8.8.8"),
- }
+ public := instance.NewAddress("8.8.8.8")
+ public.NetworkScope = instance.NetworkPublic
+
+ private := instance.NewAddress("127.0.0.1")
+ private.NetworkScope = instance.NetworkCloudLocal
+
+ addresses := []instance.Address{public, private}
   err = machine.SetAddresses(addresses)
   c.Assert(err, gc.IsNil)

@@ -218,10 +221,13 @@
   c.Check(address, gc.Equals, "")
   c.Assert(ok, gc.Equals, false)

- addresses := []instance.Address{
- instance.NewAddress("127.0.0.1"),
- instance.NewAddress("8.8.8.8"),
- }
+ public := instance.NewAddress("8.8.8.8")
+ public.NetworkScope = instance.NetworkPublic
+
+ private := instance.NewAddress("127.0.0.1")
+ private.NetworkScope = instance.NetworkCloudLocal
+
+ addresses := []instance.Address{public, private}
   err = machine.SetAddresses(addresses)
   c.Assert(err, gc.IsNil)

Revision history for this message
Andrew Wilkins (axwalk) wrote :

On 2014/03/28 04:42:14, dfc wrote:
> Please take a look.

LGTM

+1 to moving NewAddress(es)

There is one non-test place where NewAddress is used, and in that case
it legitimately does not know the address's scope. It would be good to
make that explicit anyhow.

https://codereview.appspot.com/81720043/

Revision history for this message
Go Bot (go-bot) wrote :
Download full text (9.6 KiB)

The attempt to merge lp:~dave-cheney/juju-core/104-fix-lp-1298703 into lp:juju-core failed. Below is the output from the failed tests.

ok launchpad.net/juju-core 0.013s
ok launchpad.net/juju-core/agent 1.097s
ok launchpad.net/juju-core/agent/mongo 0.533s
ok launchpad.net/juju-core/agent/tools 0.211s
ok launchpad.net/juju-core/bzr 5.350s
ok launchpad.net/juju-core/cert 2.250s
ok launchpad.net/juju-core/charm 0.419s
? launchpad.net/juju-core/charm/hooks [no test files]
? launchpad.net/juju-core/charm/testing [no test files]
ok launchpad.net/juju-core/cloudinit 0.027s
ok launchpad.net/juju-core/cloudinit/sshinit 0.797s
ok launchpad.net/juju-core/cmd 0.167s
ok launchpad.net/juju-core/cmd/charm-admin 0.751s
? launchpad.net/juju-core/cmd/charmd [no test files]
? launchpad.net/juju-core/cmd/charmload [no test files]
ok launchpad.net/juju-core/cmd/juju 198.681s
ok launchpad.net/juju-core/cmd/jujud 64.359s
ok launchpad.net/juju-core/cmd/plugins/juju-metadata 6.749s
? launchpad.net/juju-core/cmd/plugins/juju-restore [no test files]
ok launchpad.net/juju-core/cmd/plugins/local 0.214s
? launchpad.net/juju-core/cmd/plugins/local/juju-local [no test files]
ok launchpad.net/juju-core/constraints 0.020s
ok launchpad.net/juju-core/container 0.051s
ok launchpad.net/juju-core/container/factory 0.053s
ok launchpad.net/juju-core/container/kvm 0.180s
ok launchpad.net/juju-core/container/kvm/mock 0.039s
? launchpad.net/juju-core/container/kvm/testing [no test files]
ok launchpad.net/juju-core/container/lxc 4.273s
? launchpad.net/juju-core/container/lxc/mock [no test files]
? launchpad.net/juju-core/container/lxc/testing [no test files]
? launchpad.net/juju-core/container/testing [no test files]
ok launchpad.net/juju-core/downloader 5.229s
ok launchpad.net/juju-core/environs 2.294s
ok launchpad.net/juju-core/environs/bootstrap 10.226s
ok launchpad.net/juju-core/environs/cloudinit 0.464s
ok launchpad.net/juju-core/environs/config 2.395s
ok launchpad.net/juju-core/environs/configstore 0.026s
ok launchpad.net/juju-core/environs/filestorage 0.027s
ok launchpad.net/juju-core/environs/httpstorage 0.682s
ok launchpad.net/juju-core/environs/imagemetadata 0.432s
? launchpad.net/juju-core/environs/imagemetadata/testing [no test files]
ok launchpad.net/juju-core/environs/instances 0.044s
ok launchpad.net/juju-core/environs/jujutest 0.152s
ok launchpad.net/juju-core/environs/manual 11.840s
ok launchpad.net/juju-core/environs/simplestreams 0.289s
? launchpad.net/juju-core/environs/simplestreams/testing [no test files]
ok launchpad.net/juju-core/environs/sshstorage 0.985s
ok launchpad.net/juju-core/environs/storage 0.897s
ok launchpad.net/juju-core/environs/sync 44.217s
ok launchpad.net/juju-core/environs/testing 0.133s
ok launchpad.net/juju-core/environs/tools 4.917s
? launchpad.net/juju-core/environs/tools/testing [no test files]
ok launchpad.net/juju-core/errors 0.011s
ok launchpad.net/juju-core/instance 0.017s
? launchpad.net/juju-core/instance/testing [no test files]
ok launchpad.net/juju-core/juju 19.130s
ok launchpad.net/juju-core/juju/arch 0.022...

Read more...

Revision history for this message
Go Bot (go-bot) wrote :
Download full text (9.6 KiB)

The attempt to merge lp:~dave-cheney/juju-core/104-fix-lp-1298703 into lp:juju-core failed. Below is the output from the failed tests.

ok launchpad.net/juju-core 0.031s
ok launchpad.net/juju-core/agent 0.632s
ok launchpad.net/juju-core/agent/mongo 0.535s
ok launchpad.net/juju-core/agent/tools 0.188s
ok launchpad.net/juju-core/bzr 5.134s
ok launchpad.net/juju-core/cert 2.503s
ok launchpad.net/juju-core/charm 0.425s
? launchpad.net/juju-core/charm/hooks [no test files]
? launchpad.net/juju-core/charm/testing [no test files]
ok launchpad.net/juju-core/cloudinit 0.033s
ok launchpad.net/juju-core/cloudinit/sshinit 0.759s
ok launchpad.net/juju-core/cmd 0.175s
ok launchpad.net/juju-core/cmd/charm-admin 0.746s
? launchpad.net/juju-core/cmd/charmd [no test files]
? launchpad.net/juju-core/cmd/charmload [no test files]
ok launchpad.net/juju-core/cmd/juju 200.275s
ok launchpad.net/juju-core/cmd/jujud 64.588s
ok launchpad.net/juju-core/cmd/plugins/juju-metadata 8.473s
? launchpad.net/juju-core/cmd/plugins/juju-restore [no test files]
ok launchpad.net/juju-core/cmd/plugins/local 0.141s
? launchpad.net/juju-core/cmd/plugins/local/juju-local [no test files]
ok launchpad.net/juju-core/constraints 0.022s
ok launchpad.net/juju-core/container 0.047s
ok launchpad.net/juju-core/container/factory 0.045s
ok launchpad.net/juju-core/container/kvm 0.275s
ok launchpad.net/juju-core/container/kvm/mock 0.051s
? launchpad.net/juju-core/container/kvm/testing [no test files]
ok launchpad.net/juju-core/container/lxc 4.307s
? launchpad.net/juju-core/container/lxc/mock [no test files]
? launchpad.net/juju-core/container/lxc/testing [no test files]
? launchpad.net/juju-core/container/testing [no test files]
ok launchpad.net/juju-core/downloader 5.235s
ok launchpad.net/juju-core/environs 2.062s
ok launchpad.net/juju-core/environs/bootstrap 11.014s
ok launchpad.net/juju-core/environs/cloudinit 0.498s
ok launchpad.net/juju-core/environs/config 1.721s
ok launchpad.net/juju-core/environs/configstore 0.032s
ok launchpad.net/juju-core/environs/filestorage 0.027s
ok launchpad.net/juju-core/environs/httpstorage 0.719s
ok launchpad.net/juju-core/environs/imagemetadata 0.421s
? launchpad.net/juju-core/environs/imagemetadata/testing [no test files]
ok launchpad.net/juju-core/environs/instances 0.043s
ok launchpad.net/juju-core/environs/jujutest 0.177s
ok launchpad.net/juju-core/environs/manual 10.618s
ok launchpad.net/juju-core/environs/simplestreams 0.319s
? launchpad.net/juju-core/environs/simplestreams/testing [no test files]
ok launchpad.net/juju-core/environs/sshstorage 0.938s
ok launchpad.net/juju-core/environs/storage 0.924s
ok launchpad.net/juju-core/environs/sync 43.345s
ok launchpad.net/juju-core/environs/testing 0.169s
ok launchpad.net/juju-core/environs/tools 4.716s
? launchpad.net/juju-core/environs/tools/testing [no test files]
ok launchpad.net/juju-core/errors 0.016s
ok launchpad.net/juju-core/instance 0.027s
? launchpad.net/juju-core/instance/testing [no test files]
ok launchpad.net/juju-core/juju 18.900s
ok launchpad.net/juju-core/juju/arch 0.014...

Read more...

Revision history for this message
Dave Cheney (dave-cheney) wrote :

Bullshit!

On Fri, Mar 28, 2014 at 6:58 PM, Go Bot <email address hidden> wrote:
> The proposal to merge lp:~dave-cheney/juju-core/104-fix-lp-1298703 into lp:juju-core has been updated.
>
> Status: Approved => Needs review
>
> For more details, see:
> https://code.launchpad.net/~dave-cheney/juju-core/104-fix-lp-1298703/+merge/213195
> --
> https://code.launchpad.net/~dave-cheney/juju-core/104-fix-lp-1298703/+merge/213195
> You are the owner of lp:~dave-cheney/juju-core/104-fix-lp-1298703.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'state/machine_test.go'
2--- state/machine_test.go 2014-03-26 11:34:48 +0000
3+++ state/machine_test.go 2014-03-28 04:41:50 +0000
4@@ -1225,7 +1225,7 @@
5 c.Assert(err, gc.IsNil)
6 err = machine.Refresh()
7 c.Assert(err, gc.IsNil)
8- c.Assert(machine.Addresses(), gc.DeepEquals, addresses)
9+ c.Assert(machine.Addresses(), jc.SameContents, addresses)
10 }
11
12 func (s *MachineSuite) TestSetMachineAddresses(c *gc.C) {
13
14=== modified file 'state/unit_test.go'
15--- state/unit_test.go 2014-03-13 07:54:56 +0000
16+++ state/unit_test.go 2014-03-28 04:41:50 +0000
17@@ -179,10 +179,13 @@
18 c.Check(address, gc.Equals, "")
19 c.Assert(ok, gc.Equals, false)
20
21- addresses := []instance.Address{
22- instance.NewAddress("127.0.0.1"),
23- instance.NewAddress("8.8.8.8"),
24- }
25+ public := instance.NewAddress("8.8.8.8")
26+ public.NetworkScope = instance.NetworkPublic
27+
28+ private := instance.NewAddress("127.0.0.1")
29+ private.NetworkScope = instance.NetworkCloudLocal
30+
31+ addresses := []instance.Address{public, private}
32 err = machine.SetAddresses(addresses)
33 c.Assert(err, gc.IsNil)
34
35@@ -218,10 +221,13 @@
36 c.Check(address, gc.Equals, "")
37 c.Assert(ok, gc.Equals, false)
38
39- addresses := []instance.Address{
40- instance.NewAddress("127.0.0.1"),
41- instance.NewAddress("8.8.8.8"),
42- }
43+ public := instance.NewAddress("8.8.8.8")
44+ public.NetworkScope = instance.NetworkPublic
45+
46+ private := instance.NewAddress("127.0.0.1")
47+ private.NetworkScope = instance.NetworkCloudLocal
48+
49+ addresses := []instance.Address{public, private}
50 err = machine.SetAddresses(addresses)
51 c.Assert(err, gc.IsNil)
52

Subscribers

People subscribed via source and target branches

to status/vote changes: