Merge lp:~wwitzel3/juju-core/009-ha-rsyslog-api into lp:~go-bot/juju-core/trunk
- 009-ha-rsyslog-api
- Merge into trunk
Status: | Rejected |
---|---|
Rejected by: | William Reade |
Proposed branch: | lp:~wwitzel3/juju-core/009-ha-rsyslog-api |
Merge into: | lp:~go-bot/juju-core/trunk |
Diff against target: |
11321 lines (+1960/-2544) 251 files modified
agent/agent_test.go (+2/-2) agent/bootstrap_test.go (+6/-5) agent/format-1.16_whitebox_test.go (+2/-2) agent/format-1.18_whitebox_test.go (+2/-2) agent/format_whitebox_test.go (+2/-2) agent/identity_test.go (+2/-2) agent/mongo/export_test.go (+0/-18) agent/mongo/mongo.go (+0/-2) agent/mongo/mongo_test.go (+29/-53) agent/mongo/upgrade.go (+0/-5) agent/mongo/upgrade_test.go (+11/-57) agent/tools/diskmanager_test.go (+3/-2) agent/tools/tools_test.go (+2/-2) bzr/bzr_test.go (+5/-5) charm/dir_test.go (+2/-1) cloudinit/cloudinit_test.go (+2/-2) cloudinit/sshinit/configure_test.go (+2/-1) cmd/charm-admin/config_test.go (+4/-3) cmd/charm-admin/deletecharm_test.go (+4/-3) cmd/envcmd/environmentcommand_test.go (+13/-11) cmd/filevar_test.go (+1/-2) cmd/juju/authorizedkeys_test.go (+13/-1) cmd/juju/bootstrap_test.go (+31/-23) cmd/juju/cmd_test.go (+3/-1) cmd/juju/debuglog_test.go (+1/-1) cmd/juju/deploy.go (+9/-26) cmd/juju/help_topics.go (+8/-9) cmd/juju/helptool_test.go (+9/-1) cmd/juju/init_test.go (+5/-11) cmd/juju/main.go (+0/-3) cmd/juju/main_test.go (+4/-2) cmd/juju/plugin_test.go (+7/-3) cmd/juju/publish_test.go (+9/-6) cmd/juju/run_test.go (+1/-1) cmd/juju/switch_test.go (+20/-21) cmd/juju/synctools_test.go (+7/-4) cmd/juju/user.go (+0/-35) cmd/juju/user_test.go (+0/-42) cmd/jujud/agent_test.go (+3/-2) cmd/jujud/bootstrap_test.go (+6/-5) cmd/jujud/machine.go (+3/-5) cmd/jujud/machine_test.go (+22/-45) cmd/jujud/run_test.go (+2/-1) cmd/jujud/upgrade_test.go (+2/-2) cmd/plugins/juju-metadata/imagemetadata_test.go (+18/-7) cmd/plugins/juju-metadata/metadataplugin_test.go (+9/-1) cmd/plugins/juju-metadata/toolsmetadata_test.go (+6/-2) cmd/plugins/juju-metadata/validateimagemetadata_test.go (+10/-3) cmd/plugins/juju-metadata/validatetoolsmetadata_test.go (+10/-3) cmd/plugins/local/main_test.go (+2/-1) constraints/validation_test.go (+1/-1) container/directory_test.go (+3/-3) container/factory/factory_test.go (+2/-2) container/kvm/kvm_test.go (+2/-2) container/kvm/live_test.go (+3/-2) container/kvm/mock/mock-kvm_test.go (+2/-2) container/kvm/testing/test.go (+3/-3) container/lxc/export_test.go (+0/-8) container/lxc/initialisation_test.go (+2/-2) container/lxc/lxc.go (+4/-30) container/lxc/lxc_test.go (+5/-67) container/lxc/testing/test.go (+3/-3) doc.go (+0/-10) doc/how-to-write-tests.txt (+19/-26) downloader/downloader_test.go (+6/-5) environs/bootstrap/bootstrap_test.go (+7/-3) environs/bootstrap/interruptiblestorage_test.go (+2/-2) environs/bootstrap/state_test.go (+2/-2) environs/cloudinit/cloudinit_test.go (+2/-1) environs/cloudinit_test.go (+2/-1) environs/config.go (+0/-8) environs/config/authkeys_test.go (+4/-4) environs/config/config.go (+11/-33) environs/config/config_test.go (+58/-97) environs/config_test.go (+16/-16) environs/configstore/disk_test.go (+2/-2) environs/configstore/interface_test.go (+2/-2) environs/emptystorage_test.go (+8/-8) environs/httpstorage/backend_test.go (+2/-1) environs/imagemetadata/generate_test.go (+2/-2) environs/imagemetadata/marshal_test.go (+2/-2) environs/imagemetadata/upload_test.go (+2/-2) environs/imagemetadata/urls_test.go (+6/-3) environs/imagemetadata/validation_test.go (+3/-3) environs/instances/image.go (+19/-44) environs/instances/image_test.go (+49/-96) environs/instances/instancetype_test.go (+2/-2) environs/jujutest/livetests.go (+18/-4) environs/jujutest/tests.go (+8/-4) environs/manual/addresses_test.go (+2/-2) environs/manual/init_test.go (+2/-2) environs/open_test.go (+20/-19) environs/simplestreams/testing/testing.go (+4/-4) environs/sshstorage/storage_test.go (+3/-3) environs/storage/storage_test.go (+3/-4) environs/sync/sync_test.go (+9/-9) environs/testing/tools.go (+0/-25) environs/tools/build_test.go (+4/-4) environs/tools/storage_test.go (+4/-4) environs/tools/tools_test.go (+5/-5) environs/tools/urls_test.go (+6/-3) environs/tools/validation_test.go (+3/-3) instance/address_test.go (+2/-2) juju/apiconn_test.go (+26/-19) juju/arch/arch.go (+0/-15) juju/arch/arch_test.go (+2/-9) juju/conn_test.go (+69/-14) juju/osenv/export_test.go (+0/-7) juju/osenv/proxy_test.go (+2/-2) juju/osenv/vars_test.go (+17/-18) juju/testing/conn.go (+7/-6) provider/azure/azure_test.go (+6/-6) provider/azure/config_test.go (+2/-1) provider/azure/customdata_test.go (+2/-1) provider/azure/instance_test.go (+2/-2) provider/common/bootstrap_test.go (+3/-3) provider/common/destroy_test.go (+2/-2) provider/common/state_test.go (+2/-1) provider/common/supportedarchitectures_test.go (+1/-1) provider/dummy/config_test.go (+3/-2) provider/dummy/environs.go (+1/-1) provider/dummy/environs_test.go (+4/-38) provider/ec2/config_test.go (+4/-3) provider/ec2/image_test.go (+23/-7) provider/ec2/live_test.go (+7/-6) provider/ec2/local_test.go (+9/-11) provider/joyent/config_test.go (+3/-3) provider/joyent/export_test.go (+0/-1) provider/joyent/joyent_test.go (+6/-5) provider/joyent/live_test.go (+94/-0) provider/joyent/local_test.go (+29/-22) provider/joyent/provider_test.go (+6/-0) provider/local/config.go (+14/-0) provider/local/environ.go (+3/-6) provider/local/environ_test.go (+0/-4) provider/local/environprovider.go (+7/-0) provider/local/environprovider_test.go (+88/-2) provider/local/export_test.go (+2/-0) provider/local/local_test.go (+2/-2) provider/local/lxc.go (+30/-0) provider/local/lxc_test.go (+53/-0) provider/local/prereqs_test.go (+3/-3) provider/maas/config_test.go (+2/-1) provider/maas/environ_test.go (+6/-5) provider/maas/environ_whitebox_test.go (+0/-8) provider/maas/export_test.go (+0/-64) provider/maas/maas_test.go (+6/-5) provider/manual/config_test.go (+1/-1) provider/manual/environ_test.go (+2/-2) provider/manual/provider_test.go (+2/-2) provider/openstack/config_test.go (+8/-4) provider/openstack/export_test.go (+0/-21) provider/openstack/live_test.go (+6/-5) provider/openstack/storage.go (+4/-3) replicaset/replicaset.go (+3/-29) rpc/jsoncodec/codec_test.go (+2/-2) rpc/reflect_test.go (+2/-2) rpc/rpc_test.go (+2/-2) state/api/params/params.go (+7/-0) state/api/provisioner/provisioner_test.go (+13/-31) state/api/rsyslog/rsyslog.go (+51/-6) state/api/rsyslog/rsyslog_test.go (+57/-13) state/api/state_test.go (+2/-1) state/apiserver/admin.go (+1/-2) state/apiserver/client/client.go (+3/-1) state/apiserver/client/run.go (+2/-11) state/apiserver/common/environwatcher_test.go (+3/-2) state/apiserver/common/errors_test.go (+2/-2) state/apiserver/common/resource.go (+0/-33) state/apiserver/common/resource_test.go (+0/-59) state/apiserver/debuglog_internal_test.go (+2/-1) state/apiserver/pinger_test.go (+0/-19) state/apiserver/provisioner/provisioner.go (+1/-6) state/apiserver/root.go (+13/-11) state/apiserver/root_test.go (+1/-16) state/apiserver/rsyslog/config.go (+34/-0) state/apiserver/rsyslog/rsyslog.go (+60/-2) state/apiserver/rsyslog/rsyslog_test.go (+48/-11) state/apiserver/upgrader/unitupgrader.go (+3/-0) state/apiserver/upgrader/unitupgrader_test.go (+6/-6) state/compat_test.go (+6/-5) state/conn_test.go (+6/-5) state/initialize_test.go (+6/-5) state/megawatcher_internal_test.go (+6/-5) state/multiwatcher/multiwatcher_internal_test.go (+3/-3) state/presence/presence_test.go (+6/-5) state/settings_test.go (+6/-5) state/watcher/watcher_test.go (+6/-5) store/config_test.go (+4/-4) testing/base.go (+0/-126) testing/base_test.go (+0/-40) testing/environ.go (+155/-44) testing/environ_test.go (+0/-54) testing/filetesting/filetesting_test.go (+3/-3) testing/git.go (+3/-2) testing/mgo_test.go (+6/-5) upgrades/deprecatedenvsettings.go (+0/-1) upgrades/dotprofile_test.go (+2/-2) upgrades/lockdirectory_test.go (+2/-2) upgrades/steps118_test.go (+2/-2) upgrades/upgrade_test.go (+2/-1) upstart/upstart_test.go (+2/-2) utils/apt_test.go (+2/-2) utils/command_test.go (+2/-2) utils/exec/exec_test.go (+2/-2) utils/export_test.go (+0/-2) utils/fslock/fslock_test.go (+3/-2) utils/gomaxprocs_test.go (+3/-3) utils/http.go (+0/-27) utils/http_test.go (+6/-53) utils/registry/export_test.go (+0/-8) utils/registry/package_test.go (+0/-14) utils/registry/registry.go (+0/-105) utils/registry/registry_test.go (+0/-151) utils/shell/script_test.go (+2/-2) utils/ssh/authorisedkeys_test.go (+9/-2) utils/ssh/clientkeys_test.go (+5/-2) utils/ssh/fingerprint_test.go (+2/-2) utils/ssh/generate_test.go (+2/-2) utils/ssh/run_test.go (+3/-2) utils/ssh/ssh_gocrypto_test.go (+3/-3) utils/ssh/ssh_test.go (+3/-3) utils/tailer/tailer_test.go (+2/-1) utils/voyeur/value_test.go (+4/-4) utils/zip/zip_test.go (+2/-2) version/osversion_darwin_test.go (+2/-2) version/osversion_test.go (+3/-3) version/ubuntu/supportedseries_test.go (+2/-2) version/version_test.go (+4/-4) worker/deployer/simple_test.go (+4/-3) worker/instancepoller/aggregate_test.go (+26/-48) worker/instancepoller/machine_test.go (+2/-1) worker/instancepoller/updater_test.go (+2/-1) worker/notifyworker_test.go (+4/-3) worker/peergrouper/desired_test.go (+2/-2) worker/peergrouper/initiate_test.go (+2/-1) worker/peergrouper/worker_test.go (+3/-2) worker/provisioner/lxc-broker_test.go (+2/-2) worker/rsyslog/rsyslog_test.go (+24/-47) worker/rsyslog/worker.go (+9/-13) worker/runner_test.go (+4/-4) worker/simpleworker_test.go (+2/-2) worker/singular/mongo_test.go (+2/-1) worker/singular/singular_test.go (+2/-1) worker/stringsworker_test.go (+4/-3) worker/terminationworker/worker_test.go (+4/-4) worker/uniter/charm/manifest_deployer_test.go (+3/-3) worker/uniter/debug/server_test.go (+2/-2) worker/uniter/jujuc/server_test.go (+4/-3) worker/uniter/jujuc/util_test.go (+5/-5) worker/uniter/runlistener_test.go (+2/-2) |
To merge this branch: | bzr merge lp:~wwitzel3/juju-core/009-ha-rsyslog-api |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Juju Engineering | Pending | ||
Review via email: mp+219703@code.launchpad.net |
Commit message
rsyslog: ensure logs accumulate on state machines
Added a WatchForRsyslog
GetRsyslogConfig. Changed the rsyslog worker to use these additions.
Description of the change
rsyslog: ensure logs accumulate on state machines
Added a WatchForRsyslog
GetRsyslogConfig. Changed the rsyslog worker to use these additions.
Wayne Witzel III (wwitzel3) wrote : | # |
Wayne Witzel III (wwitzel3) wrote : | # |
https:/
File state/api/
https:/
state/api/
of an GetRsyslogConfig
s/an/a
Michael Foord (mfoord) wrote : | # |
https:/
File state/api/
https:/
state/api/
That's a debugging Printf I guess...
Wayne Witzel III (wwitzel3) wrote : | # |
Please take a look.
Wayne Witzel III (wwitzel3) wrote : | # |
Manually tested many scenarios against virtual maas and ec2. Including
going from non-HA to HA with units deployed and not deployed.
William Reade (fwereade) wrote : | # |
I think this is generally solid but I have a few questions.
https:/
File state/api/
https:/
state/api/
/eyebrow
Why do we need both port and hostports?
https:/
File state/apiserver
https:/
state/apiserver
api.st.
ISTM that this won't trigger on rsyslog-ca-cert changes.
I guess I'm out of date re: rsyslog-ca-cert -- would you ping me when
you're online so we can discuss?
https:/
File worker/
https:/
worker/
Do we need tag? I *think* it's implicit in the connection. Probably I'm
wrong?
Michael Foord (mfoord) wrote : | # |
On 2014/05/16 09:21:24, fwereade wrote:
> I think this is generally solid but I have a few questions.
https:/
> File state/api/
https:/
> state/api/
> /eyebrow
> Why do we need both port and hostports?
We could lose Port, we kept it mainly because that's how the *existing*
system works.
https:/
> File state/apiserver
https:/
> state/apiserver
api.st.
> ISTM that this won't trigger on rsyslog-ca-cert changes.
> I guess I'm out of date re: rsyslog-ca-cert -- would you ping me when
you're
> online so we can discuss?
So we had a big discussion about this issue (is watching APIHostPorts
alone sufficient or not)?
No-one wanted to commit to an answer, but the consensus seemed to be if
we're treating the rsyslog config entries as "immutable once set" then
watching APIHostPorts alone to trigger rsyslog config rewriting should
be enough. And it works for the scenarios we've manually tested:
* non-HA with unit deployed
* HA without units
* HA then units deployed
* non-HA with units deployed then ensure-availability
rsyslog config is rewritten in all these cases and logging happens
correctly, so the only wrinkle would be if the rsyslog config can be
written out *before* the certificate is set for the first time on
bootstrap - in which case it wouldn't be rewritten. When we asked nobody
thought that was likely, but no-one would *commit* to it being
impossible, however "they" (jam and natefinch) did think that if we're
treating the rsyslog config as "immutable once set" then watching just
APIHostPorts *should* be sufficient. So that's what we did.
https:/
> File worker/
https:/
> worker/
h.st.WatchForRs
> Do we need tag? I *think* it's implicit in the connection. Probably
I'm wrong?
It is sent by other code, so we sent it. We don't need it in our API
endpoint itself.
Michael Foord (mfoord) wrote : | # |
On 2014/05/16 10:34:34, mfoord wrote:
> On 2014/05/16 09:21:24, fwereade wrote:
> > I think this is generally solid but I have a few questions.
> >
> >
https:/
> > File state/api/
> >
> >
https:/
> > state/api/
> > /eyebrow
> >
> > Why do we need both port and hostports?
> >
> We could lose Port, we kept it mainly because that's how the
*existing* system
> works.
And in fact we store the rsyslogPort in the EnvironConfig, so we
probably still need it for backwards compatibility without a bigger
refactor than *strictly* necessary at this stage. If you'd like us to do
that refactor now we can.
We probably should still use the HostPorts for the template rendering
which we haven't yet done.
Michael Foord (mfoord) wrote : | # |
https:/
File worker/
https:/
worker/
rsyslogCACert == h.rsyslogCACert {
This will actually screw us over. If APIHosts changes, but not the port
nor the cert, then the conf won't get rewritten. So this needs to
change.
Michael Foord (mfoord) wrote : | # |
On 2014/05/19 10:02:47, mfoord wrote:
https:/
> File worker/
https:/
> worker/
rsyslogCACert ==
> h.rsyslogCACert {
> This will actually screw us over. If APIHosts changes, but not the
port nor the
> cert, then the conf won't get rewritten. So this needs to change.
Note that I've removed this in a separate branch, along with an obsolete
test that now fails, in the following branch:
https:/
Andrew Wilkins (axw) is fairly certain that by the time the
rsyslogworker is created the port is in the environment, and starting
the rsyslog worker already ensures the ca-cert will be available, so
just watching APIHostPorts should be safe (regarding rsyslog config
writing and restarting).
Wayne Witzel III (wwitzel3) wrote : | # |
Please take a look.
William Reade (fwereade) wrote : | # |
Last few changes, otherwise looking good. Thanks.
https:/
File state/api/
https:/
state/api/
please document that Port is just there for compatibility, and capable
clients should trust the HostPorts.
https:/
File state/api/
https:/
state/api/
I think you can completely drop Port from this one, right?
https:/
File state/apiserver
https:/
state/apiserver
SetRsyslogCert(args params.
error) {
This still bugs me but it's not actionable right now.
https:/
File state/apiserver
https:/
state/apiserver
&& !authorizer.
do we have an AuthAgent? maybe we should
https:/
state/apiserver
GetRsyslogConfig() (params.
Heh, almost missed this. Please make it bulky, like
WatchForRsyslog
prefer to remain consistent.
Michael Foord (mfoord) wrote : | # |
On 2014/05/21 08:06:30, fwereade wrote:
> Last few changes, otherwise looking good. Thanks.
https:/
> File state/api/
https:/
> state/api/
> please document that Port is just there for compatibility, and capable
clients
> should trust the HostPorts.
The Port is there for state servers to know which port to listen on. It
isn't used by units. I've added a note to this effect.
https:/
> File state/api/
https:/
> state/api/
> I think you can completely drop Port from this one, right?
As discussed we can't drop this until state servers have a mechanism for
picking a port and storing it in the state, so that GetRsyslogConfig can
then return the right information in HostPorts. I've added a note that
the Port is only for state servers to know which port to listen on.
https:/
> File state/apiserver
https:/
> state/apiserver
> SetRsyslogCert(args params.
error) {
> This still bugs me but it's not actionable right now.
Right.
https:/
> File state/apiserver
https:/
> state/apiserver
!authorizer.
> !authorizer.
> do we have an AuthAgent? maybe we should
We don't. Adding it was more trouble that it was worth for a single use
case. John is working on making srvRoot more testable, so if we see
another use case for this method it can be added then.
https:/
> state/apiserver
GetRsyslogConfig()
> (params.
> Heh, almost missed this. Please make it bulky, like
WatchForRsyslog
> below; I can't see when we'll need it but I'd prefer to remain
consistent.
Ok, working on this. Also some test failures I see with the current
state of this branch.
- 2747. By Wayne Witzel III
-
merge mfoord
- 2748. By Wayne Witzel III
-
revert merge
- 2749. By Wayne Witzel III
-
merge mfoord
- 2750. By Wayne Witzel III
-
merge trunk
Michael Foord (mfoord) wrote : | # |
Unfortunately we mangled this branch, so will repropose from this
branch:
https:/
Michael Foord (mfoord) wrote : | # |
On 2014/05/22 15:25:43, mfoord wrote:
> Unfortunately we mangled this branch, so will repropose from this
branch:
https:/
Superseded by: https:/
William Reade (fwereade) wrote : | # |
Rejecting because dead.
Unmerged revisions
- 2750. By Wayne Witzel III
-
merge trunk
- 2749. By Wayne Witzel III
-
merge mfoord
- 2748. By Wayne Witzel III
-
revert merge
- 2747. By Wayne Witzel III
-
merge mfoord
Preview Diff
1 | === modified file 'agent/agent_test.go' | |||
2 | --- agent/agent_test.go 2014-05-20 04:27:02 +0000 | |||
3 | +++ agent/agent_test.go 2014-05-22 14:33:28 +0000 | |||
4 | @@ -15,12 +15,12 @@ | |||
5 | 15 | "launchpad.net/juju-core/state" | 15 | "launchpad.net/juju-core/state" |
6 | 16 | "launchpad.net/juju-core/state/api" | 16 | "launchpad.net/juju-core/state/api" |
7 | 17 | "launchpad.net/juju-core/state/api/params" | 17 | "launchpad.net/juju-core/state/api/params" |
9 | 18 | "launchpad.net/juju-core/testing" | 18 | "launchpad.net/juju-core/testing/testbase" |
10 | 19 | "launchpad.net/juju-core/version" | 19 | "launchpad.net/juju-core/version" |
11 | 20 | ) | 20 | ) |
12 | 21 | 21 | ||
13 | 22 | type suite struct { | 22 | type suite struct { |
15 | 23 | testing.BaseSuite | 23 | testbase.LoggingSuite |
16 | 24 | } | 24 | } |
17 | 25 | 25 | ||
18 | 26 | var _ = gc.Suite(&suite{}) | 26 | var _ = gc.Suite(&suite{}) |
19 | 27 | 27 | ||
20 | === modified file 'agent/bootstrap_test.go' | |||
21 | --- agent/bootstrap_test.go 2014-05-20 04:27:02 +0000 | |||
22 | +++ agent/bootstrap_test.go 2014-05-22 14:33:28 +0000 | |||
23 | @@ -16,35 +16,36 @@ | |||
24 | 16 | "launchpad.net/juju-core/state" | 16 | "launchpad.net/juju-core/state" |
25 | 17 | "launchpad.net/juju-core/state/api/params" | 17 | "launchpad.net/juju-core/state/api/params" |
26 | 18 | "launchpad.net/juju-core/testing" | 18 | "launchpad.net/juju-core/testing" |
27 | 19 | "launchpad.net/juju-core/testing/testbase" | ||
28 | 19 | "launchpad.net/juju-core/utils" | 20 | "launchpad.net/juju-core/utils" |
29 | 20 | "launchpad.net/juju-core/version" | 21 | "launchpad.net/juju-core/version" |
30 | 21 | ) | 22 | ) |
31 | 22 | 23 | ||
32 | 23 | type bootstrapSuite struct { | 24 | type bootstrapSuite struct { |
34 | 24 | testing.BaseSuite | 25 | testbase.LoggingSuite |
35 | 25 | testing.MgoSuite | 26 | testing.MgoSuite |
36 | 26 | } | 27 | } |
37 | 27 | 28 | ||
38 | 28 | var _ = gc.Suite(&bootstrapSuite{}) | 29 | var _ = gc.Suite(&bootstrapSuite{}) |
39 | 29 | 30 | ||
40 | 30 | func (s *bootstrapSuite) SetUpSuite(c *gc.C) { | 31 | func (s *bootstrapSuite) SetUpSuite(c *gc.C) { |
42 | 31 | s.BaseSuite.SetUpSuite(c) | 32 | s.LoggingSuite.SetUpSuite(c) |
43 | 32 | s.MgoSuite.SetUpSuite(c) | 33 | s.MgoSuite.SetUpSuite(c) |
44 | 33 | } | 34 | } |
45 | 34 | 35 | ||
46 | 35 | func (s *bootstrapSuite) TearDownSuite(c *gc.C) { | 36 | func (s *bootstrapSuite) TearDownSuite(c *gc.C) { |
47 | 36 | s.MgoSuite.TearDownSuite(c) | 37 | s.MgoSuite.TearDownSuite(c) |
49 | 37 | s.BaseSuite.TearDownSuite(c) | 38 | s.LoggingSuite.TearDownSuite(c) |
50 | 38 | } | 39 | } |
51 | 39 | 40 | ||
52 | 40 | func (s *bootstrapSuite) SetUpTest(c *gc.C) { | 41 | func (s *bootstrapSuite) SetUpTest(c *gc.C) { |
54 | 41 | s.BaseSuite.SetUpTest(c) | 42 | s.LoggingSuite.SetUpTest(c) |
55 | 42 | s.MgoSuite.SetUpTest(c) | 43 | s.MgoSuite.SetUpTest(c) |
56 | 43 | } | 44 | } |
57 | 44 | 45 | ||
58 | 45 | func (s *bootstrapSuite) TearDownTest(c *gc.C) { | 46 | func (s *bootstrapSuite) TearDownTest(c *gc.C) { |
59 | 46 | s.MgoSuite.TearDownTest(c) | 47 | s.MgoSuite.TearDownTest(c) |
61 | 47 | s.BaseSuite.TearDownTest(c) | 48 | s.LoggingSuite.TearDownTest(c) |
62 | 48 | } | 49 | } |
63 | 49 | 50 | ||
64 | 50 | func (s *bootstrapSuite) TestInitializeState(c *gc.C) { | 51 | func (s *bootstrapSuite) TestInitializeState(c *gc.C) { |
65 | 51 | 52 | ||
66 | === modified file 'agent/format-1.16_whitebox_test.go' | |||
67 | --- agent/format-1.16_whitebox_test.go 2014-05-20 04:27:02 +0000 | |||
68 | +++ agent/format-1.16_whitebox_test.go 2014-05-22 14:33:28 +0000 | |||
69 | @@ -14,13 +14,13 @@ | |||
70 | 14 | jc "github.com/juju/testing/checkers" | 14 | jc "github.com/juju/testing/checkers" |
71 | 15 | 15 | ||
72 | 16 | gc "launchpad.net/gocheck" | 16 | gc "launchpad.net/gocheck" |
74 | 17 | "launchpad.net/juju-core/testing" | 17 | "launchpad.net/juju-core/testing/testbase" |
75 | 18 | "launchpad.net/juju-core/utils" | 18 | "launchpad.net/juju-core/utils" |
76 | 19 | "launchpad.net/juju-core/version" | 19 | "launchpad.net/juju-core/version" |
77 | 20 | ) | 20 | ) |
78 | 21 | 21 | ||
79 | 22 | type format_1_16Suite struct { | 22 | type format_1_16Suite struct { |
81 | 23 | testing.BaseSuite | 23 | testbase.LoggingSuite |
82 | 24 | } | 24 | } |
83 | 25 | 25 | ||
84 | 26 | var _ = gc.Suite(&format_1_16Suite{}) | 26 | var _ = gc.Suite(&format_1_16Suite{}) |
85 | 27 | 27 | ||
86 | === modified file 'agent/format-1.18_whitebox_test.go' | |||
87 | --- agent/format-1.18_whitebox_test.go 2014-05-20 04:27:02 +0000 | |||
88 | +++ agent/format-1.18_whitebox_test.go 2014-05-22 14:33:28 +0000 | |||
89 | @@ -14,13 +14,13 @@ | |||
90 | 14 | 14 | ||
91 | 15 | gc "launchpad.net/gocheck" | 15 | gc "launchpad.net/gocheck" |
92 | 16 | "launchpad.net/juju-core/state/api/params" | 16 | "launchpad.net/juju-core/state/api/params" |
94 | 17 | "launchpad.net/juju-core/testing" | 17 | "launchpad.net/juju-core/testing/testbase" |
95 | 18 | "launchpad.net/juju-core/utils" | 18 | "launchpad.net/juju-core/utils" |
96 | 19 | "launchpad.net/juju-core/version" | 19 | "launchpad.net/juju-core/version" |
97 | 20 | ) | 20 | ) |
98 | 21 | 21 | ||
99 | 22 | type format_1_18Suite struct { | 22 | type format_1_18Suite struct { |
101 | 23 | testing.BaseSuite | 23 | testbase.LoggingSuite |
102 | 24 | } | 24 | } |
103 | 25 | 25 | ||
104 | 26 | var _ = gc.Suite(&format_1_18Suite{}) | 26 | var _ = gc.Suite(&format_1_18Suite{}) |
105 | 27 | 27 | ||
106 | === modified file 'agent/format_whitebox_test.go' | |||
107 | --- agent/format_whitebox_test.go 2014-05-20 04:27:02 +0000 | |||
108 | +++ agent/format_whitebox_test.go 2014-05-22 14:33:28 +0000 | |||
109 | @@ -11,12 +11,12 @@ | |||
110 | 11 | gc "launchpad.net/gocheck" | 11 | gc "launchpad.net/gocheck" |
111 | 12 | 12 | ||
112 | 13 | "launchpad.net/juju-core/state/api/params" | 13 | "launchpad.net/juju-core/state/api/params" |
114 | 14 | "launchpad.net/juju-core/testing" | 14 | "launchpad.net/juju-core/testing/testbase" |
115 | 15 | "launchpad.net/juju-core/version" | 15 | "launchpad.net/juju-core/version" |
116 | 16 | ) | 16 | ) |
117 | 17 | 17 | ||
118 | 18 | type formatSuite struct { | 18 | type formatSuite struct { |
120 | 19 | testing.BaseSuite | 19 | testbase.LoggingSuite |
121 | 20 | } | 20 | } |
122 | 21 | 21 | ||
123 | 22 | var _ = gc.Suite(&formatSuite{}) | 22 | var _ = gc.Suite(&formatSuite{}) |
124 | 23 | 23 | ||
125 | === modified file 'agent/identity_test.go' | |||
126 | --- agent/identity_test.go 2014-05-20 04:27:02 +0000 | |||
127 | +++ agent/identity_test.go 2014-05-22 14:33:28 +0000 | |||
128 | @@ -10,12 +10,12 @@ | |||
129 | 10 | gc "launchpad.net/gocheck" | 10 | gc "launchpad.net/gocheck" |
130 | 11 | 11 | ||
131 | 12 | "launchpad.net/juju-core/state/api/params" | 12 | "launchpad.net/juju-core/state/api/params" |
133 | 13 | "launchpad.net/juju-core/testing" | 13 | "launchpad.net/juju-core/testing/testbase" |
134 | 14 | "launchpad.net/juju-core/version" | 14 | "launchpad.net/juju-core/version" |
135 | 15 | ) | 15 | ) |
136 | 16 | 16 | ||
137 | 17 | type identitySuite struct { | 17 | type identitySuite struct { |
139 | 18 | testing.BaseSuite | 18 | testbase.LoggingSuite |
140 | 19 | mongodConfigPath string | 19 | mongodConfigPath string |
141 | 20 | mongodPath string | 20 | mongodPath string |
142 | 21 | } | 21 | } |
143 | 22 | 22 | ||
144 | === removed file 'agent/mongo/export_test.go' | |||
145 | --- agent/mongo/export_test.go 2014-05-20 08:29:58 +0000 | |||
146 | +++ agent/mongo/export_test.go 1970-01-01 00:00:00 +0000 | |||
147 | @@ -1,18 +0,0 @@ | |||
148 | 1 | // Copyright 2014 Canonical Ltd. | ||
149 | 2 | // Licensed under the AGPLv3, see LICENCE file for details. | ||
150 | 3 | |||
151 | 4 | package mongo | ||
152 | 5 | |||
153 | 6 | var ( | ||
154 | 7 | MakeJournalDirs = makeJournalDirs | ||
155 | 8 | MongoConfigPath = &mongoConfigPath | ||
156 | 9 | NoauthCommand = noauthCommand | ||
157 | 10 | ProcessSignal = &processSignal | ||
158 | 11 | SharedSecretPath = sharedSecretPath | ||
159 | 12 | SSLKeyPath = sslKeyPath | ||
160 | 13 | UpstartConfInstall = &upstartConfInstall | ||
161 | 14 | UpstartService = upstartService | ||
162 | 15 | UpstartServiceStopAndRemove = &upstartServiceStopAndRemove | ||
163 | 16 | UpstartServiceStop = &upstartServiceStop | ||
164 | 17 | UpstartServiceStart = &upstartServiceStart | ||
165 | 18 | ) | ||
166 | 19 | 0 | ||
167 | === modified file 'agent/mongo/mongo.go' | |||
168 | --- agent/mongo/mongo.go 2014-05-14 11:38:13 +0000 | |||
169 | +++ agent/mongo/mongo.go 2014-05-22 14:33:28 +0000 | |||
170 | @@ -285,7 +285,6 @@ | |||
171 | 285 | " --noprealloc" + | 285 | " --noprealloc" + |
172 | 286 | " --syslog" + | 286 | " --syslog" + |
173 | 287 | " --smallfiles" + | 287 | " --smallfiles" + |
174 | 288 | " --journal" + | ||
175 | 289 | " --keyFile " + utils.ShQuote(sharedSecretPath(dataDir)) | 288 | " --keyFile " + utils.ShQuote(sharedSecretPath(dataDir)) |
176 | 290 | if withHA { | 289 | if withHA { |
177 | 291 | mongoCmd += " --replSet " + ReplicaSetName | 290 | mongoCmd += " --replSet " + ReplicaSetName |
178 | @@ -374,7 +373,6 @@ | |||
179 | 374 | "--noprealloc", | 373 | "--noprealloc", |
180 | 375 | "--syslog", | 374 | "--syslog", |
181 | 376 | "--smallfiles", | 375 | "--smallfiles", |
182 | 377 | "--journal", | ||
183 | 378 | ) | 376 | ) |
184 | 379 | return cmd, nil | 377 | return cmd, nil |
185 | 380 | } | 378 | } |
186 | 381 | 379 | ||
187 | === modified file 'agent/mongo/mongo_test.go' | |||
188 | --- agent/mongo/mongo_test.go 2014-05-20 08:29:58 +0000 | |||
189 | +++ agent/mongo/mongo_test.go 2014-05-22 14:33:28 +0000 | |||
190 | @@ -1,7 +1,7 @@ | |||
191 | 1 | // Copyright 2014 Canonical Ltd. | 1 | // Copyright 2014 Canonical Ltd. |
192 | 2 | // Licensed under the AGPLv3, see LICENCE file for details. | 2 | // Licensed under the AGPLv3, see LICENCE file for details. |
193 | 3 | 3 | ||
195 | 4 | package mongo_test | 4 | package mongo |
196 | 5 | 5 | ||
197 | 6 | import ( | 6 | import ( |
198 | 7 | "encoding/base64" | 7 | "encoding/base64" |
199 | @@ -18,10 +18,9 @@ | |||
200 | 18 | jc "github.com/juju/testing/checkers" | 18 | jc "github.com/juju/testing/checkers" |
201 | 19 | gc "launchpad.net/gocheck" | 19 | gc "launchpad.net/gocheck" |
202 | 20 | 20 | ||
203 | 21 | "launchpad.net/juju-core/agent/mongo" | ||
204 | 22 | "launchpad.net/juju-core/instance" | 21 | "launchpad.net/juju-core/instance" |
205 | 23 | "launchpad.net/juju-core/state/api/params" | 22 | "launchpad.net/juju-core/state/api/params" |
207 | 24 | coretesting "launchpad.net/juju-core/testing" | 23 | "launchpad.net/juju-core/testing/testbase" |
208 | 25 | "launchpad.net/juju-core/upstart" | 24 | "launchpad.net/juju-core/upstart" |
209 | 26 | "launchpad.net/juju-core/utils" | 25 | "launchpad.net/juju-core/utils" |
210 | 27 | "launchpad.net/juju-core/version" | 26 | "launchpad.net/juju-core/version" |
211 | @@ -30,7 +29,7 @@ | |||
212 | 30 | func Test(t *stdtesting.T) { gc.TestingT(t) } | 29 | func Test(t *stdtesting.T) { gc.TestingT(t) } |
213 | 31 | 30 | ||
214 | 32 | type MongoSuite struct { | 31 | type MongoSuite struct { |
216 | 33 | coretesting.BaseSuite | 32 | testbase.LoggingSuite |
217 | 34 | mongodConfigPath string | 33 | mongodConfigPath string |
218 | 35 | mongodPath string | 34 | mongodPath string |
219 | 36 | 35 | ||
220 | @@ -51,24 +50,24 @@ | |||
221 | 51 | } | 50 | } |
222 | 52 | 51 | ||
223 | 53 | func (s *MongoSuite) SetUpTest(c *gc.C) { | 52 | func (s *MongoSuite) SetUpTest(c *gc.C) { |
225 | 54 | s.BaseSuite.SetUpTest(c) | 53 | s.LoggingSuite.SetUpTest(c) |
226 | 55 | // Try to make sure we don't execute any commands accidentally. | 54 | // Try to make sure we don't execute any commands accidentally. |
227 | 56 | s.PatchEnvironment("PATH", "") | 55 | s.PatchEnvironment("PATH", "") |
228 | 57 | 56 | ||
229 | 58 | s.mongodPath = filepath.Join(c.MkDir(), "mongod") | 57 | s.mongodPath = filepath.Join(c.MkDir(), "mongod") |
230 | 59 | err := ioutil.WriteFile(s.mongodPath, []byte("#!/bin/bash\n\nprintf %s 'db version v2.4.9'\n"), 0755) | 58 | err := ioutil.WriteFile(s.mongodPath, []byte("#!/bin/bash\n\nprintf %s 'db version v2.4.9'\n"), 0755) |
231 | 60 | c.Assert(err, gc.IsNil) | 59 | c.Assert(err, gc.IsNil) |
233 | 61 | s.PatchValue(&mongo.JujuMongodPath, s.mongodPath) | 60 | s.PatchValue(&JujuMongodPath, s.mongodPath) |
234 | 62 | 61 | ||
235 | 63 | testPath := c.MkDir() | 62 | testPath := c.MkDir() |
236 | 64 | s.mongodConfigPath = filepath.Join(testPath, "mongodConfig") | 63 | s.mongodConfigPath = filepath.Join(testPath, "mongodConfig") |
238 | 65 | s.PatchValue(mongo.MongoConfigPath, s.mongodConfigPath) | 64 | s.PatchValue(&mongoConfigPath, s.mongodConfigPath) |
239 | 66 | 65 | ||
241 | 67 | s.PatchValue(mongo.UpstartConfInstall, func(conf *upstart.Conf) error { | 66 | s.PatchValue(&upstartConfInstall, func(conf *upstart.Conf) error { |
242 | 68 | s.installed = append(s.installed, *conf) | 67 | s.installed = append(s.installed, *conf) |
243 | 69 | return s.installError | 68 | return s.installError |
244 | 70 | }) | 69 | }) |
246 | 71 | s.PatchValue(mongo.UpstartServiceStopAndRemove, func(svc *upstart.Service) error { | 70 | s.PatchValue(&upstartServiceStopAndRemove, func(svc *upstart.Service) error { |
247 | 72 | s.removed = append(s.removed, *svc) | 71 | s.removed = append(s.removed, *svc) |
248 | 73 | return s.removeError | 72 | return s.removeError |
249 | 74 | }) | 73 | }) |
250 | @@ -80,23 +79,23 @@ | |||
251 | 80 | } | 79 | } |
252 | 81 | 80 | ||
253 | 82 | func (s *MongoSuite) TestJujuMongodPath(c *gc.C) { | 81 | func (s *MongoSuite) TestJujuMongodPath(c *gc.C) { |
255 | 83 | obtained, err := mongo.Path() | 82 | obtained, err := Path() |
256 | 84 | c.Check(err, gc.IsNil) | 83 | c.Check(err, gc.IsNil) |
257 | 85 | c.Check(obtained, gc.Equals, s.mongodPath) | 84 | c.Check(obtained, gc.Equals, s.mongodPath) |
258 | 86 | } | 85 | } |
259 | 87 | 86 | ||
260 | 88 | func (s *MongoSuite) TestDefaultMongodPath(c *gc.C) { | 87 | func (s *MongoSuite) TestDefaultMongodPath(c *gc.C) { |
262 | 89 | s.PatchValue(&mongo.JujuMongodPath, "/not/going/to/exist/mongod") | 88 | s.PatchValue(&JujuMongodPath, "/not/going/to/exist/mongod") |
263 | 90 | s.PatchEnvPathPrepend(filepath.Dir(s.mongodPath)) | 89 | s.PatchEnvPathPrepend(filepath.Dir(s.mongodPath)) |
264 | 91 | 90 | ||
266 | 92 | obtained, err := mongo.Path() | 91 | obtained, err := Path() |
267 | 93 | c.Check(err, gc.IsNil) | 92 | c.Check(err, gc.IsNil) |
268 | 94 | c.Check(obtained, gc.Equals, s.mongodPath) | 93 | c.Check(obtained, gc.Equals, s.mongodPath) |
269 | 95 | } | 94 | } |
270 | 96 | 95 | ||
271 | 97 | func (s *MongoSuite) TestMakeJournalDirs(c *gc.C) { | 96 | func (s *MongoSuite) TestMakeJournalDirs(c *gc.C) { |
272 | 98 | dir := c.MkDir() | 97 | dir := c.MkDir() |
274 | 99 | err := mongo.MakeJournalDirs(dir) | 98 | err := makeJournalDirs(dir) |
275 | 100 | c.Assert(err, gc.IsNil) | 99 | c.Assert(err, gc.IsNil) |
276 | 101 | 100 | ||
277 | 102 | testJournalDirs(dir, c) | 101 | testJournalDirs(dir, c) |
278 | @@ -127,7 +126,7 @@ | |||
279 | 127 | 126 | ||
280 | 128 | mockShellCommand(c, &s.CleanupSuite, "apt-get") | 127 | mockShellCommand(c, &s.CleanupSuite, "apt-get") |
281 | 129 | 128 | ||
283 | 130 | err := mongo.EnsureServer(dataDir, namespace, testInfo, mongo.WithHA) | 129 | err := EnsureServer(dataDir, namespace, testInfo, WithHA) |
284 | 131 | c.Assert(err, gc.IsNil) | 130 | c.Assert(err, gc.IsNil) |
285 | 132 | 131 | ||
286 | 133 | testJournalDirs(dbDir, c) | 132 | testJournalDirs(dbDir, c) |
287 | @@ -148,17 +147,17 @@ | |||
288 | 148 | c.Assert(err, gc.IsNil) | 147 | c.Assert(err, gc.IsNil) |
289 | 149 | c.Assert(contents, jc.DeepEquals, []byte("ENABLE_MONGODB=no")) | 148 | c.Assert(contents, jc.DeepEquals, []byte("ENABLE_MONGODB=no")) |
290 | 150 | 149 | ||
292 | 151 | contents, err = ioutil.ReadFile(mongo.SSLKeyPath(dataDir)) | 150 | contents, err = ioutil.ReadFile(sslKeyPath(dataDir)) |
293 | 152 | c.Assert(err, gc.IsNil) | 151 | c.Assert(err, gc.IsNil) |
294 | 153 | c.Assert(string(contents), gc.Equals, testInfo.Cert+"\n"+testInfo.PrivateKey) | 152 | c.Assert(string(contents), gc.Equals, testInfo.Cert+"\n"+testInfo.PrivateKey) |
295 | 154 | 153 | ||
297 | 155 | contents, err = ioutil.ReadFile(mongo.SharedSecretPath(dataDir)) | 154 | contents, err = ioutil.ReadFile(sharedSecretPath(dataDir)) |
298 | 156 | c.Assert(err, gc.IsNil) | 155 | c.Assert(err, gc.IsNil) |
299 | 157 | c.Assert(string(contents), gc.Equals, testInfo.SharedSecret) | 156 | c.Assert(string(contents), gc.Equals, testInfo.SharedSecret) |
300 | 158 | 157 | ||
301 | 159 | s.installed = nil | 158 | s.installed = nil |
302 | 160 | // now check we can call it multiple times without error | 159 | // now check we can call it multiple times without error |
304 | 161 | err = mongo.EnsureServer(dataDir, namespace, testInfo, mongo.WithHA) | 160 | err = EnsureServer(dataDir, namespace, testInfo, WithHA) |
305 | 162 | c.Assert(err, gc.IsNil) | 161 | c.Assert(err, gc.IsNil) |
306 | 163 | assertInstalled() | 162 | assertInstalled() |
307 | 164 | 163 | ||
308 | @@ -194,7 +193,7 @@ | |||
309 | 194 | 193 | ||
310 | 195 | s.PatchValue(&version.Current.Series, test.series) | 194 | s.PatchValue(&version.Current.Series, test.series) |
311 | 196 | 195 | ||
313 | 197 | err := mongo.EnsureServer(dataDir, namespace, testInfo, mongo.WithHA) | 196 | err := EnsureServer(dataDir, namespace, testInfo, WithHA) |
314 | 198 | c.Assert(err, gc.IsNil) | 197 | c.Assert(err, gc.IsNil) |
315 | 199 | 198 | ||
316 | 200 | cmds := getMockShellCalls(c, output) | 199 | cmds := getMockShellCalls(c, output) |
317 | @@ -215,40 +214,17 @@ | |||
318 | 215 | func (s *MongoSuite) TestUpstartServiceWithHA(c *gc.C) { | 214 | func (s *MongoSuite) TestUpstartServiceWithHA(c *gc.C) { |
319 | 216 | dataDir := c.MkDir() | 215 | dataDir := c.MkDir() |
320 | 217 | 216 | ||
322 | 218 | svc, _, err := mongo.UpstartService("", dataDir, dataDir, 1234, mongo.WithHA) | 217 | svc, _, err := upstartService("", dataDir, dataDir, 1234, WithHA) |
323 | 219 | c.Assert(err, gc.IsNil) | 218 | c.Assert(err, gc.IsNil) |
324 | 220 | c.Assert(strings.Contains(svc.Cmd, "--replSet"), jc.IsTrue) | 219 | c.Assert(strings.Contains(svc.Cmd, "--replSet"), jc.IsTrue) |
325 | 221 | 220 | ||
327 | 222 | svc, _, err = mongo.UpstartService("", dataDir, dataDir, 1234, mongo.WithoutHA) | 221 | svc, _, err = upstartService("", dataDir, dataDir, 1234, WithoutHA) |
328 | 223 | c.Assert(err, gc.IsNil) | 222 | c.Assert(err, gc.IsNil) |
329 | 224 | c.Assert(strings.Contains(svc.Cmd, "--replSet"), jc.IsFalse) | 223 | c.Assert(strings.Contains(svc.Cmd, "--replSet"), jc.IsFalse) |
330 | 225 | } | 224 | } |
331 | 226 | 225 | ||
332 | 227 | func (s *MongoSuite) TestUpstartServiceWithJournal(c *gc.C) { | ||
333 | 228 | dataDir := c.MkDir() | ||
334 | 229 | |||
335 | 230 | svc, _, err := mongo.UpstartService("", dataDir, dataDir, 1234, mongo.WithHA) | ||
336 | 231 | c.Assert(err, gc.IsNil) | ||
337 | 232 | journalPresent := strings.Contains(svc.Cmd, " --journal ") || strings.HasSuffix(svc.Cmd, " --journal") | ||
338 | 233 | c.Assert(journalPresent, jc.IsTrue) | ||
339 | 234 | } | ||
340 | 235 | |||
341 | 236 | func (s *MongoSuite) TestNoAuthCommandWithJournal(c *gc.C) { | ||
342 | 237 | dataDir := c.MkDir() | ||
343 | 238 | |||
344 | 239 | cmd, err := mongo.NoauthCommand(dataDir, 1234) | ||
345 | 240 | c.Assert(err, gc.IsNil) | ||
346 | 241 | var isJournalPresent bool | ||
347 | 242 | for _, value := range cmd.Args { | ||
348 | 243 | if value == "--journal" { | ||
349 | 244 | isJournalPresent = true | ||
350 | 245 | } | ||
351 | 246 | } | ||
352 | 247 | c.Assert(isJournalPresent, jc.IsTrue) | ||
353 | 248 | } | ||
354 | 249 | |||
355 | 250 | func (s *MongoSuite) TestRemoveService(c *gc.C) { | 226 | func (s *MongoSuite) TestRemoveService(c *gc.C) { |
357 | 251 | err := mongo.RemoveService("namespace") | 227 | err := RemoveService("namespace") |
358 | 252 | c.Assert(err, gc.IsNil) | 228 | c.Assert(err, gc.IsNil) |
359 | 253 | c.Assert(s.removed, jc.DeepEquals, []upstart.Service{{ | 229 | c.Assert(s.removed, jc.DeepEquals, []upstart.Service{{ |
360 | 254 | Name: "juju-db-namespace", | 230 | Name: "juju-db-namespace", |
361 | @@ -265,11 +241,11 @@ | |||
362 | 265 | // test that we call add-apt-repository only for quantal (and that if it | 241 | // test that we call add-apt-repository only for quantal (and that if it |
363 | 266 | // fails, we return the error) | 242 | // fails, we return the error) |
364 | 267 | s.PatchValue(&version.Current.Series, "quantal") | 243 | s.PatchValue(&version.Current.Series, "quantal") |
366 | 268 | err := mongo.EnsureServer(dir, "", testInfo, mongo.WithHA) | 244 | err := EnsureServer(dir, "", testInfo, WithHA) |
367 | 269 | c.Assert(err, gc.ErrorMatches, "cannot install mongod: cannot add apt repository: exit status 1.*") | 245 | c.Assert(err, gc.ErrorMatches, "cannot install mongod: cannot add apt repository: exit status 1.*") |
368 | 270 | 246 | ||
369 | 271 | s.PatchValue(&version.Current.Series, "trusty") | 247 | s.PatchValue(&version.Current.Series, "trusty") |
371 | 272 | err = mongo.EnsureServer(dir, "", testInfo, mongo.WithHA) | 248 | err = EnsureServer(dir, "", testInfo, WithHA) |
372 | 273 | c.Assert(err, gc.IsNil) | 249 | c.Assert(err, gc.IsNil) |
373 | 274 | } | 250 | } |
374 | 275 | 251 | ||
375 | @@ -278,7 +254,7 @@ | |||
376 | 278 | // created. | 254 | // created. |
377 | 279 | mockShellCommand(c, &s.CleanupSuite, "apt-get") | 255 | mockShellCommand(c, &s.CleanupSuite, "apt-get") |
378 | 280 | dataDir := filepath.Join(c.MkDir(), "dir", "data") | 256 | dataDir := filepath.Join(c.MkDir(), "dir", "data") |
380 | 281 | err := mongo.EnsureServer(dataDir, "", testInfo, mongo.WithHA) | 257 | err := EnsureServer(dataDir, "", testInfo, WithHA) |
381 | 282 | c.Check(err, gc.IsNil) | 258 | c.Check(err, gc.IsNil) |
382 | 283 | 259 | ||
383 | 284 | _, err = os.Stat(filepath.Join(dataDir, "db")) | 260 | _, err = os.Stat(filepath.Join(dataDir, "db")) |
384 | @@ -286,9 +262,9 @@ | |||
385 | 286 | } | 262 | } |
386 | 287 | 263 | ||
387 | 288 | func (s *MongoSuite) TestServiceName(c *gc.C) { | 264 | func (s *MongoSuite) TestServiceName(c *gc.C) { |
389 | 289 | name := mongo.ServiceName("foo") | 265 | name := ServiceName("foo") |
390 | 290 | c.Assert(name, gc.Equals, "juju-db-foo") | 266 | c.Assert(name, gc.Equals, "juju-db-foo") |
392 | 291 | name = mongo.ServiceName("") | 267 | name = ServiceName("") |
393 | 292 | c.Assert(name, gc.Equals, "juju-db") | 268 | c.Assert(name, gc.Equals, "juju-db") |
394 | 293 | } | 269 | } |
395 | 294 | 270 | ||
396 | @@ -303,7 +279,7 @@ | |||
397 | 303 | NetworkName: "public", | 279 | NetworkName: "public", |
398 | 304 | NetworkScope: instance.NetworkPublic}} | 280 | NetworkScope: instance.NetworkPublic}} |
399 | 305 | 281 | ||
401 | 306 | address := mongo.SelectPeerAddress(addresses) | 282 | address := SelectPeerAddress(addresses) |
402 | 307 | c.Assert(address, gc.Equals, "10.0.0.1") | 283 | c.Assert(address, gc.Equals, "10.0.0.1") |
403 | 308 | } | 284 | } |
404 | 309 | 285 | ||
405 | @@ -325,12 +301,12 @@ | |||
406 | 325 | }, | 301 | }, |
407 | 326 | Port: 37017}} | 302 | Port: 37017}} |
408 | 327 | 303 | ||
410 | 328 | address := mongo.SelectPeerHostPort(hostPorts) | 304 | address := SelectPeerHostPort(hostPorts) |
411 | 329 | c.Assert(address, gc.Equals, "10.0.0.1:37017") | 305 | c.Assert(address, gc.Equals, "10.0.0.1:37017") |
412 | 330 | } | 306 | } |
413 | 331 | 307 | ||
414 | 332 | func (s *MongoSuite) TestGenerateSharedSecret(c *gc.C) { | 308 | func (s *MongoSuite) TestGenerateSharedSecret(c *gc.C) { |
416 | 333 | secret, err := mongo.GenerateSharedSecret() | 309 | secret, err := GenerateSharedSecret() |
417 | 334 | c.Assert(err, gc.IsNil) | 310 | c.Assert(err, gc.IsNil) |
418 | 335 | c.Assert(secret, gc.HasLen, 1024) | 311 | c.Assert(secret, gc.HasLen, 1024) |
419 | 336 | _, err = base64.StdEncoding.DecodeString(secret) | 312 | _, err = base64.StdEncoding.DecodeString(secret) |
420 | @@ -344,7 +320,7 @@ | |||
421 | 344 | s.PatchValue(&version.Current.Series, "quantal") | 320 | s.PatchValue(&version.Current.Series, "quantal") |
422 | 345 | 321 | ||
423 | 346 | dataDir := c.MkDir() | 322 | dataDir := c.MkDir() |
425 | 347 | err := mongo.EnsureServer(dataDir, "", testInfo, mongo.WithHA) | 323 | err := EnsureServer(dataDir, "", testInfo, WithHA) |
426 | 348 | c.Assert(err, gc.IsNil) | 324 | c.Assert(err, gc.IsNil) |
427 | 349 | 325 | ||
428 | 350 | c.Assert(getMockShellCalls(c, addAptRepoOut), gc.DeepEquals, [][]string{{ | 326 | c.Assert(getMockShellCalls(c, addAptRepoOut), gc.DeepEquals, [][]string{{ |
429 | 351 | 327 | ||
430 | === modified file 'agent/mongo/upgrade.go' | |||
431 | --- agent/mongo/upgrade.go 2014-05-22 00:56:59 +0000 | |||
432 | +++ agent/mongo/upgrade.go 2014-05-22 14:33:28 +0000 | |||
433 | @@ -8,15 +8,12 @@ | |||
434 | 8 | "os" | 8 | "os" |
435 | 9 | "os/exec" | 9 | "os/exec" |
436 | 10 | "syscall" | 10 | "syscall" |
437 | 11 | "time" | ||
438 | 12 | 11 | ||
439 | 13 | "labix.org/v2/mgo" | 12 | "labix.org/v2/mgo" |
440 | 14 | 13 | ||
441 | 15 | "launchpad.net/juju-core/upstart" | 14 | "launchpad.net/juju-core/upstart" |
442 | 16 | ) | 15 | ) |
443 | 17 | 16 | ||
444 | 18 | const mongoSocketTimeout = 10 * time.Second | ||
445 | 19 | |||
446 | 20 | var ( | 17 | var ( |
447 | 21 | processSignal = (*os.Process).Signal | 18 | processSignal = (*os.Process).Signal |
448 | 22 | ) | 19 | ) |
449 | @@ -54,13 +51,11 @@ | |||
450 | 54 | if err != nil { | 51 | if err != nil { |
451 | 55 | return false, fmt.Errorf("can't dial mongo to ensure admin user: %v", err) | 52 | return false, fmt.Errorf("can't dial mongo to ensure admin user: %v", err) |
452 | 56 | } | 53 | } |
453 | 57 | session.SetSocketTimeout(mongoSocketTimeout) | ||
454 | 58 | err = session.DB("admin").Login(p.User, p.Password) | 54 | err = session.DB("admin").Login(p.User, p.Password) |
455 | 59 | session.Close() | 55 | session.Close() |
456 | 60 | if err == nil { | 56 | if err == nil { |
457 | 61 | return false, nil | 57 | return false, nil |
458 | 62 | } | 58 | } |
459 | 63 | logger.Debugf("admin login failed: %v", err) | ||
460 | 64 | 59 | ||
461 | 65 | // Login failed, so we need to add the user. | 60 | // Login failed, so we need to add the user. |
462 | 66 | // Stop mongo, so we can start it in --noauth mode. | 61 | // Stop mongo, so we can start it in --noauth mode. |
463 | 67 | 62 | ||
464 | === modified file 'agent/mongo/upgrade_test.go' | |||
465 | --- agent/mongo/upgrade_test.go 2014-05-22 09:52:11 +0000 | |||
466 | +++ agent/mongo/upgrade_test.go 2014-05-22 14:33:28 +0000 | |||
467 | @@ -1,45 +1,35 @@ | |||
468 | 1 | // Copyright 2014 Canonical Ltd. | 1 | // Copyright 2014 Canonical Ltd. |
469 | 2 | // Licensed under the AGPLv3, see LICENCE file for details. | 2 | // Licensed under the AGPLv3, see LICENCE file for details. |
470 | 3 | 3 | ||
472 | 4 | package mongo_test | 4 | package mongo |
473 | 5 | 5 | ||
474 | 6 | import ( | 6 | import ( |
475 | 7 | "net" | 7 | "net" |
476 | 8 | "os" | ||
477 | 9 | "path/filepath" | ||
478 | 10 | "strconv" | 8 | "strconv" |
479 | 11 | 9 | ||
480 | 12 | jujutesting "github.com/juju/testing" | ||
481 | 13 | jc "github.com/juju/testing/checkers" | 10 | jc "github.com/juju/testing/checkers" |
482 | 14 | "labix.org/v2/mgo" | 11 | "labix.org/v2/mgo" |
483 | 15 | gc "launchpad.net/gocheck" | 12 | gc "launchpad.net/gocheck" |
484 | 16 | 13 | ||
485 | 17 | "launchpad.net/juju-core/agent/mongo" | ||
486 | 18 | coretesting "launchpad.net/juju-core/testing" | 14 | coretesting "launchpad.net/juju-core/testing" |
487 | 15 | "launchpad.net/juju-core/testing/testbase" | ||
488 | 19 | "launchpad.net/juju-core/upstart" | 16 | "launchpad.net/juju-core/upstart" |
489 | 20 | ) | 17 | ) |
490 | 21 | 18 | ||
491 | 22 | type EnsureAdminSuite struct { | 19 | type EnsureAdminSuite struct { |
495 | 23 | coretesting.BaseSuite | 20 | testbase.LoggingSuite |
493 | 24 | serviceStarts int | ||
494 | 25 | serviceStops int | ||
496 | 26 | } | 21 | } |
497 | 27 | 22 | ||
498 | 28 | var _ = gc.Suite(&EnsureAdminSuite{}) | 23 | var _ = gc.Suite(&EnsureAdminSuite{}) |
499 | 29 | 24 | ||
500 | 30 | func (s *EnsureAdminSuite) SetUpTest(c *gc.C) { | 25 | func (s *EnsureAdminSuite) SetUpTest(c *gc.C) { |
513 | 31 | s.BaseSuite.SetUpTest(c) | 26 | s.PatchValue(&upstartConfInstall, func(conf *upstart.Conf) error { |
514 | 32 | s.serviceStarts = 0 | 27 | return nil |
515 | 33 | s.serviceStops = 0 | 28 | }) |
516 | 34 | s.PatchValue(mongo.UpstartConfInstall, func(conf *upstart.Conf) error { | 29 | s.PatchValue(&upstartServiceStart, func(svc *upstart.Service) error { |
517 | 35 | return nil | 30 | return nil |
518 | 36 | }) | 31 | }) |
519 | 37 | s.PatchValue(mongo.UpstartServiceStart, func(svc *upstart.Service) error { | 32 | s.PatchValue(&upstartServiceStop, func(svc *upstart.Service) error { |
508 | 38 | s.serviceStarts++ | ||
509 | 39 | return nil | ||
510 | 40 | }) | ||
511 | 41 | s.PatchValue(mongo.UpstartServiceStop, func(svc *upstart.Service) error { | ||
512 | 42 | s.serviceStops++ | ||
520 | 43 | return nil | 33 | return nil |
521 | 44 | }) | 34 | }) |
522 | 45 | } | 35 | } |
523 | @@ -50,50 +40,14 @@ | |||
524 | 50 | c.Assert(err, gc.IsNil) | 40 | c.Assert(err, gc.IsNil) |
525 | 51 | defer inst.DestroyWithLog() | 41 | defer inst.DestroyWithLog() |
526 | 52 | dialInfo := inst.DialInfo() | 42 | dialInfo := inst.DialInfo() |
527 | 53 | |||
528 | 54 | // Mock out mongod, so the --noauth execution doesn't | ||
529 | 55 | // do anything nasty. Also mock out the Signal method. | ||
530 | 56 | jujutesting.PatchExecutableAsEchoArgs(c, s, "mongod") | ||
531 | 57 | mongodDir := filepath.SplitList(os.Getenv("PATH"))[0] | ||
532 | 58 | s.PatchValue(&mongo.JujuMongodPath, filepath.Join(mongodDir, "mongod")) | ||
533 | 59 | s.PatchValue(mongo.ProcessSignal, func(*os.Process, os.Signal) error { | ||
534 | 60 | return nil | ||
535 | 61 | }) | ||
536 | 62 | |||
537 | 63 | // First call succeeds, as there are no users yet. | 43 | // First call succeeds, as there are no users yet. |
538 | 64 | added, err := s.ensureAdminUser(c, dialInfo, "whomever", "whatever") | 44 | added, err := s.ensureAdminUser(c, dialInfo, "whomever", "whatever") |
539 | 65 | c.Assert(err, gc.IsNil) | 45 | c.Assert(err, gc.IsNil) |
540 | 66 | c.Assert(added, jc.IsTrue) | 46 | c.Assert(added, jc.IsTrue) |
541 | 67 | |||
542 | 68 | // EnsureAdminUser should have stopped the mongo service, | ||
543 | 69 | // started a new mongod with --noauth, and then finally | ||
544 | 70 | // started the service back up. | ||
545 | 71 | c.Assert(s.serviceStarts, gc.Equals, 1) | ||
546 | 72 | c.Assert(s.serviceStops, gc.Equals, 1) | ||
547 | 73 | _, portString, err := net.SplitHostPort(dialInfo.Addrs[0]) | ||
548 | 74 | c.Assert(err, gc.IsNil) | ||
549 | 75 | jujutesting.AssertEchoArgs(c, "mongod", | ||
550 | 76 | "--noauth", | ||
551 | 77 | "--dbpath", "db", | ||
552 | 78 | "--sslOnNormalPorts", | ||
553 | 79 | "--sslPEMKeyFile", "server.pem", | ||
554 | 80 | "--sslPEMKeyPassword", "ignored", | ||
555 | 81 | "--bind_ip", "127.0.0.1", | ||
556 | 82 | "--port", portString, | ||
557 | 83 | "--noprealloc", | ||
558 | 84 | "--syslog", | ||
559 | 85 | "--smallfiles", | ||
560 | 86 | "--journal", | ||
561 | 87 | ) | ||
562 | 88 | |||
563 | 89 | // Second call succeeds, as the admin user is already there. | 47 | // Second call succeeds, as the admin user is already there. |
564 | 90 | added, err = s.ensureAdminUser(c, dialInfo, "whomever", "whatever") | 48 | added, err = s.ensureAdminUser(c, dialInfo, "whomever", "whatever") |
565 | 91 | c.Assert(err, gc.IsNil) | 49 | c.Assert(err, gc.IsNil) |
566 | 92 | c.Assert(added, jc.IsFalse) | 50 | c.Assert(added, jc.IsFalse) |
567 | 93 | |||
568 | 94 | // There should have been no additional start/stop. | ||
569 | 95 | c.Assert(s.serviceStarts, gc.Equals, 1) | ||
570 | 96 | c.Assert(s.serviceStops, gc.Equals, 1) | ||
571 | 97 | } | 51 | } |
572 | 98 | 52 | ||
573 | 99 | func (s *EnsureAdminSuite) TestEnsureAdminUserError(c *gc.C) { | 53 | func (s *EnsureAdminSuite) TestEnsureAdminUserError(c *gc.C) { |
574 | @@ -119,7 +73,7 @@ | |||
575 | 119 | c.Assert(err, gc.IsNil) | 73 | c.Assert(err, gc.IsNil) |
576 | 120 | port, err := strconv.Atoi(portString) | 74 | port, err := strconv.Atoi(portString) |
577 | 121 | c.Assert(err, gc.IsNil) | 75 | c.Assert(err, gc.IsNil) |
579 | 122 | return mongo.EnsureAdminUser(mongo.EnsureAdminUserParams{ | 76 | return EnsureAdminUser(EnsureAdminUserParams{ |
580 | 123 | DialInfo: dialInfo, | 77 | DialInfo: dialInfo, |
581 | 124 | Port: port, | 78 | Port: port, |
582 | 125 | User: user, | 79 | User: user, |
583 | 126 | 80 | ||
584 | === modified file 'agent/tools/diskmanager_test.go' | |||
585 | --- agent/tools/diskmanager_test.go 2014-05-20 04:27:02 +0000 | |||
586 | +++ agent/tools/diskmanager_test.go 2014-05-22 14:33:28 +0000 | |||
587 | @@ -13,6 +13,7 @@ | |||
588 | 13 | 13 | ||
589 | 14 | agenttools "launchpad.net/juju-core/agent/tools" | 14 | agenttools "launchpad.net/juju-core/agent/tools" |
590 | 15 | coretesting "launchpad.net/juju-core/testing" | 15 | coretesting "launchpad.net/juju-core/testing" |
591 | 16 | "launchpad.net/juju-core/testing/testbase" | ||
592 | 16 | coretools "launchpad.net/juju-core/tools" | 17 | coretools "launchpad.net/juju-core/tools" |
593 | 17 | "launchpad.net/juju-core/version" | 18 | "launchpad.net/juju-core/version" |
594 | 18 | ) | 19 | ) |
595 | @@ -22,13 +23,13 @@ | |||
596 | 22 | var _ agenttools.ToolsManager = (*agenttools.DiskManager)(nil) | 23 | var _ agenttools.ToolsManager = (*agenttools.DiskManager)(nil) |
597 | 23 | 24 | ||
598 | 24 | type DiskManagerSuite struct { | 25 | type DiskManagerSuite struct { |
600 | 25 | coretesting.BaseSuite | 26 | testbase.LoggingSuite |
601 | 26 | dataDir string | 27 | dataDir string |
602 | 27 | manager agenttools.ToolsManager | 28 | manager agenttools.ToolsManager |
603 | 28 | } | 29 | } |
604 | 29 | 30 | ||
605 | 30 | func (s *DiskManagerSuite) SetUpTest(c *gc.C) { | 31 | func (s *DiskManagerSuite) SetUpTest(c *gc.C) { |
607 | 31 | s.BaseSuite.SetUpTest(c) | 32 | s.LoggingSuite.SetUpTest(c) |
608 | 32 | s.dataDir = c.MkDir() | 33 | s.dataDir = c.MkDir() |
609 | 33 | s.manager = agenttools.NewDiskManager(s.dataDir) | 34 | s.manager = agenttools.NewDiskManager(s.dataDir) |
610 | 34 | } | 35 | } |
611 | 35 | 36 | ||
612 | === modified file 'agent/tools/tools_test.go' | |||
613 | --- agent/tools/tools_test.go 2014-05-20 04:27:02 +0000 | |||
614 | +++ agent/tools/tools_test.go 2014-05-22 14:33:28 +0000 | |||
615 | @@ -21,14 +21,14 @@ | |||
616 | 21 | ) | 21 | ) |
617 | 22 | 22 | ||
618 | 23 | type ToolsSuite struct { | 23 | type ToolsSuite struct { |
620 | 24 | testing.BaseSuite | 24 | testbase.LoggingSuite |
621 | 25 | dataDir string | 25 | dataDir string |
622 | 26 | } | 26 | } |
623 | 27 | 27 | ||
624 | 28 | var _ = gc.Suite(&ToolsSuite{}) | 28 | var _ = gc.Suite(&ToolsSuite{}) |
625 | 29 | 29 | ||
626 | 30 | func (t *ToolsSuite) SetUpTest(c *gc.C) { | 30 | func (t *ToolsSuite) SetUpTest(c *gc.C) { |
628 | 31 | t.BaseSuite.SetUpTest(c) | 31 | t.LoggingSuite.SetUpTest(c) |
629 | 32 | t.dataDir = c.MkDir() | 32 | t.dataDir = c.MkDir() |
630 | 33 | } | 33 | } |
631 | 34 | 34 | ||
632 | 35 | 35 | ||
633 | === modified file 'bzr/bzr_test.go' | |||
634 | --- bzr/bzr_test.go 2014-05-20 04:27:02 +0000 | |||
635 | +++ bzr/bzr_test.go 2014-05-22 14:33:28 +0000 | |||
636 | @@ -8,22 +8,22 @@ | |||
637 | 8 | "os" | 8 | "os" |
638 | 9 | "os/exec" | 9 | "os/exec" |
639 | 10 | "path/filepath" | 10 | "path/filepath" |
641 | 11 | stdtesting "testing" | 11 | "testing" |
642 | 12 | 12 | ||
643 | 13 | gc "launchpad.net/gocheck" | 13 | gc "launchpad.net/gocheck" |
644 | 14 | 14 | ||
645 | 15 | "launchpad.net/juju-core/bzr" | 15 | "launchpad.net/juju-core/bzr" |
647 | 16 | "launchpad.net/juju-core/testing" | 16 | "launchpad.net/juju-core/testing/testbase" |
648 | 17 | ) | 17 | ) |
649 | 18 | 18 | ||
651 | 19 | func Test(t *stdtesting.T) { | 19 | func Test(t *testing.T) { |
652 | 20 | gc.TestingT(t) | 20 | gc.TestingT(t) |
653 | 21 | } | 21 | } |
654 | 22 | 22 | ||
655 | 23 | var _ = gc.Suite(&BzrSuite{}) | 23 | var _ = gc.Suite(&BzrSuite{}) |
656 | 24 | 24 | ||
657 | 25 | type BzrSuite struct { | 25 | type BzrSuite struct { |
659 | 26 | testing.BaseSuite | 26 | testbase.LoggingSuite |
660 | 27 | b *bzr.Branch | 27 | b *bzr.Branch |
661 | 28 | } | 28 | } |
662 | 29 | 29 | ||
663 | @@ -32,7 +32,7 @@ | |||
664 | 32 | ` | 32 | ` |
665 | 33 | 33 | ||
666 | 34 | func (s *BzrSuite) SetUpTest(c *gc.C) { | 34 | func (s *BzrSuite) SetUpTest(c *gc.C) { |
668 | 35 | s.BaseSuite.SetUpTest(c) | 35 | s.LoggingSuite.SetUpTest(c) |
669 | 36 | bzrdir := c.MkDir() | 36 | bzrdir := c.MkDir() |
670 | 37 | s.PatchEnvironment("BZR_HOME", bzrdir) | 37 | s.PatchEnvironment("BZR_HOME", bzrdir) |
671 | 38 | err := os.Mkdir(filepath.Join(bzrdir, ".bazaar"), 0755) | 38 | err := os.Mkdir(filepath.Join(bzrdir, ".bazaar"), 0755) |
672 | 39 | 39 | ||
673 | === modified file 'charm/dir_test.go' | |||
674 | --- charm/dir_test.go 2014-05-20 04:27:02 +0000 | |||
675 | +++ charm/dir_test.go 2014-05-22 14:33:28 +0000 | |||
676 | @@ -17,10 +17,11 @@ | |||
677 | 17 | 17 | ||
678 | 18 | "launchpad.net/juju-core/charm" | 18 | "launchpad.net/juju-core/charm" |
679 | 19 | "launchpad.net/juju-core/testing" | 19 | "launchpad.net/juju-core/testing" |
680 | 20 | "launchpad.net/juju-core/testing/testbase" | ||
681 | 20 | ) | 21 | ) |
682 | 21 | 22 | ||
683 | 22 | type DirSuite struct { | 23 | type DirSuite struct { |
685 | 23 | testing.BaseSuite | 24 | testbase.LoggingSuite |
686 | 24 | } | 25 | } |
687 | 25 | 26 | ||
688 | 26 | var _ = gc.Suite(&DirSuite{}) | 27 | var _ = gc.Suite(&DirSuite{}) |
689 | 27 | 28 | ||
690 | === modified file 'cloudinit/cloudinit_test.go' | |||
691 | --- cloudinit/cloudinit_test.go 2014-05-20 04:27:02 +0000 | |||
692 | +++ cloudinit/cloudinit_test.go 2014-05-22 14:33:28 +0000 | |||
693 | @@ -10,14 +10,14 @@ | |||
694 | 10 | gc "launchpad.net/gocheck" | 10 | gc "launchpad.net/gocheck" |
695 | 11 | 11 | ||
696 | 12 | "launchpad.net/juju-core/cloudinit" | 12 | "launchpad.net/juju-core/cloudinit" |
698 | 13 | coretesting "launchpad.net/juju-core/testing" | 13 | "launchpad.net/juju-core/testing/testbase" |
699 | 14 | sshtesting "launchpad.net/juju-core/utils/ssh/testing" | 14 | sshtesting "launchpad.net/juju-core/utils/ssh/testing" |
700 | 15 | ) | 15 | ) |
701 | 16 | 16 | ||
702 | 17 | // TODO integration tests, but how? | 17 | // TODO integration tests, but how? |
703 | 18 | 18 | ||
704 | 19 | type S struct { | 19 | type S struct { |
706 | 20 | coretesting.BaseSuite | 20 | testbase.LoggingSuite |
707 | 21 | } | 21 | } |
708 | 22 | 22 | ||
709 | 23 | var _ = gc.Suite(S{}) | 23 | var _ = gc.Suite(S{}) |
710 | 24 | 24 | ||
711 | === modified file 'cloudinit/sshinit/configure_test.go' | |||
712 | --- cloudinit/sshinit/configure_test.go 2014-05-20 04:27:02 +0000 | |||
713 | +++ cloudinit/sshinit/configure_test.go 2014-05-22 14:33:28 +0000 | |||
714 | @@ -17,12 +17,13 @@ | |||
715 | 17 | envtools "launchpad.net/juju-core/environs/tools" | 17 | envtools "launchpad.net/juju-core/environs/tools" |
716 | 18 | "launchpad.net/juju-core/state/api/params" | 18 | "launchpad.net/juju-core/state/api/params" |
717 | 19 | coretesting "launchpad.net/juju-core/testing" | 19 | coretesting "launchpad.net/juju-core/testing" |
718 | 20 | "launchpad.net/juju-core/testing/testbase" | ||
719 | 20 | "launchpad.net/juju-core/tools" | 21 | "launchpad.net/juju-core/tools" |
720 | 21 | "launchpad.net/juju-core/version" | 22 | "launchpad.net/juju-core/version" |
721 | 22 | ) | 23 | ) |
722 | 23 | 24 | ||
723 | 24 | type configureSuite struct { | 25 | type configureSuite struct { |
725 | 25 | coretesting.BaseSuite | 26 | testbase.LoggingSuite |
726 | 26 | } | 27 | } |
727 | 27 | 28 | ||
728 | 28 | var _ = gc.Suite(&configureSuite{}) | 29 | var _ = gc.Suite(&configureSuite{}) |
729 | 29 | 30 | ||
730 | === modified file 'cmd/charm-admin/config_test.go' | |||
731 | --- cmd/charm-admin/config_test.go 2014-05-20 04:27:02 +0000 | |||
732 | +++ cmd/charm-admin/config_test.go 2014-05-22 14:33:28 +0000 | |||
733 | @@ -12,10 +12,11 @@ | |||
734 | 12 | 12 | ||
735 | 13 | "launchpad.net/juju-core/cmd" | 13 | "launchpad.net/juju-core/cmd" |
736 | 14 | "launchpad.net/juju-core/testing" | 14 | "launchpad.net/juju-core/testing" |
737 | 15 | "launchpad.net/juju-core/testing/testbase" | ||
738 | 15 | ) | 16 | ) |
739 | 16 | 17 | ||
740 | 17 | type ConfigSuite struct { | 18 | type ConfigSuite struct { |
742 | 18 | testing.BaseSuite | 19 | testbase.LoggingSuite |
743 | 19 | } | 20 | } |
744 | 20 | 21 | ||
745 | 21 | var _ = gc.Suite(&ConfigSuite{}) | 22 | var _ = gc.Suite(&ConfigSuite{}) |
746 | @@ -27,11 +28,11 @@ | |||
747 | 27 | ` | 28 | ` |
748 | 28 | 29 | ||
749 | 29 | func (s *ConfigSuite) SetUpSuite(c *gc.C) { | 30 | func (s *ConfigSuite) SetUpSuite(c *gc.C) { |
751 | 30 | s.BaseSuite.SetUpSuite(c) | 31 | s.LoggingSuite.SetUpSuite(c) |
752 | 31 | } | 32 | } |
753 | 32 | 33 | ||
754 | 33 | func (s *ConfigSuite) TearDownSuite(c *gc.C) { | 34 | func (s *ConfigSuite) TearDownSuite(c *gc.C) { |
756 | 34 | s.BaseSuite.TearDownSuite(c) | 35 | s.LoggingSuite.TearDownSuite(c) |
757 | 35 | } | 36 | } |
758 | 36 | 37 | ||
759 | 37 | type SomeConfigCommand struct { | 38 | type SomeConfigCommand struct { |
760 | 38 | 39 | ||
761 | === modified file 'cmd/charm-admin/deletecharm_test.go' | |||
762 | --- cmd/charm-admin/deletecharm_test.go 2014-05-20 04:27:02 +0000 | |||
763 | +++ cmd/charm-admin/deletecharm_test.go 2014-05-22 14:33:28 +0000 | |||
764 | @@ -13,10 +13,11 @@ | |||
765 | 13 | "launchpad.net/juju-core/charm" | 13 | "launchpad.net/juju-core/charm" |
766 | 14 | "launchpad.net/juju-core/store" | 14 | "launchpad.net/juju-core/store" |
767 | 15 | "launchpad.net/juju-core/testing" | 15 | "launchpad.net/juju-core/testing" |
768 | 16 | "launchpad.net/juju-core/testing/testbase" | ||
769 | 16 | ) | 17 | ) |
770 | 17 | 18 | ||
771 | 18 | type DeleteCharmSuite struct { | 19 | type DeleteCharmSuite struct { |
773 | 19 | testing.BaseSuite | 20 | testbase.LoggingSuite |
774 | 20 | } | 21 | } |
775 | 21 | 22 | ||
776 | 22 | var _ = gc.Suite(&DeleteCharmSuite{}) | 23 | var _ = gc.Suite(&DeleteCharmSuite{}) |
777 | @@ -26,11 +27,11 @@ | |||
778 | 26 | ` | 27 | ` |
779 | 27 | 28 | ||
780 | 28 | func (s *DeleteCharmSuite) SetUpSuite(c *gc.C) { | 29 | func (s *DeleteCharmSuite) SetUpSuite(c *gc.C) { |
782 | 29 | s.BaseSuite.SetUpSuite(c) | 30 | s.LoggingSuite.SetUpSuite(c) |
783 | 30 | } | 31 | } |
784 | 31 | 32 | ||
785 | 32 | func (s *DeleteCharmSuite) TearDownSuite(c *gc.C) { | 33 | func (s *DeleteCharmSuite) TearDownSuite(c *gc.C) { |
787 | 33 | s.BaseSuite.TearDownSuite(c) | 34 | s.LoggingSuite.TearDownSuite(c) |
788 | 34 | } | 35 | } |
789 | 35 | 36 | ||
790 | 36 | func (s *DeleteCharmSuite) TestInit(c *gc.C) { | 37 | func (s *DeleteCharmSuite) TestInit(c *gc.C) { |
791 | 37 | 38 | ||
792 | === modified file 'cmd/envcmd/environmentcommand_test.go' | |||
793 | --- cmd/envcmd/environmentcommand_test.go 2014-05-16 01:33:13 +0000 | |||
794 | +++ cmd/envcmd/environmentcommand_test.go 2014-05-22 14:33:28 +0000 | |||
795 | @@ -20,13 +20,21 @@ | |||
796 | 20 | ) | 20 | ) |
797 | 21 | 21 | ||
798 | 22 | type EnvironmentCommandSuite struct { | 22 | type EnvironmentCommandSuite struct { |
800 | 23 | coretesting.FakeJujuHomeSuite | 23 | home *coretesting.FakeHome |
801 | 24 | } | 24 | } |
802 | 25 | 25 | ||
803 | 26 | var _ = gc.Suite(&EnvironmentCommandSuite{}) | 26 | var _ = gc.Suite(&EnvironmentCommandSuite{}) |
804 | 27 | 27 | ||
805 | 28 | func Test(t *testing.T) { gc.TestingT(t) } | 28 | func Test(t *testing.T) { gc.TestingT(t) } |
806 | 29 | 29 | ||
807 | 30 | func (s *EnvironmentCommandSuite) SetUpTest(c *gc.C) { | ||
808 | 31 | s.home = coretesting.MakeEmptyFakeHome(c) | ||
809 | 32 | } | ||
810 | 33 | |||
811 | 34 | func (s *EnvironmentCommandSuite) TearDownTest(c *gc.C) { | ||
812 | 35 | s.home.Restore() | ||
813 | 36 | } | ||
814 | 37 | |||
815 | 30 | func (s *EnvironmentCommandSuite) TestReadCurrentEnvironmentUnset(c *gc.C) { | 38 | func (s *EnvironmentCommandSuite) TestReadCurrentEnvironmentUnset(c *gc.C) { |
816 | 31 | env := envcmd.ReadCurrentEnvironment() | 39 | env := envcmd.ReadCurrentEnvironment() |
817 | 32 | c.Assert(env, gc.Equals, "") | 40 | c.Assert(env, gc.Equals, "") |
818 | @@ -40,9 +48,6 @@ | |||
819 | 40 | } | 48 | } |
820 | 41 | 49 | ||
821 | 42 | func (s *EnvironmentCommandSuite) TestGetDefaultEnvironmentNothingSet(c *gc.C) { | 50 | func (s *EnvironmentCommandSuite) TestGetDefaultEnvironmentNothingSet(c *gc.C) { |
822 | 43 | envPath := coretesting.HomePath(".juju", "environments.yaml") | ||
823 | 44 | err := os.Remove(envPath) | ||
824 | 45 | c.Assert(err, gc.IsNil) | ||
825 | 46 | env, err := envcmd.GetDefaultEnvironment() | 51 | env, err := envcmd.GetDefaultEnvironment() |
826 | 47 | c.Assert(env, gc.Equals, "") | 52 | c.Assert(env, gc.Equals, "") |
827 | 48 | c.Assert(err, jc.Satisfies, environs.IsNoEnv) | 53 | c.Assert(err, jc.Satisfies, environs.IsNoEnv) |
828 | @@ -95,12 +100,12 @@ | |||
829 | 95 | c.Assert(*envName, gc.Equals, "explicit") | 100 | c.Assert(*envName, gc.Equals, "explicit") |
830 | 96 | 101 | ||
831 | 97 | // Take environment name from the default. | 102 | // Take environment name from the default. |
833 | 98 | coretesting.WriteEnvironments(c, coretesting.MultipleEnvConfig) | 103 | defer coretesting.MakeFakeHome(c, coretesting.MultipleEnvConfig).Restore() |
834 | 99 | testEnsureEnvName(c, coretesting.SampleEnvName) | 104 | testEnsureEnvName(c, coretesting.SampleEnvName) |
835 | 100 | 105 | ||
836 | 101 | // Take environment name from the one and only environment, | 106 | // Take environment name from the one and only environment, |
837 | 102 | // even if it is not explicitly marked as default. | 107 | // even if it is not explicitly marked as default. |
839 | 103 | coretesting.WriteEnvironments(c, coretesting.SingleEnvConfigNoDefault) | 108 | defer coretesting.MakeFakeHome(c, coretesting.SingleEnvConfigNoDefault).Restore() |
840 | 104 | testEnsureEnvName(c, coretesting.SampleEnvName) | 109 | testEnsureEnvName(c, coretesting.SampleEnvName) |
841 | 105 | 110 | ||
842 | 106 | // If there is a current-environment file, use that. | 111 | // If there is a current-environment file, use that. |
843 | @@ -109,16 +114,13 @@ | |||
844 | 109 | } | 114 | } |
845 | 110 | 115 | ||
846 | 111 | func (s *EnvironmentCommandSuite) TestEnvironCommandInitErrors(c *gc.C) { | 116 | func (s *EnvironmentCommandSuite) TestEnvironCommandInitErrors(c *gc.C) { |
847 | 112 | envPath := coretesting.HomePath(".juju", "environments.yaml") | ||
848 | 113 | err := os.Remove(envPath) | ||
849 | 114 | c.Assert(err, gc.IsNil) | ||
850 | 115 | cmd, _ := prepareEnvCommand(c, "") | 117 | cmd, _ := prepareEnvCommand(c, "") |
852 | 116 | err = cmd.Init(nil) | 118 | err := cmd.Init(nil) |
853 | 117 | c.Assert(err, jc.Satisfies, environs.IsNoEnv) | 119 | c.Assert(err, jc.Satisfies, environs.IsNoEnv) |
854 | 118 | 120 | ||
855 | 119 | // If there are multiple environments but no default, | 121 | // If there are multiple environments but no default, |
856 | 120 | // an error should be returned. | 122 | // an error should be returned. |
858 | 121 | coretesting.WriteEnvironments(c, coretesting.MultipleEnvConfigNoDefault) | 123 | defer coretesting.MakeFakeHome(c, coretesting.MultipleEnvConfigNoDefault).Restore() |
859 | 122 | cmd, _ = prepareEnvCommand(c, "") | 124 | cmd, _ = prepareEnvCommand(c, "") |
860 | 123 | err = cmd.Init(nil) | 125 | err = cmd.Init(nil) |
861 | 124 | c.Assert(err, gc.Equals, envcmd.ErrNoEnvironmentSpecified) | 126 | c.Assert(err, gc.Equals, envcmd.ErrNoEnvironmentSpecified) |
862 | 125 | 127 | ||
863 | === modified file 'cmd/filevar_test.go' | |||
864 | --- cmd/filevar_test.go 2014-05-16 01:33:13 +0000 | |||
865 | +++ cmd/filevar_test.go 2014-05-22 14:33:28 +0000 | |||
866 | @@ -17,7 +17,6 @@ | |||
867 | 17 | ) | 17 | ) |
868 | 18 | 18 | ||
869 | 19 | type FileVarSuite struct { | 19 | type FileVarSuite struct { |
870 | 20 | testing.FakeHomeSuite | ||
871 | 21 | ctx *cmd.Context | 20 | ctx *cmd.Context |
872 | 22 | ValidPath string | 21 | ValidPath string |
873 | 23 | InvalidPath string // invalid path refers to a file which is not readable | 22 | InvalidPath string // invalid path refers to a file which is not readable |
874 | @@ -26,7 +25,6 @@ | |||
875 | 26 | var _ = gc.Suite(&FileVarSuite{}) | 25 | var _ = gc.Suite(&FileVarSuite{}) |
876 | 27 | 26 | ||
877 | 28 | func (s *FileVarSuite) SetUpTest(c *gc.C) { | 27 | func (s *FileVarSuite) SetUpTest(c *gc.C) { |
878 | 29 | s.FakeHomeSuite.SetUpTest(c) | ||
879 | 30 | s.ctx = testing.Context(c) | 28 | s.ctx = testing.Context(c) |
880 | 31 | s.ValidPath = s.ctx.AbsPath("valid.yaml") | 29 | s.ValidPath = s.ctx.AbsPath("valid.yaml") |
881 | 32 | s.InvalidPath = s.ctx.AbsPath("invalid.yaml") | 30 | s.InvalidPath = s.ctx.AbsPath("invalid.yaml") |
882 | @@ -41,6 +39,7 @@ | |||
883 | 41 | } | 39 | } |
884 | 42 | 40 | ||
885 | 43 | func (s *FileVarSuite) TestTildeFileVar(c *gc.C) { | 41 | func (s *FileVarSuite) TestTildeFileVar(c *gc.C) { |
886 | 42 | defer testing.MakeEmptyFakeHome(c).Restore() | ||
887 | 44 | path := filepath.Join(osenv.Home(), "config.yaml") | 43 | path := filepath.Join(osenv.Home(), "config.yaml") |
888 | 45 | err := ioutil.WriteFile(path, []byte("abc"), 0644) | 44 | err := ioutil.WriteFile(path, []byte("abc"), 0644) |
889 | 46 | c.Assert(err, gc.IsNil) | 45 | c.Assert(err, gc.IsNil) |
890 | 47 | 46 | ||
891 | === renamed file 'cmd/juju/user_add.go' => 'cmd/juju/adduser.go' | |||
892 | === renamed file 'cmd/juju/user_add_test.go' => 'cmd/juju/adduser_test.go' | |||
893 | === modified file 'cmd/juju/authorizedkeys_test.go' | |||
894 | --- cmd/juju/authorizedkeys_test.go 2014-05-16 04:20:04 +0000 | |||
895 | +++ cmd/juju/authorizedkeys_test.go 2014-05-22 14:33:28 +0000 | |||
896 | @@ -15,11 +15,13 @@ | |||
897 | 15 | keymanagerserver "launchpad.net/juju-core/state/apiserver/keymanager" | 15 | keymanagerserver "launchpad.net/juju-core/state/apiserver/keymanager" |
898 | 16 | keymanagertesting "launchpad.net/juju-core/state/apiserver/keymanager/testing" | 16 | keymanagertesting "launchpad.net/juju-core/state/apiserver/keymanager/testing" |
899 | 17 | coretesting "launchpad.net/juju-core/testing" | 17 | coretesting "launchpad.net/juju-core/testing" |
900 | 18 | "launchpad.net/juju-core/testing/testbase" | ||
901 | 18 | sshtesting "launchpad.net/juju-core/utils/ssh/testing" | 19 | sshtesting "launchpad.net/juju-core/utils/ssh/testing" |
902 | 19 | ) | 20 | ) |
903 | 20 | 21 | ||
904 | 21 | type AuthorizedKeysSuite struct { | 22 | type AuthorizedKeysSuite struct { |
906 | 22 | coretesting.FakeJujuHomeSuite | 23 | testbase.LoggingSuite |
907 | 24 | jujuHome *coretesting.FakeHome | ||
908 | 23 | } | 25 | } |
909 | 24 | 26 | ||
910 | 25 | var _ = gc.Suite(&AuthorizedKeysSuite{}) | 27 | var _ = gc.Suite(&AuthorizedKeysSuite{}) |
911 | @@ -32,6 +34,16 @@ | |||
912 | 32 | "list", | 34 | "list", |
913 | 33 | } | 35 | } |
914 | 34 | 36 | ||
915 | 37 | func (s *AuthorizedKeysSuite) SetUpTest(c *gc.C) { | ||
916 | 38 | s.LoggingSuite.SetUpTest(c) | ||
917 | 39 | s.jujuHome = coretesting.MakeEmptyFakeHome(c) | ||
918 | 40 | } | ||
919 | 41 | |||
920 | 42 | func (s *AuthorizedKeysSuite) TearDownTest(c *gc.C) { | ||
921 | 43 | s.jujuHome.Restore() | ||
922 | 44 | s.LoggingSuite.TearDownTest(c) | ||
923 | 45 | } | ||
924 | 46 | |||
925 | 35 | func (s *AuthorizedKeysSuite) TestHelpCommands(c *gc.C) { | 47 | func (s *AuthorizedKeysSuite) TestHelpCommands(c *gc.C) { |
926 | 36 | // Check that we have correctly registered all the sub commands | 48 | // Check that we have correctly registered all the sub commands |
927 | 37 | // by checking the help output. | 49 | // by checking the help output. |
928 | 38 | 50 | ||
929 | === modified file 'cmd/juju/bootstrap_test.go' | |||
930 | --- cmd/juju/bootstrap_test.go 2014-05-21 22:15:10 +0000 | |||
931 | +++ cmd/juju/bootstrap_test.go 2014-05-22 14:33:28 +0000 | |||
932 | @@ -5,7 +5,6 @@ | |||
933 | 5 | 5 | ||
934 | 6 | import ( | 6 | import ( |
935 | 7 | "fmt" | 7 | "fmt" |
936 | 8 | "os" | ||
937 | 9 | "strings" | 8 | "strings" |
938 | 10 | 9 | ||
939 | 11 | "github.com/juju/errors" | 10 | "github.com/juju/errors" |
940 | @@ -31,12 +30,13 @@ | |||
941 | 31 | "launchpad.net/juju-core/juju/arch" | 30 | "launchpad.net/juju-core/juju/arch" |
942 | 32 | "launchpad.net/juju-core/provider/dummy" | 31 | "launchpad.net/juju-core/provider/dummy" |
943 | 33 | coretesting "launchpad.net/juju-core/testing" | 32 | coretesting "launchpad.net/juju-core/testing" |
944 | 33 | "launchpad.net/juju-core/testing/testbase" | ||
945 | 34 | coretools "launchpad.net/juju-core/tools" | 34 | coretools "launchpad.net/juju-core/tools" |
946 | 35 | "launchpad.net/juju-core/version" | 35 | "launchpad.net/juju-core/version" |
947 | 36 | ) | 36 | ) |
948 | 37 | 37 | ||
949 | 38 | type BootstrapSuite struct { | 38 | type BootstrapSuite struct { |
951 | 39 | coretesting.FakeJujuHomeSuite | 39 | testbase.LoggingSuite |
952 | 40 | coretesting.MgoSuite | 40 | coretesting.MgoSuite |
953 | 41 | envtesting.ToolsFixture | 41 | envtesting.ToolsFixture |
954 | 42 | } | 42 | } |
955 | @@ -44,12 +44,12 @@ | |||
956 | 44 | var _ = gc.Suite(&BootstrapSuite{}) | 44 | var _ = gc.Suite(&BootstrapSuite{}) |
957 | 45 | 45 | ||
958 | 46 | func (s *BootstrapSuite) SetUpSuite(c *gc.C) { | 46 | func (s *BootstrapSuite) SetUpSuite(c *gc.C) { |
960 | 47 | s.FakeJujuHomeSuite.SetUpSuite(c) | 47 | s.LoggingSuite.SetUpSuite(c) |
961 | 48 | s.MgoSuite.SetUpSuite(c) | 48 | s.MgoSuite.SetUpSuite(c) |
962 | 49 | } | 49 | } |
963 | 50 | 50 | ||
964 | 51 | func (s *BootstrapSuite) SetUpTest(c *gc.C) { | 51 | func (s *BootstrapSuite) SetUpTest(c *gc.C) { |
966 | 52 | s.FakeJujuHomeSuite.SetUpTest(c) | 52 | s.LoggingSuite.SetUpTest(c) |
967 | 53 | s.MgoSuite.SetUpTest(c) | 53 | s.MgoSuite.SetUpTest(c) |
968 | 54 | s.ToolsFixture.SetUpTest(c) | 54 | s.ToolsFixture.SetUpTest(c) |
969 | 55 | 55 | ||
970 | @@ -62,13 +62,13 @@ | |||
971 | 62 | 62 | ||
972 | 63 | func (s *BootstrapSuite) TearDownSuite(c *gc.C) { | 63 | func (s *BootstrapSuite) TearDownSuite(c *gc.C) { |
973 | 64 | s.MgoSuite.TearDownSuite(c) | 64 | s.MgoSuite.TearDownSuite(c) |
975 | 65 | s.FakeJujuHomeSuite.TearDownSuite(c) | 65 | s.LoggingSuite.TearDownSuite(c) |
976 | 66 | } | 66 | } |
977 | 67 | 67 | ||
978 | 68 | func (s *BootstrapSuite) TearDownTest(c *gc.C) { | 68 | func (s *BootstrapSuite) TearDownTest(c *gc.C) { |
979 | 69 | s.ToolsFixture.TearDownTest(c) | 69 | s.ToolsFixture.TearDownTest(c) |
980 | 70 | s.MgoSuite.TearDownTest(c) | 70 | s.MgoSuite.TearDownTest(c) |
982 | 71 | s.FakeJujuHomeSuite.TearDownTest(c) | 71 | s.LoggingSuite.TearDownTest(c) |
983 | 72 | dummy.Reset() | 72 | dummy.Reset() |
984 | 73 | } | 73 | } |
985 | 74 | 74 | ||
986 | @@ -130,7 +130,8 @@ | |||
987 | 130 | toolsVersions = append(toolsVersions, testVersion) | 130 | toolsVersions = append(toolsVersions, testVersion) |
988 | 131 | } | 131 | } |
989 | 132 | } | 132 | } |
991 | 133 | resetJujuHome(c) | 133 | _, fake := makeEmptyFakeHome(c) |
992 | 134 | defer fake.Restore() | ||
993 | 134 | sourceDir := createToolsSource(c, toolsVersions) | 135 | sourceDir := createToolsSource(c, toolsVersions) |
994 | 135 | s.PatchValue(&envtools.DefaultBaseURL, sourceDir) | 136 | s.PatchValue(&envtools.DefaultBaseURL, sourceDir) |
995 | 136 | 137 | ||
996 | @@ -176,7 +177,8 @@ | |||
997 | 176 | func (test bootstrapTest) run(c *gc.C) { | 177 | func (test bootstrapTest) run(c *gc.C) { |
998 | 177 | // Create home with dummy provider and remove all | 178 | // Create home with dummy provider and remove all |
999 | 178 | // of its envtools. | 179 | // of its envtools. |
1001 | 179 | env := resetJujuHome(c) | 180 | env, fake := makeEmptyFakeHome(c) |
1002 | 181 | defer fake.Restore() | ||
1003 | 180 | 182 | ||
1004 | 181 | if test.version != "" { | 183 | if test.version != "" { |
1005 | 182 | useVersion := strings.Replace(test.version, "%LTS%", config.LatestLtsSeries(), 1) | 184 | useVersion := strings.Replace(test.version, "%LTS%", config.LatestLtsSeries(), 1) |
1006 | @@ -368,7 +370,8 @@ | |||
1007 | 368 | }} | 370 | }} |
1008 | 369 | 371 | ||
1009 | 370 | func (s *BootstrapSuite) TestBootstrapTwice(c *gc.C) { | 372 | func (s *BootstrapSuite) TestBootstrapTwice(c *gc.C) { |
1011 | 371 | env := resetJujuHome(c) | 373 | env, fake := makeEmptyFakeHome(c) |
1012 | 374 | defer fake.Restore() | ||
1013 | 372 | defaultSeriesVersion := version.Current | 375 | defaultSeriesVersion := version.Current |
1014 | 373 | defaultSeriesVersion.Series = config.PreferredSeries(env.Config()) | 376 | defaultSeriesVersion.Series = config.PreferredSeries(env.Config()) |
1015 | 374 | // Force a dev version by having an odd minor version number. | 377 | // Force a dev version by having an odd minor version number. |
1016 | @@ -400,7 +403,8 @@ | |||
1017 | 400 | s.PatchValue(&getBootstrapFuncs, func() BootstrapInterface { | 403 | s.PatchValue(&getBootstrapFuncs, func() BootstrapInterface { |
1018 | 401 | return _bootstrap | 404 | return _bootstrap |
1019 | 402 | }) | 405 | }) |
1021 | 403 | resetJujuHome(c) | 406 | _, fake := makeEmptyFakeHome(c) |
1022 | 407 | defer fake.Restore() | ||
1023 | 404 | 408 | ||
1024 | 405 | ctx, err := coretesting.RunCommand(c, envcmd.Wrap(&BootstrapCommand{}), | 409 | ctx, err := coretesting.RunCommand(c, envcmd.Wrap(&BootstrapCommand{}), |
1025 | 406 | []string{"--upload-tools", argVariant, "foo,bar"}) | 410 | []string{"--upload-tools", argVariant, "foo,bar"}) |
1026 | @@ -411,7 +415,8 @@ | |||
1027 | 411 | } | 415 | } |
1028 | 412 | 416 | ||
1029 | 413 | func (s *BootstrapSuite) TestBootstrapJenvWarning(c *gc.C) { | 417 | func (s *BootstrapSuite) TestBootstrapJenvWarning(c *gc.C) { |
1031 | 414 | env := resetJujuHome(c) | 418 | env, fake := makeEmptyFakeHome(c) |
1032 | 419 | defer fake.Restore() | ||
1033 | 415 | defaultSeriesVersion := version.Current | 420 | defaultSeriesVersion := version.Current |
1034 | 416 | defaultSeriesVersion.Series = config.PreferredSeries(env.Config()) | 421 | defaultSeriesVersion.Series = config.PreferredSeries(env.Config()) |
1035 | 417 | // Force a dev version by having an odd minor version number. | 422 | // Force a dev version by having an odd minor version number. |
1036 | @@ -437,7 +442,8 @@ | |||
1037 | 437 | 442 | ||
1038 | 438 | func (s *BootstrapSuite) TestInvalidLocalSource(c *gc.C) { | 443 | func (s *BootstrapSuite) TestInvalidLocalSource(c *gc.C) { |
1039 | 439 | s.PatchValue(&version.Current.Number, version.MustParse("1.2.0")) | 444 | s.PatchValue(&version.Current.Number, version.MustParse("1.2.0")) |
1041 | 440 | env := resetJujuHome(c) | 445 | env, fake := makeEmptyFakeHome(c) |
1042 | 446 | defer fake.Restore() | ||
1043 | 441 | 447 | ||
1044 | 442 | // Bootstrap the environment with an invalid source. | 448 | // Bootstrap the environment with an invalid source. |
1045 | 443 | // The command returns with an error. | 449 | // The command returns with an error. |
1046 | @@ -485,7 +491,8 @@ | |||
1047 | 485 | 491 | ||
1048 | 486 | func (s *BootstrapSuite) TestUploadLocalImageMetadata(c *gc.C) { | 492 | func (s *BootstrapSuite) TestUploadLocalImageMetadata(c *gc.C) { |
1049 | 487 | sourceDir, expected := createImageMetadata(c) | 493 | sourceDir, expected := createImageMetadata(c) |
1051 | 488 | env := resetJujuHome(c) | 494 | env, fake := makeEmptyFakeHome(c) |
1052 | 495 | defer fake.Restore() | ||
1053 | 489 | 496 | ||
1054 | 490 | // Bootstrap the environment with the valid source. | 497 | // Bootstrap the environment with the valid source. |
1055 | 491 | // Force a dev version by having an odd minor version number. | 498 | // Force a dev version by having an odd minor version number. |
1056 | @@ -506,7 +513,8 @@ | |||
1057 | 506 | func (s *BootstrapSuite) TestAutoSyncLocalSource(c *gc.C) { | 513 | func (s *BootstrapSuite) TestAutoSyncLocalSource(c *gc.C) { |
1058 | 507 | sourceDir := createToolsSource(c, vAll) | 514 | sourceDir := createToolsSource(c, vAll) |
1059 | 508 | s.PatchValue(&version.Current.Number, version.MustParse("1.2.0")) | 515 | s.PatchValue(&version.Current.Number, version.MustParse("1.2.0")) |
1061 | 509 | env := resetJujuHome(c) | 516 | env, fake := makeEmptyFakeHome(c) |
1062 | 517 | defer fake.Restore() | ||
1063 | 510 | 518 | ||
1064 | 511 | // Bootstrap the environment with the valid source. | 519 | // Bootstrap the environment with the valid source. |
1065 | 512 | // The bootstrapping has to show no error, because the tools | 520 | // The bootstrapping has to show no error, because the tools |
1066 | @@ -534,7 +542,9 @@ | |||
1067 | 534 | 542 | ||
1068 | 535 | // Create home with dummy provider and remove all | 543 | // Create home with dummy provider and remove all |
1069 | 536 | // of its envtools. | 544 | // of its envtools. |
1071 | 537 | return resetJujuHome(c) | 545 | env, fake := makeEmptyFakeHome(c) |
1072 | 546 | s.AddCleanup(func(*gc.C) { fake.Restore() }) | ||
1073 | 547 | return env | ||
1074 | 538 | } | 548 | } |
1075 | 539 | 549 | ||
1076 | 540 | func (s *BootstrapSuite) TestAutoUploadAfterFailedSync(c *gc.C) { | 550 | func (s *BootstrapSuite) TestAutoUploadAfterFailedSync(c *gc.C) { |
1077 | @@ -602,7 +612,8 @@ | |||
1078 | 602 | } | 612 | } |
1079 | 603 | 613 | ||
1080 | 604 | func (s *BootstrapSuite) TestBootstrapDestroy(c *gc.C) { | 614 | func (s *BootstrapSuite) TestBootstrapDestroy(c *gc.C) { |
1082 | 605 | resetJujuHome(c) | 615 | _, fake := makeEmptyFakeHome(c) |
1083 | 616 | defer fake.Restore() | ||
1084 | 606 | devVersion := version.Current | 617 | devVersion := version.Current |
1085 | 607 | // Force a dev version by having an odd minor version number. | 618 | // Force a dev version by having an odd minor version number. |
1086 | 608 | // This is because we have not uploaded any tools and auto | 619 | // This is because we have not uploaded any tools and auto |
1087 | @@ -640,19 +651,16 @@ | |||
1088 | 640 | return source | 651 | return source |
1089 | 641 | } | 652 | } |
1090 | 642 | 653 | ||
1097 | 643 | // resetJujuHome restores an new, clean Juju home environment without tools. | 654 | // makeEmptyFakeHome creates a faked home without envtools. |
1098 | 644 | func resetJujuHome(c *gc.C) environs.Environ { | 655 | func makeEmptyFakeHome(c *gc.C) (environs.Environ, *coretesting.FakeHome) { |
1099 | 645 | jenvDir := coretesting.HomePath(".juju", "environments") | 656 | fake := coretesting.MakeFakeHome(c, envConfig) |
1094 | 646 | err := os.RemoveAll(jenvDir) | ||
1095 | 647 | c.Assert(err, gc.IsNil) | ||
1096 | 648 | coretesting.WriteEnvironments(c, envConfig) | ||
1100 | 649 | dummy.Reset() | 657 | dummy.Reset() |
1101 | 650 | store, err := configstore.Default() | 658 | store, err := configstore.Default() |
1102 | 651 | c.Assert(err, gc.IsNil) | 659 | c.Assert(err, gc.IsNil) |
1103 | 652 | env, err := environs.PrepareFromName("peckham", nullContext(c), store) | 660 | env, err := environs.PrepareFromName("peckham", nullContext(c), store) |
1104 | 653 | c.Assert(err, gc.IsNil) | 661 | c.Assert(err, gc.IsNil) |
1105 | 654 | envtesting.RemoveAllTools(c, env) | 662 | envtesting.RemoveAllTools(c, env) |
1107 | 655 | return env | 663 | return env, fake |
1108 | 656 | } | 664 | } |
1109 | 657 | 665 | ||
1110 | 658 | // checkTools check if the environment contains the passed envtools. | 666 | // checkTools check if the environment contains the passed envtools. |
1111 | 659 | 667 | ||
1112 | === modified file 'cmd/juju/cmd_test.go' | |||
1113 | --- cmd/juju/cmd_test.go 2014-05-16 01:33:13 +0000 | |||
1114 | +++ cmd/juju/cmd_test.go 2014-05-22 14:33:28 +0000 | |||
1115 | @@ -22,6 +22,7 @@ | |||
1116 | 22 | 22 | ||
1117 | 23 | type CmdSuite struct { | 23 | type CmdSuite struct { |
1118 | 24 | testing.JujuConnSuite | 24 | testing.JujuConnSuite |
1119 | 25 | home *coretesting.FakeHome | ||
1120 | 25 | } | 26 | } |
1121 | 26 | 27 | ||
1122 | 27 | var _ = gc.Suite(&CmdSuite{}) | 28 | var _ = gc.Suite(&CmdSuite{}) |
1123 | @@ -49,10 +50,11 @@ | |||
1124 | 49 | 50 | ||
1125 | 50 | func (s *CmdSuite) SetUpTest(c *gc.C) { | 51 | func (s *CmdSuite) SetUpTest(c *gc.C) { |
1126 | 51 | s.JujuConnSuite.SetUpTest(c) | 52 | s.JujuConnSuite.SetUpTest(c) |
1128 | 52 | coretesting.WriteEnvironments(c, envConfig, "peckham", "walthamstow", "brokenenv") | 53 | s.home = coretesting.MakeFakeHome(c, envConfig, "peckham", "walthamstow", "brokenenv") |
1129 | 53 | } | 54 | } |
1130 | 54 | 55 | ||
1131 | 55 | func (s *CmdSuite) TearDownTest(c *gc.C) { | 56 | func (s *CmdSuite) TearDownTest(c *gc.C) { |
1132 | 57 | s.home.Restore() | ||
1133 | 56 | s.JujuConnSuite.TearDownTest(c) | 58 | s.JujuConnSuite.TearDownTest(c) |
1134 | 57 | } | 59 | } |
1135 | 58 | 60 | ||
1136 | 59 | 61 | ||
1137 | === modified file 'cmd/juju/debuglog_test.go' | |||
1138 | --- cmd/juju/debuglog_test.go 2014-05-15 05:14:01 +0000 | |||
1139 | +++ cmd/juju/debuglog_test.go 2014-05-22 14:33:28 +0000 | |||
1140 | @@ -21,7 +21,7 @@ | |||
1141 | 21 | ) | 21 | ) |
1142 | 22 | 22 | ||
1143 | 23 | type DebugLogSuite struct { | 23 | type DebugLogSuite struct { |
1145 | 24 | testing.FakeJujuHomeSuite | 24 | testing.FakeHomeSuite |
1146 | 25 | } | 25 | } |
1147 | 26 | 26 | ||
1148 | 27 | var _ = gc.Suite(&DebugLogSuite{}) | 27 | var _ = gc.Suite(&DebugLogSuite{}) |
1149 | 28 | 28 | ||
1150 | === modified file 'cmd/juju/deploy.go' | |||
1151 | --- cmd/juju/deploy.go 2014-05-15 10:12:36 +0000 | |||
1152 | +++ cmd/juju/deploy.go 2014-05-22 14:33:28 +0000 | |||
1153 | @@ -66,32 +66,6 @@ | |||
1154 | 66 | by set-constraints). | 66 | by set-constraints). |
1155 | 67 | 67 | ||
1156 | 68 | Charms can be deployed to a specific machine using the --to argument. | 68 | Charms can be deployed to a specific machine using the --to argument. |
1157 | 69 | If the destination is an LXC container the default is to use lxc-clone | ||
1158 | 70 | to create the container where possible. For Ubuntu deployments, lxc-clone | ||
1159 | 71 | is supported for the trusty OS series and later. A 'template' container is | ||
1160 | 72 | created with the name | ||
1161 | 73 | juju-<series>-template | ||
1162 | 74 | where <series> is the OS series, for example 'juju-trusty-template'. | ||
1163 | 75 | |||
1164 | 76 | You can override the use of clone by changing the provider configuration: | ||
1165 | 77 | lxc-clone: false | ||
1166 | 78 | |||
1167 | 79 | If you have the main container directory mounted on a btrfs partition, | ||
1168 | 80 | then the clone will be using btrfs snapshots to create the containers. | ||
1169 | 81 | This means that clones use up much less disk space. If you do not have btrfs, | ||
1170 | 82 | lxc will attempt to use aufs (an overlay type filesystem). You can | ||
1171 | 83 | explicitly ask Juju to create full containers and not overlays by specifying | ||
1172 | 84 | the following in the provider configuration: | ||
1173 | 85 | lxc-clone-aufs: false | ||
1174 | 86 | |||
1175 | 87 | Examples: | ||
1176 | 88 | juju deploy mysql --to 23 (deploy to machine 23) | ||
1177 | 89 | juju deploy mysql --to 24/lxc/3 (deploy to lxc container 3 on host machine 24) | ||
1178 | 90 | juju deploy mysql --to lxc:25 (deploy to a new lxc container on host machine 25) | ||
1179 | 91 | |||
1180 | 92 | juju deploy mysql -n 5 --constraints mem=8G (deploy 5 instances of mysql with at least 8 GB of RAM each) | ||
1181 | 93 | |||
1182 | 94 | juju deploy mysql --networks=storage,mynet --exclude-networks=logging | ||
1183 | 95 | 69 | ||
1184 | 96 | Like constraints, service-specific network requirements can be | 70 | Like constraints, service-specific network requirements can be |
1185 | 97 | specified with --networks and --exclude-networks arguments, both can | 71 | specified with --networks and --exclude-networks arguments, both can |
1186 | @@ -101,6 +75,15 @@ | |||
1187 | 101 | and to ensure none of the networks in --exclude-networks are added to | 75 | and to ensure none of the networks in --exclude-networks are added to |
1188 | 102 | the service's machines. Not supported on all providers. | 76 | the service's machines. Not supported on all providers. |
1189 | 103 | 77 | ||
1190 | 78 | Examples: | ||
1191 | 79 | juju deploy mysql --to 23 (Deploy to machine 23) | ||
1192 | 80 | juju deploy mysql --to 24/lxc/3 (Deploy to lxc container 3 on host machine 24) | ||
1193 | 81 | juju deploy mysql --to lxc:25 (Deploy to a new lxc container on host machine 25) | ||
1194 | 82 | |||
1195 | 83 | juju deploy mysql -n 5 --constraints mem=8G (deploy 5 instances of mysql with at least 8 GB of RAM each) | ||
1196 | 84 | |||
1197 | 85 | juju deploy mysql --networks=storage,mynet --exclude-networks=logging | ||
1198 | 86 | |||
1199 | 104 | See Also: | 87 | See Also: |
1200 | 105 | juju help constraints | 88 | juju help constraints |
1201 | 106 | juju help set-constraints | 89 | juju help set-constraints |
1202 | 107 | 90 | ||
1203 | === modified file 'cmd/juju/help_topics.go' | |||
1204 | --- cmd/juju/help_topics.go 2014-05-15 10:12:36 +0000 | |||
1205 | +++ cmd/juju/help_topics.go 2014-05-22 14:33:28 +0000 | |||
1206 | @@ -79,23 +79,22 @@ | |||
1207 | 79 | juju deploy wordpress | 79 | juju deploy wordpress |
1208 | 80 | juju add-relation wordpress mysql | 80 | juju add-relation wordpress mysql |
1209 | 81 | 81 | ||
1213 | 82 | For Ubuntu deployments, the local provider will prefer to use lxc-clone to create | 82 | As of trusty, the local provider will prefer to use lxc-clone to create |
1214 | 83 | the machines for the trusty OS series and later. | 83 | the machines. A 'template' container is created with the name |
1212 | 84 | A 'template' container is created with the name | ||
1215 | 85 | juju-<series>-template | 84 | juju-<series>-template |
1217 | 86 | where <series> is the OS series, for example 'juju-trusty-template'. | 85 | where <series> is the OS series, for example 'juju-precise-template'. |
1218 | 87 | You can override the use of clone by specifying | 86 | You can override the use of clone by specifying |
1220 | 88 | lxc-clone: true | 87 | use-clone: true |
1221 | 89 | or | 88 | or |
1223 | 90 | lxc-clone: false | 89 | use-clone: false |
1224 | 91 | in the configuration for your local provider. If you have the main container | 90 | in the configuration for your local provider. If you have the main container |
1225 | 92 | directory mounted on a btrfs partition, then the clone will be using btrfs | 91 | directory mounted on a btrfs partition, then the clone will be using btrfs |
1227 | 93 | snapshots to create the containers. This means that clones use up much | 92 | snapshots to create the containers. This means that the clones use up much |
1228 | 94 | less disk space. If you do not have btrfs, lxc will attempt to use aufs | 93 | less disk space. If you do not have btrfs, lxc will attempt to use aufs |
1230 | 95 | (an overlay type filesystem). You can explicitly ask Juju to create | 94 | (which is an overlay type filesystem). You can explicitly ask Juju to create |
1231 | 96 | full containers and not overlays by specifying the following in the provider | 95 | full containers and not overlays by specifying the following in the provider |
1232 | 97 | configuration: | 96 | configuration: |
1234 | 98 | lxc-clone-aufs: false | 97 | use-clone-aufs: false |
1235 | 99 | 98 | ||
1236 | 100 | 99 | ||
1237 | 101 | References: | 100 | References: |
1238 | 102 | 101 | ||
1239 | === modified file 'cmd/juju/helptool_test.go' | |||
1240 | --- cmd/juju/helptool_test.go 2014-05-16 04:20:04 +0000 | |||
1241 | +++ cmd/juju/helptool_test.go 2014-05-22 14:33:28 +0000 | |||
1242 | @@ -13,11 +13,19 @@ | |||
1243 | 13 | ) | 13 | ) |
1244 | 14 | 14 | ||
1245 | 15 | type HelpToolSuite struct { | 15 | type HelpToolSuite struct { |
1247 | 16 | testing.FakeJujuHomeSuite | 16 | home *testing.FakeHome |
1248 | 17 | } | 17 | } |
1249 | 18 | 18 | ||
1250 | 19 | var _ = gc.Suite(&HelpToolSuite{}) | 19 | var _ = gc.Suite(&HelpToolSuite{}) |
1251 | 20 | 20 | ||
1252 | 21 | func (suite *HelpToolSuite) SetUpTest(c *gc.C) { | ||
1253 | 22 | suite.home = testing.MakeSampleHome(c) | ||
1254 | 23 | } | ||
1255 | 24 | |||
1256 | 25 | func (suite *HelpToolSuite) TearDownTest(c *gc.C) { | ||
1257 | 26 | suite.home.Restore() | ||
1258 | 27 | } | ||
1259 | 28 | |||
1260 | 21 | func (suite *HelpToolSuite) TestHelpToolHelp(c *gc.C) { | 29 | func (suite *HelpToolSuite) TestHelpToolHelp(c *gc.C) { |
1261 | 22 | output := badrun(c, 0, "help", "help-tool") | 30 | output := badrun(c, 0, "help", "help-tool") |
1262 | 23 | c.Assert(output, gc.Equals, `usage: juju help-tool [tool] | 31 | c.Assert(output, gc.Equals, `usage: juju help-tool [tool] |
1263 | 24 | 32 | ||
1264 | === modified file 'cmd/juju/init_test.go' | |||
1265 | --- cmd/juju/init_test.go 2014-05-16 04:20:04 +0000 | |||
1266 | +++ cmd/juju/init_test.go 2014-05-22 14:33:28 +0000 | |||
1267 | @@ -6,7 +6,6 @@ | |||
1268 | 6 | import ( | 6 | import ( |
1269 | 7 | "bytes" | 7 | "bytes" |
1270 | 8 | "io/ioutil" | 8 | "io/ioutil" |
1271 | 9 | "os" | ||
1272 | 10 | "strings" | 9 | "strings" |
1273 | 11 | 10 | ||
1274 | 12 | gc "launchpad.net/gocheck" | 11 | gc "launchpad.net/gocheck" |
1275 | @@ -16,7 +15,6 @@ | |||
1276 | 16 | ) | 15 | ) |
1277 | 17 | 16 | ||
1278 | 18 | type InitSuite struct { | 17 | type InitSuite struct { |
1279 | 19 | testing.FakeJujuHomeSuite | ||
1280 | 20 | } | 18 | } |
1281 | 21 | 19 | ||
1282 | 22 | var _ = gc.Suite(&InitSuite{}) | 20 | var _ = gc.Suite(&InitSuite{}) |
1283 | @@ -24,9 +22,7 @@ | |||
1284 | 24 | // The environments.yaml is created by default if it | 22 | // The environments.yaml is created by default if it |
1285 | 25 | // does not already exist. | 23 | // does not already exist. |
1286 | 26 | func (*InitSuite) TestBoilerPlateEnvironment(c *gc.C) { | 24 | func (*InitSuite) TestBoilerPlateEnvironment(c *gc.C) { |
1290 | 27 | envPath := testing.HomePath(".juju", "environments.yaml") | 25 | defer testing.MakeEmptyFakeHome(c).Restore() |
1288 | 28 | err := os.Remove(envPath) | ||
1289 | 29 | c.Assert(err, gc.IsNil) | ||
1291 | 30 | ctx := testing.Context(c) | 26 | ctx := testing.Context(c) |
1292 | 31 | code := cmd.Main(&InitCommand{}, ctx, nil) | 27 | code := cmd.Main(&InitCommand{}, ctx, nil) |
1293 | 32 | c.Check(code, gc.Equals, 0) | 28 | c.Check(code, gc.Equals, 0) |
1294 | @@ -43,9 +39,7 @@ | |||
1295 | 43 | // The boilerplate is sent to stdout with --show, and the environments.yaml | 39 | // The boilerplate is sent to stdout with --show, and the environments.yaml |
1296 | 44 | // is not created. | 40 | // is not created. |
1297 | 45 | func (*InitSuite) TestBoilerPlatePrinted(c *gc.C) { | 41 | func (*InitSuite) TestBoilerPlatePrinted(c *gc.C) { |
1301 | 46 | envPath := testing.HomePath(".juju", "environments.yaml") | 42 | defer testing.MakeEmptyFakeHome(c).Restore() |
1299 | 47 | err := os.Remove(envPath) | ||
1300 | 48 | c.Assert(err, gc.IsNil) | ||
1302 | 49 | ctx := testing.Context(c) | 43 | ctx := testing.Context(c) |
1303 | 50 | code := cmd.Main(&InitCommand{}, ctx, []string{"--show"}) | 44 | code := cmd.Main(&InitCommand{}, ctx, []string{"--show"}) |
1304 | 51 | c.Check(code, gc.Equals, 0) | 45 | c.Check(code, gc.Equals, 0) |
1305 | @@ -53,7 +47,7 @@ | |||
1306 | 53 | strippedOut := strings.Replace(outStr, "\n", "", -1) | 47 | strippedOut := strings.Replace(outStr, "\n", "", -1) |
1307 | 54 | c.Check(strippedOut, gc.Matches, ".*# This is the Juju config file, which you can use.*") | 48 | c.Check(strippedOut, gc.Matches, ".*# This is the Juju config file, which you can use.*") |
1308 | 55 | environpath := testing.HomePath(".juju", "environments.yaml") | 49 | environpath := testing.HomePath(".juju", "environments.yaml") |
1310 | 56 | _, err = ioutil.ReadFile(environpath) | 50 | _, err := ioutil.ReadFile(environpath) |
1311 | 57 | c.Assert(err, gc.NotNil) | 51 | c.Assert(err, gc.NotNil) |
1312 | 58 | } | 52 | } |
1313 | 59 | 53 | ||
1314 | @@ -68,7 +62,7 @@ | |||
1315 | 68 | // An existing environments.yaml will not be overwritten without | 62 | // An existing environments.yaml will not be overwritten without |
1316 | 69 | // the explicit -f option. | 63 | // the explicit -f option. |
1317 | 70 | func (*InitSuite) TestExistingEnvironmentNotOverwritten(c *gc.C) { | 64 | func (*InitSuite) TestExistingEnvironmentNotOverwritten(c *gc.C) { |
1319 | 71 | testing.WriteEnvironments(c, existingEnv) | 65 | defer testing.MakeFakeHome(c, existingEnv, "existing").Restore() |
1320 | 72 | 66 | ||
1321 | 73 | ctx := testing.Context(c) | 67 | ctx := testing.Context(c) |
1322 | 74 | code := cmd.Main(&InitCommand{}, ctx, nil) | 68 | code := cmd.Main(&InitCommand{}, ctx, nil) |
1323 | @@ -85,7 +79,7 @@ | |||
1324 | 85 | // An existing environments.yaml will be overwritten when -f is | 79 | // An existing environments.yaml will be overwritten when -f is |
1325 | 86 | // given explicitly. | 80 | // given explicitly. |
1326 | 87 | func (*InitSuite) TestExistingEnvironmentOverwritten(c *gc.C) { | 81 | func (*InitSuite) TestExistingEnvironmentOverwritten(c *gc.C) { |
1328 | 88 | testing.WriteEnvironments(c, existingEnv) | 82 | defer testing.MakeFakeHome(c, existingEnv, "existing").Restore() |
1329 | 89 | 83 | ||
1330 | 90 | ctx := testing.Context(c) | 84 | ctx := testing.Context(c) |
1331 | 91 | code := cmd.Main(&InitCommand{}, ctx, []string{"-f"}) | 85 | code := cmd.Main(&InitCommand{}, ctx, []string{"-f"}) |
1332 | 92 | 86 | ||
1333 | === modified file 'cmd/juju/main.go' | |||
1334 | --- cmd/juju/main.go 2014-05-20 01:23:55 +0000 | |||
1335 | +++ cmd/juju/main.go 2014-05-22 14:33:28 +0000 | |||
1336 | @@ -141,9 +141,6 @@ | |||
1337 | 141 | // Manage authorized ssh keys. | 141 | // Manage authorized ssh keys. |
1338 | 142 | r.Register(NewAuthorizedKeysCommand()) | 142 | r.Register(NewAuthorizedKeysCommand()) |
1339 | 143 | 143 | ||
1340 | 144 | // Manage users and access | ||
1341 | 145 | r.Register(NewUserCommand()) | ||
1342 | 146 | |||
1343 | 147 | // Manage state server availability. | 144 | // Manage state server availability. |
1344 | 148 | r.Register(wrapEnvCommand(&EnsureAvailabilityCommand{})) | 145 | r.Register(wrapEnvCommand(&EnsureAvailabilityCommand{})) |
1345 | 149 | 146 | ||
1346 | 150 | 147 | ||
1347 | === modified file 'cmd/juju/main_test.go' | |||
1348 | --- cmd/juju/main_test.go 2014-05-20 01:23:55 +0000 | |||
1349 | +++ cmd/juju/main_test.go 2014-05-22 14:33:28 +0000 | |||
1350 | @@ -31,7 +31,7 @@ | |||
1351 | 31 | } | 31 | } |
1352 | 32 | 32 | ||
1353 | 33 | type MainSuite struct { | 33 | type MainSuite struct { |
1355 | 34 | testing.FakeJujuHomeSuite | 34 | testing.FakeHomeSuite |
1356 | 35 | } | 35 | } |
1357 | 36 | 36 | ||
1358 | 37 | var _ = gc.Suite(&MainSuite{}) | 37 | var _ = gc.Suite(&MainSuite{}) |
1359 | @@ -79,6 +79,7 @@ | |||
1360 | 79 | } | 79 | } |
1361 | 80 | 80 | ||
1362 | 81 | func (s *MainSuite) TestRunMain(c *gc.C) { | 81 | func (s *MainSuite) TestRunMain(c *gc.C) { |
1363 | 82 | defer testing.MakeSampleHome(c).Restore() | ||
1364 | 82 | // The test array structure needs to be inline here as some of the | 83 | // The test array structure needs to be inline here as some of the |
1365 | 83 | // expected values below use deployHelpText(). This constructs the deploy | 84 | // expected values below use deployHelpText(). This constructs the deploy |
1366 | 84 | // command and runs gets the help for it. When the deploy command is | 85 | // command and runs gets the help for it. When the deploy command is |
1367 | @@ -183,6 +184,7 @@ | |||
1368 | 183 | 184 | ||
1369 | 184 | func (s *MainSuite) TestActualRunJujuArgsBeforeCommand(c *gc.C) { | 185 | func (s *MainSuite) TestActualRunJujuArgsBeforeCommand(c *gc.C) { |
1370 | 185 | c.Skip("breaks test isolation: lp:1233601") | 186 | c.Skip("breaks test isolation: lp:1233601") |
1371 | 187 | defer testing.MakeFakeHomeNoEnvironments(c, "one").Restore() | ||
1372 | 186 | // Check global args work when specified before command | 188 | // Check global args work when specified before command |
1373 | 187 | msg := breakJuju(c, "Bootstrap") | 189 | msg := breakJuju(c, "Bootstrap") |
1374 | 188 | logpath := filepath.Join(c.MkDir(), "log") | 190 | logpath := filepath.Join(c.MkDir(), "log") |
1375 | @@ -196,6 +198,7 @@ | |||
1376 | 196 | 198 | ||
1377 | 197 | func (s *MainSuite) TestActualRunJujuArgsAfterCommand(c *gc.C) { | 199 | func (s *MainSuite) TestActualRunJujuArgsAfterCommand(c *gc.C) { |
1378 | 198 | c.Skip("breaks test isolation: lp:1233601") | 200 | c.Skip("breaks test isolation: lp:1233601") |
1379 | 201 | defer testing.MakeFakeHomeNoEnvironments(c, "one").Restore() | ||
1380 | 199 | // Check global args work when specified after command | 202 | // Check global args work when specified after command |
1381 | 200 | msg := breakJuju(c, "Bootstrap") | 203 | msg := breakJuju(c, "Bootstrap") |
1382 | 201 | logpath := filepath.Join(c.MkDir(), "log") | 204 | logpath := filepath.Join(c.MkDir(), "log") |
1383 | @@ -259,7 +262,6 @@ | |||
1384 | 259 | "unset-environment", | 262 | "unset-environment", |
1385 | 260 | "upgrade-charm", | 263 | "upgrade-charm", |
1386 | 261 | "upgrade-juju", | 264 | "upgrade-juju", |
1387 | 262 | "user", | ||
1388 | 263 | "version", | 265 | "version", |
1389 | 264 | } | 266 | } |
1390 | 265 | 267 | ||
1391 | 266 | 268 | ||
1392 | === modified file 'cmd/juju/plugin_test.go' | |||
1393 | --- cmd/juju/plugin_test.go 2014-05-15 05:14:01 +0000 | |||
1394 | +++ cmd/juju/plugin_test.go 2014-05-22 14:33:28 +0000 | |||
1395 | @@ -15,24 +15,28 @@ | |||
1396 | 15 | gc "launchpad.net/gocheck" | 15 | gc "launchpad.net/gocheck" |
1397 | 16 | 16 | ||
1398 | 17 | "launchpad.net/juju-core/testing" | 17 | "launchpad.net/juju-core/testing" |
1399 | 18 | "launchpad.net/juju-core/testing/testbase" | ||
1400 | 18 | ) | 19 | ) |
1401 | 19 | 20 | ||
1402 | 20 | type PluginSuite struct { | 21 | type PluginSuite struct { |
1404 | 21 | testing.FakeJujuHomeSuite | 22 | testbase.LoggingSuite |
1405 | 22 | oldPath string | 23 | oldPath string |
1406 | 24 | home *testing.FakeHome | ||
1407 | 23 | } | 25 | } |
1408 | 24 | 26 | ||
1409 | 25 | var _ = gc.Suite(&PluginSuite{}) | 27 | var _ = gc.Suite(&PluginSuite{}) |
1410 | 26 | 28 | ||
1411 | 27 | func (suite *PluginSuite) SetUpTest(c *gc.C) { | 29 | func (suite *PluginSuite) SetUpTest(c *gc.C) { |
1413 | 28 | suite.FakeJujuHomeSuite.SetUpTest(c) | 30 | suite.LoggingSuite.SetUpTest(c) |
1414 | 29 | suite.oldPath = os.Getenv("PATH") | 31 | suite.oldPath = os.Getenv("PATH") |
1415 | 32 | suite.home = testing.MakeSampleHome(c) | ||
1416 | 30 | os.Setenv("PATH", "/bin:"+testing.HomePath()) | 33 | os.Setenv("PATH", "/bin:"+testing.HomePath()) |
1417 | 31 | } | 34 | } |
1418 | 32 | 35 | ||
1419 | 33 | func (suite *PluginSuite) TearDownTest(c *gc.C) { | 36 | func (suite *PluginSuite) TearDownTest(c *gc.C) { |
1420 | 37 | suite.home.Restore() | ||
1421 | 34 | os.Setenv("PATH", suite.oldPath) | 38 | os.Setenv("PATH", suite.oldPath) |
1423 | 35 | suite.FakeJujuHomeSuite.TearDownTest(c) | 39 | suite.LoggingSuite.TearDownTest(c) |
1424 | 36 | } | 40 | } |
1425 | 37 | 41 | ||
1426 | 38 | func (*PluginSuite) TestFindPlugins(c *gc.C) { | 42 | func (*PluginSuite) TestFindPlugins(c *gc.C) { |
1427 | 39 | 43 | ||
1428 | === modified file 'cmd/juju/publish_test.go' | |||
1429 | --- cmd/juju/publish_test.go 2014-05-15 05:14:01 +0000 | |||
1430 | +++ cmd/juju/publish_test.go 2014-05-22 14:33:28 +0000 | |||
1431 | @@ -14,14 +14,16 @@ | |||
1432 | 14 | "launchpad.net/juju-core/cmd" | 14 | "launchpad.net/juju-core/cmd" |
1433 | 15 | "launchpad.net/juju-core/cmd/envcmd" | 15 | "launchpad.net/juju-core/cmd/envcmd" |
1434 | 16 | "launchpad.net/juju-core/testing" | 16 | "launchpad.net/juju-core/testing" |
1435 | 17 | "launchpad.net/juju-core/testing/testbase" | ||
1436 | 17 | ) | 18 | ) |
1437 | 18 | 19 | ||
1438 | 19 | // Sadly, this is a very slow test suite, heavily dominated by calls to bzr. | 20 | // Sadly, this is a very slow test suite, heavily dominated by calls to bzr. |
1439 | 20 | 21 | ||
1440 | 21 | type PublishSuite struct { | 22 | type PublishSuite struct { |
1442 | 22 | testing.FakeJujuHomeSuite | 23 | testbase.LoggingSuite |
1443 | 23 | testing.HTTPSuite | 24 | testing.HTTPSuite |
1444 | 24 | 25 | ||
1445 | 26 | home *testing.FakeHome | ||
1446 | 25 | dir string | 27 | dir string |
1447 | 26 | oldBaseURL string | 28 | oldBaseURL string |
1448 | 27 | branch *bzr.Branch | 29 | branch *bzr.Branch |
1449 | @@ -57,7 +59,7 @@ | |||
1450 | 57 | const pollDelay = testing.ShortWait | 59 | const pollDelay = testing.ShortWait |
1451 | 58 | 60 | ||
1452 | 59 | func (s *PublishSuite) SetUpSuite(c *gc.C) { | 61 | func (s *PublishSuite) SetUpSuite(c *gc.C) { |
1454 | 60 | s.FakeJujuHomeSuite.SetUpSuite(c) | 62 | s.LoggingSuite.SetUpSuite(c) |
1455 | 61 | s.HTTPSuite.SetUpSuite(c) | 63 | s.HTTPSuite.SetUpSuite(c) |
1456 | 62 | 64 | ||
1457 | 63 | s.oldBaseURL = charm.Store.BaseURL | 65 | s.oldBaseURL = charm.Store.BaseURL |
1458 | @@ -65,16 +67,16 @@ | |||
1459 | 65 | } | 67 | } |
1460 | 66 | 68 | ||
1461 | 67 | func (s *PublishSuite) TearDownSuite(c *gc.C) { | 69 | func (s *PublishSuite) TearDownSuite(c *gc.C) { |
1463 | 68 | s.FakeJujuHomeSuite.TearDownSuite(c) | 70 | s.LoggingSuite.TearDownSuite(c) |
1464 | 69 | s.HTTPSuite.TearDownSuite(c) | 71 | s.HTTPSuite.TearDownSuite(c) |
1465 | 70 | 72 | ||
1466 | 71 | charm.Store.BaseURL = s.oldBaseURL | 73 | charm.Store.BaseURL = s.oldBaseURL |
1467 | 72 | } | 74 | } |
1468 | 73 | 75 | ||
1469 | 74 | func (s *PublishSuite) SetUpTest(c *gc.C) { | 76 | func (s *PublishSuite) SetUpTest(c *gc.C) { |
1471 | 75 | s.FakeJujuHomeSuite.SetUpTest(c) | 77 | s.LoggingSuite.SetUpTest(c) |
1472 | 76 | s.HTTPSuite.SetUpTest(c) | 78 | s.HTTPSuite.SetUpTest(c) |
1474 | 77 | s.FakeJujuHomeSuite.Home.AddFiles(c, testing.TestFile{ | 79 | s.home = testing.MakeSampleHome(c, testing.TestFile{ |
1475 | 78 | Name: ".bazaar/bazaar.conf", | 80 | Name: ".bazaar/bazaar.conf", |
1476 | 79 | Data: "[DEFAULT]\nemail = Test <testing@testing.invalid>\n", | 81 | Data: "[DEFAULT]\nemail = Test <testing@testing.invalid>\n", |
1477 | 80 | }) | 82 | }) |
1478 | @@ -86,8 +88,9 @@ | |||
1479 | 86 | } | 88 | } |
1480 | 87 | 89 | ||
1481 | 88 | func (s *PublishSuite) TearDownTest(c *gc.C) { | 90 | func (s *PublishSuite) TearDownTest(c *gc.C) { |
1482 | 91 | s.home.Restore() | ||
1483 | 89 | s.HTTPSuite.TearDownTest(c) | 92 | s.HTTPSuite.TearDownTest(c) |
1485 | 90 | s.FakeJujuHomeSuite.TearDownTest(c) | 93 | s.LoggingSuite.TearDownTest(c) |
1486 | 91 | } | 94 | } |
1487 | 92 | 95 | ||
1488 | 93 | func (s *PublishSuite) TestNoBranch(c *gc.C) { | 96 | func (s *PublishSuite) TestNoBranch(c *gc.C) { |
1489 | 94 | 97 | ||
1490 | === modified file 'cmd/juju/run_test.go' | |||
1491 | --- cmd/juju/run_test.go 2014-05-15 05:14:01 +0000 | |||
1492 | +++ cmd/juju/run_test.go 2014-05-22 14:33:28 +0000 | |||
1493 | @@ -18,7 +18,7 @@ | |||
1494 | 18 | ) | 18 | ) |
1495 | 19 | 19 | ||
1496 | 20 | type RunSuite struct { | 20 | type RunSuite struct { |
1498 | 21 | testing.FakeJujuHomeSuite | 21 | testing.FakeHomeSuite |
1499 | 22 | } | 22 | } |
1500 | 23 | 23 | ||
1501 | 24 | var _ = gc.Suite(&RunSuite{}) | 24 | var _ = gc.Suite(&RunSuite{}) |
1502 | 25 | 25 | ||
1503 | === modified file 'cmd/juju/switch_test.go' | |||
1504 | --- cmd/juju/switch_test.go 2014-05-16 04:20:04 +0000 | |||
1505 | +++ cmd/juju/switch_test.go 2014-05-22 14:33:28 +0000 | |||
1506 | @@ -14,51 +14,50 @@ | |||
1507 | 14 | ) | 14 | ) |
1508 | 15 | 15 | ||
1509 | 16 | type SwitchSimpleSuite struct { | 16 | type SwitchSimpleSuite struct { |
1510 | 17 | testing.FakeJujuHomeSuite | ||
1511 | 18 | } | 17 | } |
1512 | 19 | 18 | ||
1513 | 20 | var _ = gc.Suite(&SwitchSimpleSuite{}) | 19 | var _ = gc.Suite(&SwitchSimpleSuite{}) |
1514 | 21 | 20 | ||
1515 | 22 | func (*SwitchSimpleSuite) TestNoEnvironment(c *gc.C) { | 21 | func (*SwitchSimpleSuite) TestNoEnvironment(c *gc.C) { |
1520 | 23 | envPath := testing.HomePath(".juju", "environments.yaml") | 22 | defer testing.MakeEmptyFakeHome(c).Restore() |
1521 | 24 | err := os.Remove(envPath) | 23 | _, err := testing.RunCommand(c, &SwitchCommand{}, nil) |
1518 | 25 | c.Assert(err, gc.IsNil) | ||
1519 | 26 | _, err = testing.RunCommand(c, &SwitchCommand{}, nil) | ||
1522 | 27 | c.Assert(err, gc.ErrorMatches, "couldn't read the environment") | 24 | c.Assert(err, gc.ErrorMatches, "couldn't read the environment") |
1523 | 28 | } | 25 | } |
1524 | 29 | 26 | ||
1525 | 30 | func (*SwitchSimpleSuite) TestNoDefault(c *gc.C) { | 27 | func (*SwitchSimpleSuite) TestNoDefault(c *gc.C) { |
1527 | 31 | testing.WriteEnvironments(c, testing.MultipleEnvConfigNoDefault) | 28 | defer testing.MakeFakeHome(c, testing.MultipleEnvConfigNoDefault).Restore() |
1528 | 32 | _, err := testing.RunCommand(c, &SwitchCommand{}, nil) | 29 | _, err := testing.RunCommand(c, &SwitchCommand{}, nil) |
1529 | 33 | c.Assert(err, gc.ErrorMatches, "no currently specified environment") | 30 | c.Assert(err, gc.ErrorMatches, "no currently specified environment") |
1530 | 34 | } | 31 | } |
1531 | 35 | 32 | ||
1532 | 36 | func (*SwitchSimpleSuite) TestShowsDefault(c *gc.C) { | 33 | func (*SwitchSimpleSuite) TestShowsDefault(c *gc.C) { |
1534 | 37 | testing.WriteEnvironments(c, testing.MultipleEnvConfig) | 34 | defer testing.MakeFakeHome(c, testing.MultipleEnvConfig).Restore() |
1535 | 38 | context, err := testing.RunCommand(c, &SwitchCommand{}, nil) | 35 | context, err := testing.RunCommand(c, &SwitchCommand{}, nil) |
1536 | 39 | c.Assert(err, gc.IsNil) | 36 | c.Assert(err, gc.IsNil) |
1537 | 40 | c.Assert(testing.Stdout(context), gc.Equals, "erewhemos\n") | 37 | c.Assert(testing.Stdout(context), gc.Equals, "erewhemos\n") |
1538 | 41 | } | 38 | } |
1539 | 42 | 39 | ||
1543 | 43 | func (s *SwitchSimpleSuite) TestCurrentEnvironmentHasPrecidence(c *gc.C) { | 40 | func (*SwitchSimpleSuite) TestCurrentEnvironmentHasPrecidence(c *gc.C) { |
1544 | 44 | testing.WriteEnvironments(c, testing.MultipleEnvConfig) | 41 | home := testing.MakeFakeHome(c, testing.MultipleEnvConfig) |
1545 | 45 | s.FakeHomeSuite.Home.AddFiles(c, testing.TestFile{".juju/current-environment", "fubar"}) | 42 | defer home.Restore() |
1546 | 43 | home.AddFiles(c, []testing.TestFile{{".juju/current-environment", "fubar"}}) | ||
1547 | 46 | context, err := testing.RunCommand(c, &SwitchCommand{}, nil) | 44 | context, err := testing.RunCommand(c, &SwitchCommand{}, nil) |
1548 | 47 | c.Assert(err, gc.IsNil) | 45 | c.Assert(err, gc.IsNil) |
1549 | 48 | c.Assert(testing.Stdout(context), gc.Equals, "fubar\n") | 46 | c.Assert(testing.Stdout(context), gc.Equals, "fubar\n") |
1550 | 49 | } | 47 | } |
1551 | 50 | 48 | ||
1552 | 51 | func (*SwitchSimpleSuite) TestShowsJujuEnv(c *gc.C) { | 49 | func (*SwitchSimpleSuite) TestShowsJujuEnv(c *gc.C) { |
1554 | 52 | testing.WriteEnvironments(c, testing.MultipleEnvConfig) | 50 | defer testing.MakeFakeHome(c, testing.MultipleEnvConfig).Restore() |
1555 | 53 | os.Setenv("JUJU_ENV", "using-env") | 51 | os.Setenv("JUJU_ENV", "using-env") |
1556 | 54 | context, err := testing.RunCommand(c, &SwitchCommand{}, nil) | 52 | context, err := testing.RunCommand(c, &SwitchCommand{}, nil) |
1557 | 55 | c.Assert(err, gc.IsNil) | 53 | c.Assert(err, gc.IsNil) |
1558 | 56 | c.Assert(testing.Stdout(context), gc.Equals, "using-env\n") | 54 | c.Assert(testing.Stdout(context), gc.Equals, "using-env\n") |
1559 | 57 | } | 55 | } |
1560 | 58 | 56 | ||
1564 | 59 | func (s *SwitchSimpleSuite) TestJujuEnvOverCurrentEnvironment(c *gc.C) { | 57 | func (*SwitchSimpleSuite) TestJujuEnvOverCurrentEnvironment(c *gc.C) { |
1565 | 60 | testing.WriteEnvironments(c, testing.MultipleEnvConfig) | 58 | home := testing.MakeFakeHome(c, testing.MultipleEnvConfig) |
1566 | 61 | s.FakeHomeSuite.Home.AddFiles(c, testing.TestFile{".juju/current-environment", "fubar"}) | 59 | defer home.Restore() |
1567 | 60 | home.AddFiles(c, []testing.TestFile{{".juju/current-environment", "fubar"}}) | ||
1568 | 62 | os.Setenv("JUJU_ENV", "using-env") | 61 | os.Setenv("JUJU_ENV", "using-env") |
1569 | 63 | context, err := testing.RunCommand(c, &SwitchCommand{}, nil) | 62 | context, err := testing.RunCommand(c, &SwitchCommand{}, nil) |
1570 | 64 | c.Assert(err, gc.IsNil) | 63 | c.Assert(err, gc.IsNil) |
1571 | @@ -66,7 +65,7 @@ | |||
1572 | 66 | } | 65 | } |
1573 | 67 | 66 | ||
1574 | 68 | func (*SwitchSimpleSuite) TestSettingWritesFile(c *gc.C) { | 67 | func (*SwitchSimpleSuite) TestSettingWritesFile(c *gc.C) { |
1576 | 69 | testing.WriteEnvironments(c, testing.MultipleEnvConfig) | 68 | defer testing.MakeFakeHome(c, testing.MultipleEnvConfig).Restore() |
1577 | 70 | context, err := testing.RunCommand(c, &SwitchCommand{}, []string{"erewhemos-2"}) | 69 | context, err := testing.RunCommand(c, &SwitchCommand{}, []string{"erewhemos-2"}) |
1578 | 71 | c.Assert(err, gc.IsNil) | 70 | c.Assert(err, gc.IsNil) |
1579 | 72 | c.Assert(testing.Stdout(context), gc.Equals, "erewhemos -> erewhemos-2\n") | 71 | c.Assert(testing.Stdout(context), gc.Equals, "erewhemos -> erewhemos-2\n") |
1580 | @@ -74,13 +73,13 @@ | |||
1581 | 74 | } | 73 | } |
1582 | 75 | 74 | ||
1583 | 76 | func (*SwitchSimpleSuite) TestSettingToUnknown(c *gc.C) { | 75 | func (*SwitchSimpleSuite) TestSettingToUnknown(c *gc.C) { |
1585 | 77 | testing.WriteEnvironments(c, testing.MultipleEnvConfig) | 76 | defer testing.MakeFakeHome(c, testing.MultipleEnvConfig).Restore() |
1586 | 78 | _, err := testing.RunCommand(c, &SwitchCommand{}, []string{"unknown"}) | 77 | _, err := testing.RunCommand(c, &SwitchCommand{}, []string{"unknown"}) |
1587 | 79 | c.Assert(err, gc.ErrorMatches, `"unknown" is not a name of an existing defined environment`) | 78 | c.Assert(err, gc.ErrorMatches, `"unknown" is not a name of an existing defined environment`) |
1588 | 80 | } | 79 | } |
1589 | 81 | 80 | ||
1590 | 82 | func (*SwitchSimpleSuite) TestSettingWhenJujuEnvSet(c *gc.C) { | 81 | func (*SwitchSimpleSuite) TestSettingWhenJujuEnvSet(c *gc.C) { |
1592 | 83 | testing.WriteEnvironments(c, testing.MultipleEnvConfig) | 82 | defer testing.MakeFakeHome(c, testing.MultipleEnvConfig).Restore() |
1593 | 84 | os.Setenv("JUJU_ENV", "using-env") | 83 | os.Setenv("JUJU_ENV", "using-env") |
1594 | 85 | _, err := testing.RunCommand(c, &SwitchCommand{}, []string{"erewhemos-2"}) | 84 | _, err := testing.RunCommand(c, &SwitchCommand{}, []string{"erewhemos-2"}) |
1595 | 86 | c.Assert(err, gc.ErrorMatches, `cannot switch when JUJU_ENV is overriding the environment \(set to "using-env"\)`) | 85 | c.Assert(err, gc.ErrorMatches, `cannot switch when JUJU_ENV is overriding the environment \(set to "using-env"\)`) |
1596 | @@ -91,14 +90,14 @@ | |||
1597 | 91 | ` | 90 | ` |
1598 | 92 | 91 | ||
1599 | 93 | func (*SwitchSimpleSuite) TestListEnvironments(c *gc.C) { | 92 | func (*SwitchSimpleSuite) TestListEnvironments(c *gc.C) { |
1601 | 94 | testing.WriteEnvironments(c, testing.MultipleEnvConfig) | 93 | defer testing.MakeFakeHome(c, testing.MultipleEnvConfig).Restore() |
1602 | 95 | context, err := testing.RunCommand(c, &SwitchCommand{}, []string{"--list"}) | 94 | context, err := testing.RunCommand(c, &SwitchCommand{}, []string{"--list"}) |
1603 | 96 | c.Assert(err, gc.IsNil) | 95 | c.Assert(err, gc.IsNil) |
1604 | 97 | c.Assert(testing.Stdout(context), gc.Equals, expectedEnvironments) | 96 | c.Assert(testing.Stdout(context), gc.Equals, expectedEnvironments) |
1605 | 98 | } | 97 | } |
1606 | 99 | 98 | ||
1607 | 100 | func (*SwitchSimpleSuite) TestListEnvironmentsOSJujuEnvSet(c *gc.C) { | 99 | func (*SwitchSimpleSuite) TestListEnvironmentsOSJujuEnvSet(c *gc.C) { |
1609 | 101 | testing.WriteEnvironments(c, testing.MultipleEnvConfig) | 100 | defer testing.MakeFakeHome(c, testing.MultipleEnvConfig).Restore() |
1610 | 102 | os.Setenv("JUJU_ENV", "using-env") | 101 | os.Setenv("JUJU_ENV", "using-env") |
1611 | 103 | context, err := testing.RunCommand(c, &SwitchCommand{}, []string{"--list"}) | 102 | context, err := testing.RunCommand(c, &SwitchCommand{}, []string{"--list"}) |
1612 | 104 | c.Assert(err, gc.IsNil) | 103 | c.Assert(err, gc.IsNil) |
1613 | @@ -106,13 +105,13 @@ | |||
1614 | 106 | } | 105 | } |
1615 | 107 | 106 | ||
1616 | 108 | func (*SwitchSimpleSuite) TestListEnvironmentsAndChange(c *gc.C) { | 107 | func (*SwitchSimpleSuite) TestListEnvironmentsAndChange(c *gc.C) { |
1618 | 109 | testing.WriteEnvironments(c, testing.MultipleEnvConfig) | 108 | defer testing.MakeFakeHome(c, testing.MultipleEnvConfig).Restore() |
1619 | 110 | _, err := testing.RunCommand(c, &SwitchCommand{}, []string{"--list", "erewhemos-2"}) | 109 | _, err := testing.RunCommand(c, &SwitchCommand{}, []string{"--list", "erewhemos-2"}) |
1620 | 111 | c.Assert(err, gc.ErrorMatches, "cannot switch and list at the same time") | 110 | c.Assert(err, gc.ErrorMatches, "cannot switch and list at the same time") |
1621 | 112 | } | 111 | } |
1622 | 113 | 112 | ||
1623 | 114 | func (*SwitchSimpleSuite) TestTooManyParams(c *gc.C) { | 113 | func (*SwitchSimpleSuite) TestTooManyParams(c *gc.C) { |
1625 | 115 | testing.WriteEnvironments(c, testing.MultipleEnvConfig) | 114 | defer testing.MakeFakeHome(c, testing.MultipleEnvConfig).Restore() |
1626 | 116 | _, err := testing.RunCommand(c, &SwitchCommand{}, []string{"foo", "bar"}) | 115 | _, err := testing.RunCommand(c, &SwitchCommand{}, []string{"foo", "bar"}) |
1627 | 117 | c.Assert(err, gc.ErrorMatches, `unrecognized args: ."bar".`) | 116 | c.Assert(err, gc.ErrorMatches, `unrecognized args: ."bar".`) |
1628 | 118 | } | 117 | } |
1629 | 119 | 118 | ||
1630 | === modified file 'cmd/juju/synctools_test.go' | |||
1631 | --- cmd/juju/synctools_test.go 2014-05-16 04:20:04 +0000 | |||
1632 | +++ cmd/juju/synctools_test.go 2014-05-22 14:33:28 +0000 | |||
1633 | @@ -18,10 +18,12 @@ | |||
1634 | 18 | "launchpad.net/juju-core/environs/sync" | 18 | "launchpad.net/juju-core/environs/sync" |
1635 | 19 | "launchpad.net/juju-core/provider/dummy" | 19 | "launchpad.net/juju-core/provider/dummy" |
1636 | 20 | coretesting "launchpad.net/juju-core/testing" | 20 | coretesting "launchpad.net/juju-core/testing" |
1637 | 21 | "launchpad.net/juju-core/testing/testbase" | ||
1638 | 21 | ) | 22 | ) |
1639 | 22 | 23 | ||
1640 | 23 | type syncToolsSuite struct { | 24 | type syncToolsSuite struct { |
1642 | 24 | coretesting.FakeJujuHomeSuite | 25 | testbase.LoggingSuite |
1643 | 26 | home *coretesting.FakeHome | ||
1644 | 25 | configStore configstore.Storage | 27 | configStore configstore.Storage |
1645 | 26 | localStorage string | 28 | localStorage string |
1646 | 27 | 29 | ||
1647 | @@ -31,10 +33,10 @@ | |||
1648 | 31 | var _ = gc.Suite(&syncToolsSuite{}) | 33 | var _ = gc.Suite(&syncToolsSuite{}) |
1649 | 32 | 34 | ||
1650 | 33 | func (s *syncToolsSuite) SetUpTest(c *gc.C) { | 35 | func (s *syncToolsSuite) SetUpTest(c *gc.C) { |
1652 | 34 | s.FakeJujuHomeSuite.SetUpTest(c) | 36 | s.LoggingSuite.SetUpTest(c) |
1653 | 35 | 37 | ||
1654 | 36 | // Create a target environments.yaml and make sure its environment is empty. | 38 | // Create a target environments.yaml and make sure its environment is empty. |
1656 | 37 | coretesting.WriteEnvironments(c, ` | 39 | s.home = coretesting.MakeFakeHome(c, ` |
1657 | 38 | environments: | 40 | environments: |
1658 | 39 | test-target: | 41 | test-target: |
1659 | 40 | type: dummy | 42 | type: dummy |
1660 | @@ -50,7 +52,8 @@ | |||
1661 | 50 | func (s *syncToolsSuite) TearDownTest(c *gc.C) { | 52 | func (s *syncToolsSuite) TearDownTest(c *gc.C) { |
1662 | 51 | syncTools = s.origSyncTools | 53 | syncTools = s.origSyncTools |
1663 | 52 | dummy.Reset() | 54 | dummy.Reset() |
1665 | 53 | s.FakeJujuHomeSuite.TearDownTest(c) | 55 | s.home.Restore() |
1666 | 56 | s.LoggingSuite.TearDownTest(c) | ||
1667 | 54 | } | 57 | } |
1668 | 55 | 58 | ||
1669 | 56 | func (s *syncToolsSuite) Reset(c *gc.C) { | 59 | func (s *syncToolsSuite) Reset(c *gc.C) { |
1670 | 57 | 60 | ||
1671 | === removed file 'cmd/juju/user.go' | |||
1672 | --- cmd/juju/user.go 2014-05-20 04:27:21 +0000 | |||
1673 | +++ cmd/juju/user.go 1970-01-01 00:00:00 +0000 | |||
1674 | @@ -1,35 +0,0 @@ | |||
1675 | 1 | // Copyright 2014 Canonical Ltd. | ||
1676 | 2 | // Licensed under the AGPLv3, see LICENCE file for details. | ||
1677 | 3 | |||
1678 | 4 | package main | ||
1679 | 5 | |||
1680 | 6 | import ( | ||
1681 | 7 | "launchpad.net/juju-core/cmd" | ||
1682 | 8 | "launchpad.net/juju-core/cmd/envcmd" | ||
1683 | 9 | ) | ||
1684 | 10 | |||
1685 | 11 | type UserCommand struct { | ||
1686 | 12 | *cmd.SuperCommand | ||
1687 | 13 | } | ||
1688 | 14 | |||
1689 | 15 | const userCommandDoc = ` | ||
1690 | 16 | "juju user" is used to manage the user accounts and access control in | ||
1691 | 17 | the Juju environment. | ||
1692 | 18 | ` | ||
1693 | 19 | |||
1694 | 20 | const userCommandPurpose = "manage user accounts and access control" | ||
1695 | 21 | |||
1696 | 22 | func NewUserCommand() cmd.Command { | ||
1697 | 23 | usercmd := &UserCommand{ | ||
1698 | 24 | SuperCommand: cmd.NewSuperCommand(cmd.SuperCommandParams{ | ||
1699 | 25 | Name: "user", | ||
1700 | 26 | Doc: userCommandDoc, | ||
1701 | 27 | UsagePrefix: "juju", | ||
1702 | 28 | Purpose: userCommandPurpose, | ||
1703 | 29 | }), | ||
1704 | 30 | } | ||
1705 | 31 | // Define each subcommand in a separate "user_FOO.go" source file | ||
1706 | 32 | // (with tests in user_FOO_test.go) and wire in here. | ||
1707 | 33 | usercmd.Register(envcmd.Wrap(&UserAddCommand{})) | ||
1708 | 34 | return usercmd | ||
1709 | 35 | } | ||
1710 | 36 | 0 | ||
1711 | === removed file 'cmd/juju/user_test.go' | |||
1712 | --- cmd/juju/user_test.go 2014-05-20 02:41:00 +0000 | |||
1713 | +++ cmd/juju/user_test.go 1970-01-01 00:00:00 +0000 | |||
1714 | @@ -1,42 +0,0 @@ | |||
1715 | 1 | // Copyright 2014 Canonical Ltd. | ||
1716 | 2 | // Licensed under the AGPLv3, see LICENCE file for details. | ||
1717 | 3 | |||
1718 | 4 | package main | ||
1719 | 5 | |||
1720 | 6 | import ( | ||
1721 | 7 | "strings" | ||
1722 | 8 | |||
1723 | 9 | gc "launchpad.net/gocheck" | ||
1724 | 10 | coretesting "launchpad.net/juju-core/testing" | ||
1725 | 11 | ) | ||
1726 | 12 | |||
1727 | 13 | type UserCommandSuite struct { | ||
1728 | 14 | coretesting.BaseSuite | ||
1729 | 15 | } | ||
1730 | 16 | |||
1731 | 17 | var _ = gc.Suite(&UserCommandSuite{}) | ||
1732 | 18 | |||
1733 | 19 | var expectedUserCommmandNames = []string{ | ||
1734 | 20 | "add", | ||
1735 | 21 | "help", | ||
1736 | 22 | } | ||
1737 | 23 | |||
1738 | 24 | func (s *UserCommandSuite) TestHelp(c *gc.C) { | ||
1739 | 25 | // Check the help output | ||
1740 | 26 | ctx, err := coretesting.RunCommand(c, NewUserCommand(), []string{"--help"}) | ||
1741 | 27 | c.Assert(err, gc.IsNil) | ||
1742 | 28 | c.Assert(coretesting.Stdout(ctx), gc.Matches, | ||
1743 | 29 | "(?s)usage: user <command> .+"+ | ||
1744 | 30 | userCommandPurpose+".+"+ | ||
1745 | 31 | userCommandDoc+".+") | ||
1746 | 32 | |||
1747 | 33 | // Check that we have registered all the sub commands by | ||
1748 | 34 | // inspecting the help output. | ||
1749 | 35 | var namesFound []string | ||
1750 | 36 | commandHelp := strings.SplitAfter(coretesting.Stdout(ctx), "commands:")[1] | ||
1751 | 37 | commandHelp = strings.TrimSpace(commandHelp) | ||
1752 | 38 | for _, line := range strings.Split(commandHelp, "\n") { | ||
1753 | 39 | namesFound = append(namesFound, strings.TrimSpace(strings.Split(line, " - ")[0])) | ||
1754 | 40 | } | ||
1755 | 41 | c.Assert(namesFound, gc.DeepEquals, expectedUserCommmandNames) | ||
1756 | 42 | } | ||
1757 | 43 | 0 | ||
1758 | === modified file 'cmd/jujud/agent_test.go' | |||
1759 | --- cmd/jujud/agent_test.go 2014-05-20 04:27:02 +0000 | |||
1760 | +++ cmd/jujud/agent_test.go 2014-05-22 14:33:28 +0000 | |||
1761 | @@ -25,6 +25,7 @@ | |||
1762 | 25 | "launchpad.net/juju-core/state/api" | 25 | "launchpad.net/juju-core/state/api" |
1763 | 26 | "launchpad.net/juju-core/state/api/params" | 26 | "launchpad.net/juju-core/state/api/params" |
1764 | 27 | coretesting "launchpad.net/juju-core/testing" | 27 | coretesting "launchpad.net/juju-core/testing" |
1765 | 28 | "launchpad.net/juju-core/testing/testbase" | ||
1766 | 28 | coretools "launchpad.net/juju-core/tools" | 29 | coretools "launchpad.net/juju-core/tools" |
1767 | 29 | "launchpad.net/juju-core/version" | 30 | "launchpad.net/juju-core/version" |
1768 | 30 | "launchpad.net/juju-core/worker" | 31 | "launchpad.net/juju-core/worker" |
1769 | @@ -34,7 +35,7 @@ | |||
1770 | 34 | var _ = gc.Suite(&toolSuite{}) | 35 | var _ = gc.Suite(&toolSuite{}) |
1771 | 35 | 36 | ||
1772 | 36 | type toolSuite struct { | 37 | type toolSuite struct { |
1774 | 37 | coretesting.BaseSuite | 38 | testbase.LoggingSuite |
1775 | 38 | } | 39 | } |
1776 | 39 | 40 | ||
1777 | 40 | var errorImportanceTests = []error{ | 41 | var errorImportanceTests = []error{ |
1778 | @@ -89,7 +90,7 @@ | |||
1779 | 89 | } | 90 | } |
1780 | 90 | 91 | ||
1781 | 91 | type apiOpenSuite struct { | 92 | type apiOpenSuite struct { |
1783 | 92 | coretesting.BaseSuite | 93 | testbase.LoggingSuite |
1784 | 93 | } | 94 | } |
1785 | 94 | 95 | ||
1786 | 95 | type fakeAPIOpenConfig struct { | 96 | type fakeAPIOpenConfig struct { |
1787 | 96 | 97 | ||
1788 | === modified file 'cmd/jujud/bootstrap_test.go' | |||
1789 | --- cmd/jujud/bootstrap_test.go 2014-05-20 04:27:02 +0000 | |||
1790 | +++ cmd/jujud/bootstrap_test.go 2014-05-22 14:33:28 +0000 | |||
1791 | @@ -27,6 +27,7 @@ | |||
1792 | 27 | "launchpad.net/juju-core/state" | 27 | "launchpad.net/juju-core/state" |
1793 | 28 | "launchpad.net/juju-core/state/api/params" | 28 | "launchpad.net/juju-core/state/api/params" |
1794 | 29 | "launchpad.net/juju-core/testing" | 29 | "launchpad.net/juju-core/testing" |
1795 | 30 | "launchpad.net/juju-core/testing/testbase" | ||
1796 | 30 | "launchpad.net/juju-core/utils" | 31 | "launchpad.net/juju-core/utils" |
1797 | 31 | "launchpad.net/juju-core/version" | 32 | "launchpad.net/juju-core/version" |
1798 | 32 | "launchpad.net/juju-core/worker/peergrouper" | 33 | "launchpad.net/juju-core/worker/peergrouper" |
1799 | @@ -37,7 +38,7 @@ | |||
1800 | 37 | // We don't want to use JujuConnSuite because it gives us | 38 | // We don't want to use JujuConnSuite because it gives us |
1801 | 38 | // an already-bootstrapped environment. | 39 | // an already-bootstrapped environment. |
1802 | 39 | type BootstrapSuite struct { | 40 | type BootstrapSuite struct { |
1804 | 40 | testing.BaseSuite | 41 | testbase.LoggingSuite |
1805 | 41 | testing.MgoSuite | 42 | testing.MgoSuite |
1806 | 42 | envcfg string | 43 | envcfg string |
1807 | 43 | instanceId instance.Id | 44 | instanceId instance.Id |
1808 | @@ -76,19 +77,19 @@ | |||
1809 | 76 | s.PatchValue(&ensureMongoServer, s.fakeEnsureMongo.fakeEnsureMongo) | 77 | s.PatchValue(&ensureMongoServer, s.fakeEnsureMongo.fakeEnsureMongo) |
1810 | 77 | s.PatchValue(&maybeInitiateMongoServer, s.fakeEnsureMongo.fakeInitiateMongo) | 78 | s.PatchValue(&maybeInitiateMongoServer, s.fakeEnsureMongo.fakeInitiateMongo) |
1811 | 78 | 79 | ||
1813 | 79 | s.BaseSuite.SetUpSuite(c) | 80 | s.LoggingSuite.SetUpSuite(c) |
1814 | 80 | s.MgoSuite.SetUpSuite(c) | 81 | s.MgoSuite.SetUpSuite(c) |
1815 | 81 | s.makeTestEnv(c) | 82 | s.makeTestEnv(c) |
1816 | 82 | } | 83 | } |
1817 | 83 | 84 | ||
1818 | 84 | func (s *BootstrapSuite) TearDownSuite(c *gc.C) { | 85 | func (s *BootstrapSuite) TearDownSuite(c *gc.C) { |
1819 | 85 | s.MgoSuite.TearDownSuite(c) | 86 | s.MgoSuite.TearDownSuite(c) |
1821 | 86 | s.BaseSuite.TearDownSuite(c) | 87 | s.LoggingSuite.TearDownSuite(c) |
1822 | 87 | dummy.Reset() | 88 | dummy.Reset() |
1823 | 88 | } | 89 | } |
1824 | 89 | 90 | ||
1825 | 90 | func (s *BootstrapSuite) SetUpTest(c *gc.C) { | 91 | func (s *BootstrapSuite) SetUpTest(c *gc.C) { |
1827 | 91 | s.BaseSuite.SetUpTest(c) | 92 | s.LoggingSuite.SetUpTest(c) |
1828 | 92 | s.MgoSuite.SetUpTest(c) | 93 | s.MgoSuite.SetUpTest(c) |
1829 | 93 | s.dataDir = c.MkDir() | 94 | s.dataDir = c.MkDir() |
1830 | 94 | s.logDir = c.MkDir() | 95 | s.logDir = c.MkDir() |
1831 | @@ -97,7 +98,7 @@ | |||
1832 | 97 | 98 | ||
1833 | 98 | func (s *BootstrapSuite) TearDownTest(c *gc.C) { | 99 | func (s *BootstrapSuite) TearDownTest(c *gc.C) { |
1834 | 99 | s.MgoSuite.TearDownTest(c) | 100 | s.MgoSuite.TearDownTest(c) |
1836 | 100 | s.BaseSuite.TearDownTest(c) | 101 | s.LoggingSuite.TearDownTest(c) |
1837 | 101 | } | 102 | } |
1838 | 102 | 103 | ||
1839 | 103 | var testPassword = "my-admin-secret" | 104 | var testPassword = "my-admin-secret" |
1840 | 104 | 105 | ||
1841 | === modified file 'cmd/jujud/machine.go' | |||
1842 | --- cmd/jujud/machine.go 2014-05-19 12:59:11 +0000 | |||
1843 | +++ cmd/jujud/machine.go 2014-05-22 14:33:28 +0000 | |||
1844 | @@ -450,11 +450,9 @@ | |||
1845 | 450 | a.startWorkerAfterUpgrade(runner, "instancepoller", func() (worker.Worker, error) { | 450 | a.startWorkerAfterUpgrade(runner, "instancepoller", func() (worker.Worker, error) { |
1846 | 451 | return instancepoller.NewWorker(st), nil | 451 | return instancepoller.NewWorker(st), nil |
1847 | 452 | }) | 452 | }) |
1853 | 453 | if shouldEnableHA(agentConfig) { | 453 | runner.StartWorker("peergrouper", func() (worker.Worker, error) { |
1854 | 454 | a.startWorkerAfterUpgrade(runner, "peergrouper", func() (worker.Worker, error) { | 454 | return peergrouperNew(st) |
1855 | 455 | return peergrouperNew(st) | 455 | }) |
1851 | 456 | }) | ||
1852 | 457 | } | ||
1856 | 458 | runner.StartWorker("apiserver", func() (worker.Worker, error) { | 456 | runner.StartWorker("apiserver", func() (worker.Worker, error) { |
1857 | 459 | // If the configuration does not have the required information, | 457 | // If the configuration does not have the required information, |
1858 | 460 | // it is currently not a recoverable error, so we kill the whole | 458 | // it is currently not a recoverable error, so we kill the whole |
1859 | 461 | 459 | ||
1860 | === modified file 'cmd/jujud/machine_test.go' | |||
1861 | --- cmd/jujud/machine_test.go 2014-05-19 13:07:51 +0000 | |||
1862 | +++ cmd/jujud/machine_test.go 2014-05-22 14:33:28 +0000 | |||
1863 | @@ -13,6 +13,7 @@ | |||
1864 | 13 | "time" | 13 | "time" |
1865 | 14 | 14 | ||
1866 | 15 | "github.com/juju/errors" | 15 | "github.com/juju/errors" |
1867 | 16 | "github.com/juju/testing" | ||
1868 | 16 | jc "github.com/juju/testing/checkers" | 17 | jc "github.com/juju/testing/checkers" |
1869 | 17 | gc "launchpad.net/gocheck" | 18 | gc "launchpad.net/gocheck" |
1870 | 18 | 19 | ||
1871 | @@ -64,7 +65,8 @@ | |||
1872 | 64 | func (s *commonMachineSuite) SetUpSuite(c *gc.C) { | 65 | func (s *commonMachineSuite) SetUpSuite(c *gc.C) { |
1873 | 65 | s.agentSuite.SetUpSuite(c) | 66 | s.agentSuite.SetUpSuite(c) |
1874 | 66 | s.TestSuite.SetUpSuite(c) | 67 | s.TestSuite.SetUpSuite(c) |
1876 | 67 | s.agentSuite.PatchValue(&charm.CacheDir, c.MkDir()) | 68 | restore := testing.PatchValue(&charm.CacheDir, c.MkDir()) |
1877 | 69 | s.AddSuiteCleanup(func(*gc.C) { restore() }) | ||
1878 | 68 | } | 70 | } |
1879 | 69 | 71 | ||
1880 | 70 | func (s *commonMachineSuite) TearDownSuite(c *gc.C) { | 72 | func (s *commonMachineSuite) TearDownSuite(c *gc.C) { |
1881 | @@ -77,26 +79,28 @@ | |||
1882 | 77 | s.TestSuite.SetUpTest(c) | 79 | s.TestSuite.SetUpTest(c) |
1883 | 78 | 80 | ||
1884 | 79 | os.Remove(jujuRun) // ignore error; may not exist | 81 | os.Remove(jujuRun) // ignore error; may not exist |
1887 | 80 | // Patch ssh user to avoid touching ~ubuntu/.ssh/authorized_keys. | 82 | // Fake $HOME, and ssh user to avoid touching ~ubuntu/.ssh/authorized_keys. |
1888 | 81 | s.agentSuite.PatchValue(&authenticationworker.SSHUser, "") | 83 | fakeHome := coretesting.MakeEmptyFakeHomeWithoutJuju(c) |
1889 | 84 | s.AddCleanup(func(*gc.C) { fakeHome.Restore() }) | ||
1890 | 85 | s.PatchValue(&authenticationworker.SSHUser, "") | ||
1891 | 82 | 86 | ||
1892 | 83 | testpath := c.MkDir() | 87 | testpath := c.MkDir() |
1894 | 84 | s.agentSuite.PatchEnvPathPrepend(testpath) | 88 | s.PatchEnvPathPrepend(testpath) |
1895 | 85 | // mock out the start method so we can fake install services without sudo | 89 | // mock out the start method so we can fake install services without sudo |
1896 | 86 | fakeCmd(filepath.Join(testpath, "start")) | 90 | fakeCmd(filepath.Join(testpath, "start")) |
1897 | 87 | fakeCmd(filepath.Join(testpath, "stop")) | 91 | fakeCmd(filepath.Join(testpath, "stop")) |
1898 | 88 | 92 | ||
1900 | 89 | s.agentSuite.PatchValue(&upstart.InitDir, c.MkDir()) | 93 | s.PatchValue(&upstart.InitDir, c.MkDir()) |
1901 | 90 | 94 | ||
1902 | 91 | s.singularRecord = &singularRunnerRecord{} | 95 | s.singularRecord = &singularRunnerRecord{} |
1905 | 92 | s.agentSuite.PatchValue(&newSingularRunner, s.singularRecord.newSingularRunner) | 96 | testing.PatchValue(&newSingularRunner, s.singularRecord.newSingularRunner) |
1906 | 93 | s.agentSuite.PatchValue(&peergrouperNew, func(st *state.State) (worker.Worker, error) { | 97 | testing.PatchValue(&peergrouperNew, func(st *state.State) (worker.Worker, error) { |
1907 | 94 | return newDummyWorker(), nil | 98 | return newDummyWorker(), nil |
1908 | 95 | }) | 99 | }) |
1909 | 96 | 100 | ||
1910 | 97 | s.fakeEnsureMongo = fakeEnsure{} | 101 | s.fakeEnsureMongo = fakeEnsure{} |
1913 | 98 | s.agentSuite.PatchValue(&ensureMongoServer, s.fakeEnsureMongo.fakeEnsureMongo) | 102 | s.PatchValue(&ensureMongoServer, s.fakeEnsureMongo.fakeEnsureMongo) |
1914 | 99 | s.agentSuite.PatchValue(&maybeInitiateMongoServer, s.fakeEnsureMongo.fakeInitiateMongo) | 103 | s.PatchValue(&maybeInitiateMongoServer, s.fakeEnsureMongo.fakeInitiateMongo) |
1915 | 100 | } | 104 | } |
1916 | 101 | 105 | ||
1917 | 102 | func fakeCmd(path string) { | 106 | func fakeCmd(path string) { |
1918 | @@ -404,7 +408,7 @@ | |||
1919 | 404 | } | 408 | } |
1920 | 405 | 409 | ||
1921 | 406 | func (s *MachineSuite) TestManageEnvironRunsInstancePoller(c *gc.C) { | 410 | func (s *MachineSuite) TestManageEnvironRunsInstancePoller(c *gc.C) { |
1923 | 407 | s.agentSuite.PatchValue(&instancepoller.ShortPoll, 500*time.Millisecond) | 411 | s.PatchValue(&instancepoller.ShortPoll, 500*time.Millisecond) |
1924 | 408 | usefulVersion := version.Current | 412 | usefulVersion := version.Current |
1925 | 409 | usefulVersion.Series = "quantal" // to match the charm created below | 413 | usefulVersion.Series = "quantal" // to match the charm created below |
1926 | 410 | envtesting.AssertUploadFakeToolsVersions(c, s.Conn.Environ.Storage(), usefulVersion) | 414 | envtesting.AssertUploadFakeToolsVersions(c, s.Conn.Environ.Storage(), usefulVersion) |
1927 | @@ -445,7 +449,7 @@ | |||
1928 | 445 | 449 | ||
1929 | 446 | func (s *MachineSuite) TestManageEnvironRunsPeergrouper(c *gc.C) { | 450 | func (s *MachineSuite) TestManageEnvironRunsPeergrouper(c *gc.C) { |
1930 | 447 | started := make(chan struct{}, 1) | 451 | started := make(chan struct{}, 1) |
1932 | 448 | s.agentSuite.PatchValue(&peergrouperNew, func(st *state.State) (worker.Worker, error) { | 452 | testing.PatchValue(&peergrouperNew, func(st *state.State) (worker.Worker, error) { |
1933 | 449 | c.Check(st, gc.NotNil) | 453 | c.Check(st, gc.NotNil) |
1934 | 450 | select { | 454 | select { |
1935 | 451 | case started <- struct{}{}: | 455 | case started <- struct{}{}: |
1936 | @@ -466,33 +470,6 @@ | |||
1937 | 466 | } | 470 | } |
1938 | 467 | } | 471 | } |
1939 | 468 | 472 | ||
1940 | 469 | func (s *MachineSuite) TestEnsureLocalEnvironDoesntRunPeergrouper(c *gc.C) { | ||
1941 | 470 | started := make(chan struct{}, 1) | ||
1942 | 471 | s.agentSuite.PatchValue(&peergrouperNew, func(st *state.State) (worker.Worker, error) { | ||
1943 | 472 | c.Check(st, gc.NotNil) | ||
1944 | 473 | select { | ||
1945 | 474 | case started <- struct{}{}: | ||
1946 | 475 | default: | ||
1947 | 476 | } | ||
1948 | 477 | return newDummyWorker(), nil | ||
1949 | 478 | }) | ||
1950 | 479 | m, _, _ := s.primeAgent(c, version.Current, state.JobManageEnviron) | ||
1951 | 480 | a := s.newAgent(c, m) | ||
1952 | 481 | err := a.ChangeConfig(func(config agent.ConfigSetter) { | ||
1953 | 482 | config.SetValue(agent.ProviderType, "local") | ||
1954 | 483 | }) | ||
1955 | 484 | c.Assert(err, gc.IsNil) | ||
1956 | 485 | defer func() { c.Check(a.Stop(), gc.IsNil) }() | ||
1957 | 486 | go func() { | ||
1958 | 487 | c.Check(a.Run(nil), gc.IsNil) | ||
1959 | 488 | }() | ||
1960 | 489 | select { | ||
1961 | 490 | case <-started: | ||
1962 | 491 | c.Fatalf("local environment should not start peergrouper") | ||
1963 | 492 | case <-time.After(coretesting.ShortWait): | ||
1964 | 493 | } | ||
1965 | 494 | } | ||
1966 | 495 | |||
1967 | 496 | func (s *MachineSuite) TestManageEnvironCallsUseMultipleCPUs(c *gc.C) { | 473 | func (s *MachineSuite) TestManageEnvironCallsUseMultipleCPUs(c *gc.C) { |
1968 | 497 | // If it has been enabled, the JobManageEnviron agent should call utils.UseMultipleCPUs | 474 | // If it has been enabled, the JobManageEnviron agent should call utils.UseMultipleCPUs |
1969 | 498 | usefulVersion := version.Current | 475 | usefulVersion := version.Current |
1970 | @@ -500,7 +477,7 @@ | |||
1971 | 500 | envtesting.AssertUploadFakeToolsVersions(c, s.Conn.Environ.Storage(), usefulVersion) | 477 | envtesting.AssertUploadFakeToolsVersions(c, s.Conn.Environ.Storage(), usefulVersion) |
1972 | 501 | m, _, _ := s.primeAgent(c, version.Current, state.JobManageEnviron) | 478 | m, _, _ := s.primeAgent(c, version.Current, state.JobManageEnviron) |
1973 | 502 | calledChan := make(chan struct{}, 1) | 479 | calledChan := make(chan struct{}, 1) |
1975 | 503 | s.agentSuite.PatchValue(&useMultipleCPUs, func() { calledChan <- struct{}{} }) | 480 | s.PatchValue(&useMultipleCPUs, func() { calledChan <- struct{}{} }) |
1976 | 504 | // Now, start the agent, and observe that a JobManageEnviron agent | 481 | // Now, start the agent, and observe that a JobManageEnviron agent |
1977 | 505 | // calls UseMultipleCPUs | 482 | // calls UseMultipleCPUs |
1978 | 506 | a := s.newAgent(c, m) | 483 | a := s.newAgent(c, m) |
1979 | @@ -653,7 +630,7 @@ | |||
1980 | 653 | // need to check for that here, like in assertJobWithState. | 630 | // need to check for that here, like in assertJobWithState. |
1981 | 654 | 631 | ||
1982 | 655 | agentAPIs := make(chan eitherState, 1) | 632 | agentAPIs := make(chan eitherState, 1) |
1984 | 656 | s.agentSuite.PatchValue(reportOpened, func(st eitherState) { | 633 | s.PatchValue(reportOpened, func(st eitherState) { |
1985 | 657 | select { | 634 | select { |
1986 | 658 | case agentAPIs <- st: | 635 | case agentAPIs <- st: |
1987 | 659 | default: | 636 | default: |
1988 | @@ -853,8 +830,8 @@ | |||
1989 | 853 | 830 | ||
1990 | 854 | func (s *MachineSuite) TestMachineEnvironWorker(c *gc.C) { | 831 | func (s *MachineSuite) TestMachineEnvironWorker(c *gc.C) { |
1991 | 855 | proxyDir := c.MkDir() | 832 | proxyDir := c.MkDir() |
1994 | 856 | s.agentSuite.PatchValue(&machineenvironmentworker.ProxyDirectory, proxyDir) | 833 | s.PatchValue(&machineenvironmentworker.ProxyDirectory, proxyDir) |
1995 | 857 | s.agentSuite.PatchValue(&utils.AptConfFile, filepath.Join(proxyDir, "juju-apt-proxy")) | 834 | s.PatchValue(&utils.AptConfFile, filepath.Join(proxyDir, "juju-apt-proxy")) |
1996 | 858 | 835 | ||
1997 | 859 | s.primeAgent(c, version.Current, state.JobHostUnits) | 836 | s.primeAgent(c, version.Current, state.JobHostUnits) |
1998 | 860 | // Make sure there are some proxy settings to write. | 837 | // Make sure there are some proxy settings to write. |
1999 | @@ -911,7 +888,7 @@ | |||
2000 | 911 | 888 | ||
2001 | 912 | func (s *MachineSuite) testMachineAgentRsyslogConfigWorker(c *gc.C, job state.MachineJob, expectedMode rsyslog.RsyslogMode) { | 889 | func (s *MachineSuite) testMachineAgentRsyslogConfigWorker(c *gc.C, job state.MachineJob, expectedMode rsyslog.RsyslogMode) { |
2002 | 913 | created := make(chan rsyslog.RsyslogMode, 1) | 890 | created := make(chan rsyslog.RsyslogMode, 1) |
2004 | 914 | s.agentSuite.PatchValue(&newRsyslogConfigWorker, func(_ *apirsyslog.State, _ agent.Config, mode rsyslog.RsyslogMode) (worker.Worker, error) { | 891 | s.PatchValue(&newRsyslogConfigWorker, func(_ *apirsyslog.State, _ agent.Config, mode rsyslog.RsyslogMode) (worker.Worker, error) { |
2005 | 915 | created <- mode | 892 | created <- mode |
2006 | 916 | return newDummyWorker(), nil | 893 | return newDummyWorker(), nil |
2007 | 917 | }) | 894 | }) |
2008 | @@ -959,14 +936,14 @@ | |||
2009 | 959 | err = s.State.MongoSession().DB("admin").RemoveUser(m.Tag()) | 936 | err = s.State.MongoSession().DB("admin").RemoveUser(m.Tag()) |
2010 | 960 | c.Assert(err, gc.IsNil) | 937 | c.Assert(err, gc.IsNil) |
2011 | 961 | 938 | ||
2013 | 962 | s.agentSuite.PatchValue(&ensureMongoAdminUser, func(p mongo.EnsureAdminUserParams) (bool, error) { | 939 | s.PatchValue(&ensureMongoAdminUser, func(p mongo.EnsureAdminUserParams) (bool, error) { |
2014 | 963 | err := s.State.MongoSession().DB("admin").AddUser(p.User, p.Password, false) | 940 | err := s.State.MongoSession().DB("admin").AddUser(p.User, p.Password, false) |
2015 | 964 | c.Assert(err, gc.IsNil) | 941 | c.Assert(err, gc.IsNil) |
2016 | 965 | return true, nil | 942 | return true, nil |
2017 | 966 | }) | 943 | }) |
2018 | 967 | 944 | ||
2019 | 968 | stateOpened := make(chan eitherState, 1) | 945 | stateOpened := make(chan eitherState, 1) |
2021 | 969 | s.agentSuite.PatchValue(&reportOpenedState, func(st eitherState) { | 946 | s.PatchValue(&reportOpenedState, func(st eitherState) { |
2022 | 970 | select { | 947 | select { |
2023 | 971 | case stateOpened <- st: | 948 | case stateOpened <- st: |
2024 | 972 | default: | 949 | default: |
2025 | 973 | 950 | ||
2026 | === modified file 'cmd/jujud/run_test.go' | |||
2027 | --- cmd/jujud/run_test.go 2014-05-20 04:27:02 +0000 | |||
2028 | +++ cmd/jujud/run_test.go 2014-05-22 14:33:28 +0000 | |||
2029 | @@ -15,13 +15,14 @@ | |||
2030 | 15 | 15 | ||
2031 | 16 | "launchpad.net/juju-core/cmd" | 16 | "launchpad.net/juju-core/cmd" |
2032 | 17 | "launchpad.net/juju-core/testing" | 17 | "launchpad.net/juju-core/testing" |
2033 | 18 | "launchpad.net/juju-core/testing/testbase" | ||
2034 | 18 | "launchpad.net/juju-core/utils/exec" | 19 | "launchpad.net/juju-core/utils/exec" |
2035 | 19 | "launchpad.net/juju-core/utils/fslock" | 20 | "launchpad.net/juju-core/utils/fslock" |
2036 | 20 | "launchpad.net/juju-core/worker/uniter" | 21 | "launchpad.net/juju-core/worker/uniter" |
2037 | 21 | ) | 22 | ) |
2038 | 22 | 23 | ||
2039 | 23 | type RunTestSuite struct { | 24 | type RunTestSuite struct { |
2041 | 24 | testing.BaseSuite | 25 | testbase.LoggingSuite |
2042 | 25 | } | 26 | } |
2043 | 26 | 27 | ||
2044 | 27 | var _ = gc.Suite(&RunTestSuite{}) | 28 | var _ = gc.Suite(&RunTestSuite{}) |
2045 | 28 | 29 | ||
2046 | === modified file 'cmd/jujud/upgrade_test.go' | |||
2047 | --- cmd/jujud/upgrade_test.go 2014-05-16 04:20:04 +0000 | |||
2048 | +++ cmd/jujud/upgrade_test.go 2014-05-22 14:33:28 +0000 | |||
2049 | @@ -36,7 +36,7 @@ | |||
2050 | 36 | 36 | ||
2051 | 37 | // Capture all apt commands. | 37 | // Capture all apt commands. |
2052 | 38 | s.aptCmds = nil | 38 | s.aptCmds = nil |
2054 | 39 | aptCmds := s.agentSuite.HookCommandOutput(&utils.AptCommandOutput, nil, nil) | 39 | aptCmds := s.HookCommandOutput(&utils.AptCommandOutput, nil, nil) |
2055 | 40 | go func() { | 40 | go func() { |
2056 | 41 | for cmd := range aptCmds { | 41 | for cmd := range aptCmds { |
2057 | 42 | s.aptCmds = append(s.aptCmds, cmd) | 42 | s.aptCmds = append(s.aptCmds, cmd) |
2058 | @@ -65,7 +65,7 @@ | |||
2059 | 65 | } | 65 | } |
2060 | 66 | 66 | ||
2061 | 67 | func (s *UpgradeSuite) assertUpgradeSteps(c *gc.C, job state.MachineJob) { | 67 | func (s *UpgradeSuite) assertUpgradeSteps(c *gc.C, job state.MachineJob) { |
2063 | 68 | s.agentSuite.PatchValue(&version.Current, s.upgradeToVersion) | 68 | s.PatchValue(&version.Current, s.upgradeToVersion) |
2064 | 69 | err := s.State.SetEnvironAgentVersion(s.upgradeToVersion.Number) | 69 | err := s.State.SetEnvironAgentVersion(s.upgradeToVersion.Number) |
2065 | 70 | c.Assert(err, gc.IsNil) | 70 | c.Assert(err, gc.IsNil) |
2066 | 71 | 71 | ||
2067 | 72 | 72 | ||
2068 | === modified file 'cmd/plugins/juju-metadata/imagemetadata_test.go' | |||
2069 | --- cmd/plugins/juju-metadata/imagemetadata_test.go 2014-05-16 01:33:13 +0000 | |||
2070 | +++ cmd/plugins/juju-metadata/imagemetadata_test.go 2014-05-22 14:33:28 +0000 | |||
2071 | @@ -19,23 +19,26 @@ | |||
2072 | 19 | "launchpad.net/juju-core/environs/config" | 19 | "launchpad.net/juju-core/environs/config" |
2073 | 20 | "launchpad.net/juju-core/provider/dummy" | 20 | "launchpad.net/juju-core/provider/dummy" |
2074 | 21 | "launchpad.net/juju-core/testing" | 21 | "launchpad.net/juju-core/testing" |
2075 | 22 | "launchpad.net/juju-core/testing/testbase" | ||
2076 | 22 | ) | 23 | ) |
2077 | 23 | 24 | ||
2078 | 24 | type ImageMetadataSuite struct { | 25 | type ImageMetadataSuite struct { |
2080 | 25 | testing.FakeJujuHomeSuite | 26 | testbase.LoggingSuite |
2081 | 26 | environ []string | 27 | environ []string |
2082 | 28 | home *testing.FakeHome | ||
2083 | 27 | dir string | 29 | dir string |
2084 | 28 | } | 30 | } |
2085 | 29 | 31 | ||
2086 | 30 | var _ = gc.Suite(&ImageMetadataSuite{}) | 32 | var _ = gc.Suite(&ImageMetadataSuite{}) |
2087 | 31 | 33 | ||
2088 | 32 | func (s *ImageMetadataSuite) SetUpSuite(c *gc.C) { | 34 | func (s *ImageMetadataSuite) SetUpSuite(c *gc.C) { |
2090 | 33 | s.FakeJujuHomeSuite.SetUpSuite(c) | 35 | s.LoggingSuite.SetUpSuite(c) |
2091 | 34 | s.environ = os.Environ() | 36 | s.environ = os.Environ() |
2092 | 35 | } | 37 | } |
2093 | 36 | 38 | ||
2094 | 37 | func (s *ImageMetadataSuite) SetUpTest(c *gc.C) { | 39 | func (s *ImageMetadataSuite) SetUpTest(c *gc.C) { |
2096 | 38 | s.FakeJujuHomeSuite.SetUpTest(c) | 40 | s.LoggingSuite.SetUpTest(c) |
2097 | 41 | os.Clearenv() | ||
2098 | 39 | s.dir = c.MkDir() | 42 | s.dir = c.MkDir() |
2099 | 40 | // Create a fake certificate so azure test environment can be opened. | 43 | // Create a fake certificate so azure test environment can be opened. |
2100 | 41 | certfile, err := ioutil.TempFile(s.dir, "") | 44 | certfile, err := ioutil.TempFile(s.dir, "") |
2101 | @@ -44,11 +47,20 @@ | |||
2102 | 44 | err = ioutil.WriteFile(filename, []byte("test certificate"), 0644) | 47 | err = ioutil.WriteFile(filename, []byte("test certificate"), 0644) |
2103 | 45 | c.Assert(err, gc.IsNil) | 48 | c.Assert(err, gc.IsNil) |
2104 | 46 | envConfig := strings.Replace(metadataTestEnvConfig, "/home/me/azure.pem", filename, -1) | 49 | envConfig := strings.Replace(metadataTestEnvConfig, "/home/me/azure.pem", filename, -1) |
2106 | 47 | testing.WriteEnvironments(c, envConfig) | 50 | s.home = testing.MakeFakeHome(c, envConfig) |
2107 | 48 | s.PatchEnvironment("AWS_ACCESS_KEY_ID", "access") | 51 | s.PatchEnvironment("AWS_ACCESS_KEY_ID", "access") |
2108 | 49 | s.PatchEnvironment("AWS_SECRET_ACCESS_KEY", "secret") | 52 | s.PatchEnvironment("AWS_SECRET_ACCESS_KEY", "secret") |
2109 | 50 | } | 53 | } |
2110 | 51 | 54 | ||
2111 | 55 | func (s *ImageMetadataSuite) TearDownTest(c *gc.C) { | ||
2112 | 56 | for _, envstring := range s.environ { | ||
2113 | 57 | kv := strings.SplitN(envstring, "=", 2) | ||
2114 | 58 | os.Setenv(kv[0], kv[1]) | ||
2115 | 59 | } | ||
2116 | 60 | s.home.Restore() | ||
2117 | 61 | s.LoggingSuite.TearDownTest(c) | ||
2118 | 62 | } | ||
2119 | 63 | |||
2120 | 52 | var seriesVersions map[string]string = map[string]string{ | 64 | var seriesVersions map[string]string = map[string]string{ |
2121 | 53 | "precise": "12.04", | 65 | "precise": "12.04", |
2122 | 54 | "raring": "13.04", | 66 | "raring": "13.04", |
2123 | @@ -131,8 +143,6 @@ | |||
2124 | 131 | } | 143 | } |
2125 | 132 | 144 | ||
2126 | 133 | func (s *ImageMetadataSuite) TestImageMetadataFilesLatestLts(c *gc.C) { | 145 | func (s *ImageMetadataSuite) TestImageMetadataFilesLatestLts(c *gc.C) { |
2127 | 134 | envConfig := strings.Replace(metadataTestEnvConfig, "default-series: precise", "", -1) | ||
2128 | 135 | testing.WriteEnvironments(c, envConfig) | ||
2129 | 136 | ctx := testing.Context(c) | 146 | ctx := testing.Context(c) |
2130 | 137 | code := cmd.Main( | 147 | code := cmd.Main( |
2131 | 138 | envcmd.Wrap(&ImageMetadataCommand{}), ctx, []string{ | 148 | envcmd.Wrap(&ImageMetadataCommand{}), ctx, []string{ |
2132 | @@ -217,8 +227,9 @@ | |||
2133 | 217 | } | 227 | } |
2134 | 218 | 228 | ||
2135 | 219 | func (s *ImageMetadataSuite) TestImageMetadataBadArgs(c *gc.C) { | 229 | func (s *ImageMetadataSuite) TestImageMetadataBadArgs(c *gc.C) { |
2137 | 220 | testing.MakeSampleJujuHome(c) | 230 | home := testing.MakeSampleHome(c) |
2138 | 221 | s.AddCleanup(func(*gc.C) { | 231 | s.AddCleanup(func(*gc.C) { |
2139 | 232 | home.Restore() | ||
2140 | 222 | dummy.Reset() | 233 | dummy.Reset() |
2141 | 223 | }) | 234 | }) |
2142 | 224 | for i, t := range errTests { | 235 | for i, t := range errTests { |
2143 | 225 | 236 | ||
2144 | === modified file 'cmd/plugins/juju-metadata/metadataplugin_test.go' | |||
2145 | --- cmd/plugins/juju-metadata/metadataplugin_test.go 2014-05-16 01:33:13 +0000 | |||
2146 | +++ cmd/plugins/juju-metadata/metadataplugin_test.go 2014-05-22 14:33:28 +0000 | |||
2147 | @@ -22,7 +22,7 @@ | |||
2148 | 22 | } | 22 | } |
2149 | 23 | 23 | ||
2150 | 24 | type MetadataSuite struct { | 24 | type MetadataSuite struct { |
2152 | 25 | testing.FakeJujuHomeSuite | 25 | jujuHome *testing.FakeHome |
2153 | 26 | } | 26 | } |
2154 | 27 | 27 | ||
2155 | 28 | var _ = gc.Suite(&MetadataSuite{}) | 28 | var _ = gc.Suite(&MetadataSuite{}) |
2156 | @@ -36,6 +36,14 @@ | |||
2157 | 36 | "validate-tools", | 36 | "validate-tools", |
2158 | 37 | } | 37 | } |
2159 | 38 | 38 | ||
2160 | 39 | func (s *MetadataSuite) SetUpTest(c *gc.C) { | ||
2161 | 40 | s.jujuHome = testing.MakeEmptyFakeHome(c) | ||
2162 | 41 | } | ||
2163 | 42 | |||
2164 | 43 | func (s *MetadataSuite) TearDownTest(c *gc.C) { | ||
2165 | 44 | s.jujuHome.Restore() | ||
2166 | 45 | } | ||
2167 | 46 | |||
2168 | 39 | var ( | 47 | var ( |
2169 | 40 | flagRunMain = flag.Bool("run-main", false, "Run the application's main function for recursive testing") | 48 | flagRunMain = flag.Bool("run-main", false, "Run the application's main function for recursive testing") |
2170 | 41 | ) | 49 | ) |
2171 | 42 | 50 | ||
2172 | === modified file 'cmd/plugins/juju-metadata/toolsmetadata_test.go' | |||
2173 | --- cmd/plugins/juju-metadata/toolsmetadata_test.go 2014-05-19 04:28:01 +0000 | |||
2174 | +++ cmd/plugins/juju-metadata/toolsmetadata_test.go 2014-05-22 14:33:28 +0000 | |||
2175 | @@ -23,11 +23,13 @@ | |||
2176 | 23 | "launchpad.net/juju-core/juju/osenv" | 23 | "launchpad.net/juju-core/juju/osenv" |
2177 | 24 | "launchpad.net/juju-core/provider/dummy" | 24 | "launchpad.net/juju-core/provider/dummy" |
2178 | 25 | coretesting "launchpad.net/juju-core/testing" | 25 | coretesting "launchpad.net/juju-core/testing" |
2179 | 26 | "launchpad.net/juju-core/testing/testbase" | ||
2180 | 26 | "launchpad.net/juju-core/version" | 27 | "launchpad.net/juju-core/version" |
2181 | 27 | ) | 28 | ) |
2182 | 28 | 29 | ||
2183 | 29 | type ToolsMetadataSuite struct { | 30 | type ToolsMetadataSuite struct { |
2185 | 30 | coretesting.FakeJujuHomeSuite | 31 | testbase.LoggingSuite |
2186 | 32 | home *coretesting.FakeHome | ||
2187 | 31 | env environs.Environ | 33 | env environs.Environ |
2188 | 32 | publicStorageDir string | 34 | publicStorageDir string |
2189 | 33 | } | 35 | } |
2190 | @@ -35,8 +37,10 @@ | |||
2191 | 35 | var _ = gc.Suite(&ToolsMetadataSuite{}) | 37 | var _ = gc.Suite(&ToolsMetadataSuite{}) |
2192 | 36 | 38 | ||
2193 | 37 | func (s *ToolsMetadataSuite) SetUpTest(c *gc.C) { | 39 | func (s *ToolsMetadataSuite) SetUpTest(c *gc.C) { |
2195 | 38 | s.FakeJujuHomeSuite.SetUpTest(c) | 40 | s.LoggingSuite.SetUpTest(c) |
2196 | 41 | s.home = coretesting.MakeSampleHome(c) | ||
2197 | 39 | s.AddCleanup(func(*gc.C) { | 42 | s.AddCleanup(func(*gc.C) { |
2198 | 43 | s.home.Restore() | ||
2199 | 40 | dummy.Reset() | 44 | dummy.Reset() |
2200 | 41 | loggo.ResetLoggers() | 45 | loggo.ResetLoggers() |
2201 | 42 | }) | 46 | }) |
2202 | 43 | 47 | ||
2203 | === modified file 'cmd/plugins/juju-metadata/validateimagemetadata_test.go' | |||
2204 | --- cmd/plugins/juju-metadata/validateimagemetadata_test.go 2014-05-16 01:33:13 +0000 | |||
2205 | +++ cmd/plugins/juju-metadata/validateimagemetadata_test.go 2014-05-22 14:33:28 +0000 | |||
2206 | @@ -16,10 +16,12 @@ | |||
2207 | 16 | "launchpad.net/juju-core/environs/imagemetadata" | 16 | "launchpad.net/juju-core/environs/imagemetadata" |
2208 | 17 | "launchpad.net/juju-core/environs/simplestreams" | 17 | "launchpad.net/juju-core/environs/simplestreams" |
2209 | 18 | coretesting "launchpad.net/juju-core/testing" | 18 | coretesting "launchpad.net/juju-core/testing" |
2210 | 19 | "launchpad.net/juju-core/testing/testbase" | ||
2211 | 19 | ) | 20 | ) |
2212 | 20 | 21 | ||
2213 | 21 | type ValidateImageMetadataSuite struct { | 22 | type ValidateImageMetadataSuite struct { |
2215 | 22 | coretesting.FakeJujuHomeSuite | 23 | testbase.LoggingSuite |
2216 | 24 | home *coretesting.FakeHome | ||
2217 | 23 | metadataDir string | 25 | metadataDir string |
2218 | 24 | } | 26 | } |
2219 | 25 | 27 | ||
2220 | @@ -104,13 +106,18 @@ | |||
2221 | 104 | ` | 106 | ` |
2222 | 105 | 107 | ||
2223 | 106 | func (s *ValidateImageMetadataSuite) SetUpTest(c *gc.C) { | 108 | func (s *ValidateImageMetadataSuite) SetUpTest(c *gc.C) { |
2225 | 107 | s.FakeJujuHomeSuite.SetUpTest(c) | 109 | s.LoggingSuite.SetUpTest(c) |
2226 | 108 | s.metadataDir = c.MkDir() | 110 | s.metadataDir = c.MkDir() |
2228 | 109 | coretesting.WriteEnvironments(c, metadataTestEnvConfig) | 111 | s.home = coretesting.MakeFakeHome(c, metadataTestEnvConfig) |
2229 | 110 | s.PatchEnvironment("AWS_ACCESS_KEY_ID", "access") | 112 | s.PatchEnvironment("AWS_ACCESS_KEY_ID", "access") |
2230 | 111 | s.PatchEnvironment("AWS_SECRET_ACCESS_KEY", "secret") | 113 | s.PatchEnvironment("AWS_SECRET_ACCESS_KEY", "secret") |
2231 | 112 | } | 114 | } |
2232 | 113 | 115 | ||
2233 | 116 | func (s *ValidateImageMetadataSuite) TearDownTest(c *gc.C) { | ||
2234 | 117 | s.home.Restore() | ||
2235 | 118 | s.LoggingSuite.TearDownTest(c) | ||
2236 | 119 | } | ||
2237 | 120 | |||
2238 | 114 | func (s *ValidateImageMetadataSuite) setupEc2LocalMetadata(c *gc.C, region, stream string) { | 121 | func (s *ValidateImageMetadataSuite) setupEc2LocalMetadata(c *gc.C, region, stream string) { |
2239 | 115 | ec2Region, ok := aws.Regions[region] | 122 | ec2Region, ok := aws.Regions[region] |
2240 | 116 | if !ok { | 123 | if !ok { |
2241 | 117 | 124 | ||
2242 | === modified file 'cmd/plugins/juju-metadata/validatetoolsmetadata_test.go' | |||
2243 | --- cmd/plugins/juju-metadata/validatetoolsmetadata_test.go 2014-05-16 01:33:13 +0000 | |||
2244 | +++ cmd/plugins/juju-metadata/validatetoolsmetadata_test.go 2014-05-22 14:33:28 +0000 | |||
2245 | @@ -15,11 +15,13 @@ | |||
2246 | 15 | "launchpad.net/juju-core/environs/filestorage" | 15 | "launchpad.net/juju-core/environs/filestorage" |
2247 | 16 | "launchpad.net/juju-core/environs/tools" | 16 | "launchpad.net/juju-core/environs/tools" |
2248 | 17 | coretesting "launchpad.net/juju-core/testing" | 17 | coretesting "launchpad.net/juju-core/testing" |
2249 | 18 | "launchpad.net/juju-core/testing/testbase" | ||
2250 | 18 | "launchpad.net/juju-core/version" | 19 | "launchpad.net/juju-core/version" |
2251 | 19 | ) | 20 | ) |
2252 | 20 | 21 | ||
2253 | 21 | type ValidateToolsMetadataSuite struct { | 22 | type ValidateToolsMetadataSuite struct { |
2255 | 22 | coretesting.FakeJujuHomeSuite | 23 | testbase.LoggingSuite |
2256 | 24 | home *coretesting.FakeHome | ||
2257 | 23 | metadataDir string | 25 | metadataDir string |
2258 | 24 | } | 26 | } |
2259 | 25 | 27 | ||
2260 | @@ -86,13 +88,18 @@ | |||
2261 | 86 | } | 88 | } |
2262 | 87 | 89 | ||
2263 | 88 | func (s *ValidateToolsMetadataSuite) SetUpTest(c *gc.C) { | 90 | func (s *ValidateToolsMetadataSuite) SetUpTest(c *gc.C) { |
2266 | 89 | s.FakeJujuHomeSuite.SetUpTest(c) | 91 | s.LoggingSuite.SetUpTest(c) |
2267 | 90 | coretesting.WriteEnvironments(c, metadataTestEnvConfig) | 92 | s.home = coretesting.MakeFakeHome(c, metadataTestEnvConfig) |
2268 | 91 | s.metadataDir = c.MkDir() | 93 | s.metadataDir = c.MkDir() |
2269 | 92 | s.PatchEnvironment("AWS_ACCESS_KEY_ID", "access") | 94 | s.PatchEnvironment("AWS_ACCESS_KEY_ID", "access") |
2270 | 93 | s.PatchEnvironment("AWS_SECRET_ACCESS_KEY", "secret") | 95 | s.PatchEnvironment("AWS_SECRET_ACCESS_KEY", "secret") |
2271 | 94 | } | 96 | } |
2272 | 95 | 97 | ||
2273 | 98 | func (s *ValidateToolsMetadataSuite) TearDownTest(c *gc.C) { | ||
2274 | 99 | s.home.Restore() | ||
2275 | 100 | s.LoggingSuite.TearDownTest(c) | ||
2276 | 101 | } | ||
2277 | 102 | |||
2278 | 96 | func (s *ValidateToolsMetadataSuite) setupEc2LocalMetadata(c *gc.C, region string) { | 103 | func (s *ValidateToolsMetadataSuite) setupEc2LocalMetadata(c *gc.C, region string) { |
2279 | 97 | ec2Region, ok := aws.Regions[region] | 104 | ec2Region, ok := aws.Regions[region] |
2280 | 98 | if !ok { | 105 | if !ok { |
2281 | 99 | 106 | ||
2282 | === modified file 'cmd/plugins/local/main_test.go' | |||
2283 | --- cmd/plugins/local/main_test.go 2014-05-20 04:27:02 +0000 | |||
2284 | +++ cmd/plugins/local/main_test.go 2014-05-22 14:33:28 +0000 | |||
2285 | @@ -15,10 +15,11 @@ | |||
2286 | 15 | "launchpad.net/juju-core/cmd" | 15 | "launchpad.net/juju-core/cmd" |
2287 | 16 | "launchpad.net/juju-core/cmd/plugins/local" | 16 | "launchpad.net/juju-core/cmd/plugins/local" |
2288 | 17 | coretesting "launchpad.net/juju-core/testing" | 17 | coretesting "launchpad.net/juju-core/testing" |
2289 | 18 | "launchpad.net/juju-core/testing/testbase" | ||
2290 | 18 | ) | 19 | ) |
2291 | 19 | 20 | ||
2292 | 20 | type mainSuite struct { | 21 | type mainSuite struct { |
2294 | 21 | coretesting.BaseSuite | 22 | testbase.LoggingSuite |
2295 | 22 | } | 23 | } |
2296 | 23 | 24 | ||
2297 | 24 | var _ = gc.Suite(&mainSuite{}) | 25 | var _ = gc.Suite(&mainSuite{}) |
2298 | 25 | 26 | ||
2299 | === modified file 'constraints/validation_test.go' | |||
2300 | --- constraints/validation_test.go 2014-05-20 05:33:59 +0000 | |||
2301 | +++ constraints/validation_test.go 2014-05-22 14:33:28 +0000 | |||
2302 | @@ -126,7 +126,7 @@ | |||
2303 | 126 | unsupported, err := validator.Validate(cons) | 126 | unsupported, err := validator.Validate(cons) |
2304 | 127 | if t.err == "" { | 127 | if t.err == "" { |
2305 | 128 | c.Assert(err, gc.IsNil) | 128 | c.Assert(err, gc.IsNil) |
2307 | 129 | c.Assert(unsupported, jc.SameContents, t.unsupported) | 129 | c.Assert(unsupported, jc.DeepEquals, t.unsupported) |
2308 | 130 | } else { | 130 | } else { |
2309 | 131 | c.Assert(err, gc.ErrorMatches, t.err) | 131 | c.Assert(err, gc.ErrorMatches, t.err) |
2310 | 132 | } | 132 | } |
2311 | 133 | 133 | ||
2312 | === modified file 'container/directory_test.go' | |||
2313 | --- container/directory_test.go 2014-05-20 04:27:02 +0000 | |||
2314 | +++ container/directory_test.go 2014-05-22 14:33:28 +0000 | |||
2315 | @@ -11,11 +11,11 @@ | |||
2316 | 11 | gc "launchpad.net/gocheck" | 11 | gc "launchpad.net/gocheck" |
2317 | 12 | 12 | ||
2318 | 13 | "launchpad.net/juju-core/container" | 13 | "launchpad.net/juju-core/container" |
2320 | 14 | "launchpad.net/juju-core/testing" | 14 | "launchpad.net/juju-core/testing/testbase" |
2321 | 15 | ) | 15 | ) |
2322 | 16 | 16 | ||
2323 | 17 | type DirectorySuite struct { | 17 | type DirectorySuite struct { |
2325 | 18 | testing.BaseSuite | 18 | testbase.LoggingSuite |
2326 | 19 | containerDir string | 19 | containerDir string |
2327 | 20 | removedDir string | 20 | removedDir string |
2328 | 21 | } | 21 | } |
2329 | @@ -23,7 +23,7 @@ | |||
2330 | 23 | var _ = gc.Suite(&DirectorySuite{}) | 23 | var _ = gc.Suite(&DirectorySuite{}) |
2331 | 24 | 24 | ||
2332 | 25 | func (s *DirectorySuite) SetUpTest(c *gc.C) { | 25 | func (s *DirectorySuite) SetUpTest(c *gc.C) { |
2334 | 26 | s.BaseSuite.SetUpTest(c) | 26 | s.LoggingSuite.SetUpTest(c) |
2335 | 27 | s.containerDir = c.MkDir() | 27 | s.containerDir = c.MkDir() |
2336 | 28 | s.PatchValue(&container.ContainerDir, s.containerDir) | 28 | s.PatchValue(&container.ContainerDir, s.containerDir) |
2337 | 29 | s.removedDir = c.MkDir() | 29 | s.removedDir = c.MkDir() |
2338 | 30 | 30 | ||
2339 | === modified file 'container/factory/factory_test.go' | |||
2340 | --- container/factory/factory_test.go 2014-05-20 04:27:02 +0000 | |||
2341 | +++ container/factory/factory_test.go 2014-05-22 14:33:28 +0000 | |||
2342 | @@ -9,11 +9,11 @@ | |||
2343 | 9 | "launchpad.net/juju-core/container" | 9 | "launchpad.net/juju-core/container" |
2344 | 10 | "launchpad.net/juju-core/container/factory" | 10 | "launchpad.net/juju-core/container/factory" |
2345 | 11 | "launchpad.net/juju-core/instance" | 11 | "launchpad.net/juju-core/instance" |
2347 | 12 | "launchpad.net/juju-core/testing" | 12 | "launchpad.net/juju-core/testing/testbase" |
2348 | 13 | ) | 13 | ) |
2349 | 14 | 14 | ||
2350 | 15 | type factorySuite struct { | 15 | type factorySuite struct { |
2352 | 16 | testing.BaseSuite | 16 | testbase.LoggingSuite |
2353 | 17 | } | 17 | } |
2354 | 18 | 18 | ||
2355 | 19 | var _ = gc.Suite(&factorySuite{}) | 19 | var _ = gc.Suite(&factorySuite{}) |
2356 | 20 | 20 | ||
2357 | === modified file 'container/kvm/kvm_test.go' | |||
2358 | --- container/kvm/kvm_test.go 2014-05-20 04:27:02 +0000 | |||
2359 | +++ container/kvm/kvm_test.go 2014-05-22 14:33:28 +0000 | |||
2360 | @@ -16,7 +16,7 @@ | |||
2361 | 16 | kvmtesting "launchpad.net/juju-core/container/kvm/testing" | 16 | kvmtesting "launchpad.net/juju-core/container/kvm/testing" |
2362 | 17 | containertesting "launchpad.net/juju-core/container/testing" | 17 | containertesting "launchpad.net/juju-core/container/testing" |
2363 | 18 | "launchpad.net/juju-core/instance" | 18 | "launchpad.net/juju-core/instance" |
2365 | 19 | coretesting "launchpad.net/juju-core/testing" | 19 | "launchpad.net/juju-core/testing/testbase" |
2366 | 20 | "launchpad.net/juju-core/version" | 20 | "launchpad.net/juju-core/version" |
2367 | 21 | ) | 21 | ) |
2368 | 22 | 22 | ||
2369 | @@ -109,7 +109,7 @@ | |||
2370 | 109 | } | 109 | } |
2371 | 110 | 110 | ||
2372 | 111 | type ConstraintsSuite struct { | 111 | type ConstraintsSuite struct { |
2374 | 112 | coretesting.BaseSuite | 112 | testbase.LoggingSuite |
2375 | 113 | } | 113 | } |
2376 | 114 | 114 | ||
2377 | 115 | var _ = gc.Suite(&ConstraintsSuite{}) | 115 | var _ = gc.Suite(&ConstraintsSuite{}) |
2378 | 116 | 116 | ||
2379 | === modified file 'container/kvm/live_test.go' | |||
2380 | --- container/kvm/live_test.go 2014-05-20 04:27:02 +0000 | |||
2381 | +++ container/kvm/live_test.go 2014-05-22 14:33:28 +0000 | |||
2382 | @@ -19,12 +19,13 @@ | |||
2383 | 19 | "launchpad.net/juju-core/instance" | 19 | "launchpad.net/juju-core/instance" |
2384 | 20 | jujutesting "launchpad.net/juju-core/juju/testing" | 20 | jujutesting "launchpad.net/juju-core/juju/testing" |
2385 | 21 | coretesting "launchpad.net/juju-core/testing" | 21 | coretesting "launchpad.net/juju-core/testing" |
2386 | 22 | "launchpad.net/juju-core/testing/testbase" | ||
2387 | 22 | "launchpad.net/juju-core/tools" | 23 | "launchpad.net/juju-core/tools" |
2388 | 23 | "launchpad.net/juju-core/version" | 24 | "launchpad.net/juju-core/version" |
2389 | 24 | ) | 25 | ) |
2390 | 25 | 26 | ||
2391 | 26 | type LiveSuite struct { | 27 | type LiveSuite struct { |
2393 | 27 | coretesting.BaseSuite | 28 | testbase.LoggingSuite |
2394 | 28 | ContainerDir string | 29 | ContainerDir string |
2395 | 29 | RemovedDir string | 30 | RemovedDir string |
2396 | 30 | } | 31 | } |
2397 | @@ -32,7 +33,7 @@ | |||
2398 | 32 | var _ = gc.Suite(&LiveSuite{}) | 33 | var _ = gc.Suite(&LiveSuite{}) |
2399 | 33 | 34 | ||
2400 | 34 | func (s *LiveSuite) SetUpTest(c *gc.C) { | 35 | func (s *LiveSuite) SetUpTest(c *gc.C) { |
2402 | 35 | s.BaseSuite.SetUpTest(c) | 36 | s.LoggingSuite.SetUpTest(c) |
2403 | 36 | // Skip if not linux | 37 | // Skip if not linux |
2404 | 37 | if runtime.GOOS != "linux" { | 38 | if runtime.GOOS != "linux" { |
2405 | 38 | c.Skip("not running linux") | 39 | c.Skip("not running linux") |
2406 | 39 | 40 | ||
2407 | === modified file 'container/kvm/mock/mock-kvm_test.go' | |||
2408 | --- container/kvm/mock/mock-kvm_test.go 2014-05-20 04:27:02 +0000 | |||
2409 | +++ container/kvm/mock/mock-kvm_test.go 2014-05-22 14:33:28 +0000 | |||
2410 | @@ -9,11 +9,11 @@ | |||
2411 | 9 | 9 | ||
2412 | 10 | "launchpad.net/juju-core/container/kvm" | 10 | "launchpad.net/juju-core/container/kvm" |
2413 | 11 | "launchpad.net/juju-core/container/kvm/mock" | 11 | "launchpad.net/juju-core/container/kvm/mock" |
2415 | 12 | "launchpad.net/juju-core/testing" | 12 | "launchpad.net/juju-core/testing/testbase" |
2416 | 13 | ) | 13 | ) |
2417 | 14 | 14 | ||
2418 | 15 | type MockSuite struct { | 15 | type MockSuite struct { |
2420 | 16 | testing.BaseSuite | 16 | testbase.LoggingSuite |
2421 | 17 | } | 17 | } |
2422 | 18 | 18 | ||
2423 | 19 | var _ = gc.Suite(&MockSuite{}) | 19 | var _ = gc.Suite(&MockSuite{}) |
2424 | 20 | 20 | ||
2425 | === modified file 'container/kvm/testing/test.go' | |||
2426 | --- container/kvm/testing/test.go 2014-05-20 04:27:02 +0000 | |||
2427 | +++ container/kvm/testing/test.go 2014-05-22 14:33:28 +0000 | |||
2428 | @@ -13,20 +13,20 @@ | |||
2429 | 13 | "launchpad.net/juju-core/container" | 13 | "launchpad.net/juju-core/container" |
2430 | 14 | "launchpad.net/juju-core/container/kvm" | 14 | "launchpad.net/juju-core/container/kvm" |
2431 | 15 | "launchpad.net/juju-core/container/kvm/mock" | 15 | "launchpad.net/juju-core/container/kvm/mock" |
2433 | 16 | "launchpad.net/juju-core/testing" | 16 | "launchpad.net/juju-core/testing/testbase" |
2434 | 17 | ) | 17 | ) |
2435 | 18 | 18 | ||
2436 | 19 | // TestSuite replaces the kvm factory that the manager uses with a mock | 19 | // TestSuite replaces the kvm factory that the manager uses with a mock |
2437 | 20 | // implementation. | 20 | // implementation. |
2438 | 21 | type TestSuite struct { | 21 | type TestSuite struct { |
2440 | 22 | testing.BaseSuite | 22 | testbase.LoggingSuite |
2441 | 23 | Factory mock.ContainerFactory | 23 | Factory mock.ContainerFactory |
2442 | 24 | ContainerDir string | 24 | ContainerDir string |
2443 | 25 | RemovedDir string | 25 | RemovedDir string |
2444 | 26 | } | 26 | } |
2445 | 27 | 27 | ||
2446 | 28 | func (s *TestSuite) SetUpTest(c *gc.C) { | 28 | func (s *TestSuite) SetUpTest(c *gc.C) { |
2448 | 29 | s.BaseSuite.SetUpTest(c) | 29 | s.LoggingSuite.SetUpTest(c) |
2449 | 30 | s.ContainerDir = c.MkDir() | 30 | s.ContainerDir = c.MkDir() |
2450 | 31 | s.PatchValue(&container.ContainerDir, s.ContainerDir) | 31 | s.PatchValue(&container.ContainerDir, s.ContainerDir) |
2451 | 32 | s.RemovedDir = c.MkDir() | 32 | s.RemovedDir = c.MkDir() |
2452 | 33 | 33 | ||
2453 | === modified file 'container/lxc/export_test.go' | |||
2454 | --- container/lxc/export_test.go 2014-05-13 12:57:53 +0000 | |||
2455 | +++ container/lxc/export_test.go 2014-05-22 14:33:28 +0000 | |||
2456 | @@ -3,18 +3,10 @@ | |||
2457 | 3 | 3 | ||
2458 | 4 | package lxc | 4 | package lxc |
2459 | 5 | 5 | ||
2460 | 6 | import "launchpad.net/juju-core/container" | ||
2461 | 7 | |||
2462 | 8 | var ( | 6 | var ( |
2463 | 9 | ContainerConfigFilename = containerConfigFilename | 7 | ContainerConfigFilename = containerConfigFilename |
2464 | 10 | ContainerDirFilesystem = containerDirFilesystem | 8 | ContainerDirFilesystem = containerDirFilesystem |
2465 | 11 | GenerateNetworkConfig = generateNetworkConfig | 9 | GenerateNetworkConfig = generateNetworkConfig |
2466 | 12 | NetworkConfigTemplate = networkConfigTemplate | 10 | NetworkConfigTemplate = networkConfigTemplate |
2467 | 13 | RestartSymlink = restartSymlink | 11 | RestartSymlink = restartSymlink |
2468 | 14 | ReleaseVersion = &releaseVersion | ||
2469 | 15 | PreferFastLXC = preferFastLXC | ||
2470 | 16 | ) | 12 | ) |
2471 | 17 | |||
2472 | 18 | func GetCreateWithCloneValue(mgr container.Manager) bool { | ||
2473 | 19 | return mgr.(*containerManager).createWithClone | ||
2474 | 20 | } | ||
2475 | 21 | 13 | ||
2476 | === modified file 'container/lxc/initialisation_test.go' | |||
2477 | --- container/lxc/initialisation_test.go 2014-05-20 04:27:02 +0000 | |||
2478 | +++ container/lxc/initialisation_test.go 2014-05-22 14:33:28 +0000 | |||
2479 | @@ -6,12 +6,12 @@ | |||
2480 | 6 | import ( | 6 | import ( |
2481 | 7 | gc "launchpad.net/gocheck" | 7 | gc "launchpad.net/gocheck" |
2482 | 8 | 8 | ||
2484 | 9 | "launchpad.net/juju-core/testing" | 9 | "launchpad.net/juju-core/testing/testbase" |
2485 | 10 | "launchpad.net/juju-core/utils" | 10 | "launchpad.net/juju-core/utils" |
2486 | 11 | ) | 11 | ) |
2487 | 12 | 12 | ||
2488 | 13 | type InitialiserSuite struct { | 13 | type InitialiserSuite struct { |
2490 | 14 | testing.BaseSuite | 14 | testbase.LoggingSuite |
2491 | 15 | } | 15 | } |
2492 | 16 | 16 | ||
2493 | 17 | var _ = gc.Suite(&InitialiserSuite{}) | 17 | var _ = gc.Suite(&InitialiserSuite{}) |
2494 | 18 | 18 | ||
2495 | === modified file 'container/lxc/lxc.go' | |||
2496 | --- container/lxc/lxc.go 2014-05-15 10:31:08 +0000 | |||
2497 | +++ container/lxc/lxc.go 2014-05-22 14:33:28 +0000 | |||
2498 | @@ -88,19 +88,10 @@ | |||
2499 | 88 | if logDir == "" { | 88 | if logDir == "" { |
2500 | 89 | logDir = agent.DefaultLogDir | 89 | logDir = agent.DefaultLogDir |
2501 | 90 | } | 90 | } |
2515 | 91 | var useClone bool | 91 | // Explicitly ignore the error result from ParseBool. |
2516 | 92 | useCloneVal := conf.PopValue("use-clone") | 92 | // If it fails to parse, the value is false, and this suits |
2517 | 93 | if useCloneVal != "" { | 93 | // us fine. |
2518 | 94 | // Explicitly ignore the error result from ParseBool. | 94 | useClone, _ := strconv.ParseBool(conf.PopValue("use-clone")) |
2506 | 95 | // If it fails to parse, the value is false, and this suits | ||
2507 | 96 | // us fine. | ||
2508 | 97 | useClone, _ = strconv.ParseBool(useCloneVal) | ||
2509 | 98 | } else { | ||
2510 | 99 | // If no lxc-clone value is explicitly set in config, then | ||
2511 | 100 | // see if the Ubuntu series we are running on supports it | ||
2512 | 101 | // and if it does, we will use clone. | ||
2513 | 102 | useClone = preferFastLXC(releaseVersion()) | ||
2514 | 103 | } | ||
2519 | 104 | useAUFS, _ := strconv.ParseBool(conf.PopValue("use-aufs")) | 95 | useAUFS, _ := strconv.ParseBool(conf.PopValue("use-aufs")) |
2520 | 105 | backingFS, err := containerDirFilesystem() | 96 | backingFS, err := containerDirFilesystem() |
2521 | 106 | if err != nil { | 97 | if err != nil { |
2522 | @@ -121,23 +112,6 @@ | |||
2523 | 121 | }, nil | 112 | }, nil |
2524 | 122 | } | 113 | } |
2525 | 123 | 114 | ||
2526 | 124 | // releaseVersion is a function that returns a string representing the | ||
2527 | 125 | // DISTRIB_RELEASE from the /etc/lsb-release file. | ||
2528 | 126 | var releaseVersion = version.ReleaseVersion | ||
2529 | 127 | |||
2530 | 128 | // preferFastLXC returns true if the host is capable of | ||
2531 | 129 | // LXC cloning from a template. | ||
2532 | 130 | func preferFastLXC(release string) bool { | ||
2533 | 131 | if release == "" { | ||
2534 | 132 | return false | ||
2535 | 133 | } | ||
2536 | 134 | value, err := strconv.ParseFloat(release, 64) | ||
2537 | 135 | if err != nil { | ||
2538 | 136 | return false | ||
2539 | 137 | } | ||
2540 | 138 | return value >= 14.04 | ||
2541 | 139 | } | ||
2542 | 140 | |||
2543 | 141 | func (manager *containerManager) CreateContainer( | 115 | func (manager *containerManager) CreateContainer( |
2544 | 142 | machineConfig *cloudinit.MachineConfig, | 116 | machineConfig *cloudinit.MachineConfig, |
2545 | 143 | series string, | 117 | series string, |
2546 | 144 | 118 | ||
2547 | === modified file 'container/lxc/lxc_test.go' | |||
2548 | --- container/lxc/lxc_test.go 2014-05-20 04:27:02 +0000 | |||
2549 | +++ container/lxc/lxc_test.go 2014-05-22 14:33:28 +0000 | |||
2550 | @@ -26,7 +26,7 @@ | |||
2551 | 26 | containertesting "launchpad.net/juju-core/container/testing" | 26 | containertesting "launchpad.net/juju-core/container/testing" |
2552 | 27 | instancetest "launchpad.net/juju-core/instance/testing" | 27 | instancetest "launchpad.net/juju-core/instance/testing" |
2553 | 28 | "launchpad.net/juju-core/juju/osenv" | 28 | "launchpad.net/juju-core/juju/osenv" |
2555 | 29 | coretesting "launchpad.net/juju-core/testing" | 29 | "launchpad.net/juju-core/testing/testbase" |
2556 | 30 | ) | 30 | ) |
2557 | 31 | 31 | ||
2558 | 32 | func Test(t *stdtesting.T) { | 32 | func Test(t *stdtesting.T) { |
2559 | @@ -58,68 +58,6 @@ | |||
2560 | 58 | s.TestSuite.TearDownTest(c) | 58 | s.TestSuite.TearDownTest(c) |
2561 | 59 | } | 59 | } |
2562 | 60 | 60 | ||
2563 | 61 | func (t *LxcSuite) TestPreferFastLXC(c *gc.C) { | ||
2564 | 62 | for i, test := range []struct { | ||
2565 | 63 | message string | ||
2566 | 64 | releaseVersion string | ||
2567 | 65 | expected bool | ||
2568 | 66 | }{{ | ||
2569 | 67 | message: "missing release file", | ||
2570 | 68 | }, { | ||
2571 | 69 | message: "precise release", | ||
2572 | 70 | releaseVersion: "12.04", | ||
2573 | 71 | }, { | ||
2574 | 72 | message: "trusty release", | ||
2575 | 73 | releaseVersion: "14.04", | ||
2576 | 74 | expected: true, | ||
2577 | 75 | }, { | ||
2578 | 76 | message: "unstable unicorn", | ||
2579 | 77 | releaseVersion: "14.10", | ||
2580 | 78 | expected: true, | ||
2581 | 79 | }, { | ||
2582 | 80 | message: "lucid", | ||
2583 | 81 | releaseVersion: "10.04", | ||
2584 | 82 | }} { | ||
2585 | 83 | c.Logf("%v: %v", i, test.message) | ||
2586 | 84 | value := lxc.PreferFastLXC(test.releaseVersion) | ||
2587 | 85 | c.Assert(value, gc.Equals, test.expected) | ||
2588 | 86 | } | ||
2589 | 87 | } | ||
2590 | 88 | |||
2591 | 89 | func (s *LxcSuite) TestContainerManagerLXCClone(c *gc.C) { | ||
2592 | 90 | type test struct { | ||
2593 | 91 | releaseVersion string | ||
2594 | 92 | useClone string | ||
2595 | 93 | expectClone bool | ||
2596 | 94 | } | ||
2597 | 95 | tests := []test{{ | ||
2598 | 96 | releaseVersion: "12.04", | ||
2599 | 97 | useClone: "true", | ||
2600 | 98 | expectClone: true, | ||
2601 | 99 | }, { | ||
2602 | 100 | releaseVersion: "14.04", | ||
2603 | 101 | expectClone: true, | ||
2604 | 102 | }, { | ||
2605 | 103 | releaseVersion: "12.04", | ||
2606 | 104 | useClone: "false", | ||
2607 | 105 | }, { | ||
2608 | 106 | releaseVersion: "14.04", | ||
2609 | 107 | useClone: "false", | ||
2610 | 108 | }} | ||
2611 | 109 | |||
2612 | 110 | for i, test := range tests { | ||
2613 | 111 | c.Logf("test %d: %v", i, test) | ||
2614 | 112 | s.PatchValue(lxc.ReleaseVersion, func() string { return test.releaseVersion }) | ||
2615 | 113 | |||
2616 | 114 | mgr, err := lxc.NewContainerManager(container.ManagerConfig{ | ||
2617 | 115 | container.ConfigName: "juju", | ||
2618 | 116 | "use-clone": test.useClone, | ||
2619 | 117 | }) | ||
2620 | 118 | c.Assert(err, gc.IsNil) | ||
2621 | 119 | c.Check(lxc.GetCreateWithCloneValue(mgr), gc.Equals, test.expectClone) | ||
2622 | 120 | } | ||
2623 | 121 | } | ||
2624 | 122 | |||
2625 | 123 | func (s *LxcSuite) TestContainerDirFilesystem(c *gc.C) { | 61 | func (s *LxcSuite) TestContainerDirFilesystem(c *gc.C) { |
2626 | 124 | for i, test := range []struct { | 62 | for i, test := range []struct { |
2627 | 125 | message string | 63 | message string |
2628 | @@ -155,9 +93,9 @@ | |||
2629 | 155 | params := container.ManagerConfig{ | 93 | params := container.ManagerConfig{ |
2630 | 156 | container.ConfigName: name, | 94 | container.ConfigName: name, |
2631 | 157 | } | 95 | } |
2635 | 158 | // Need to ensure use-clone is explicitly set to avoid it | 96 | if s.useClone { |
2636 | 159 | // being set based on the OS version. | 97 | params["use-clone"] = "true" |
2637 | 160 | params["use-clone"] = fmt.Sprintf("%v", s.useClone) | 98 | } |
2638 | 161 | if s.useAUFS { | 99 | if s.useAUFS { |
2639 | 162 | params["use-aufs"] = "true" | 100 | params["use-aufs"] = "true" |
2640 | 163 | } | 101 | } |
2641 | @@ -447,7 +385,7 @@ | |||
2642 | 447 | } | 385 | } |
2643 | 448 | 386 | ||
2644 | 449 | type NetworkSuite struct { | 387 | type NetworkSuite struct { |
2646 | 450 | coretesting.BaseSuite | 388 | testbase.LoggingSuite |
2647 | 451 | } | 389 | } |
2648 | 452 | 390 | ||
2649 | 453 | var _ = gc.Suite(&NetworkSuite{}) | 391 | var _ = gc.Suite(&NetworkSuite{}) |
2650 | 454 | 392 | ||
2651 | === modified file 'container/lxc/testing/test.go' | |||
2652 | --- container/lxc/testing/test.go 2014-05-16 01:33:13 +0000 | |||
2653 | +++ container/lxc/testing/test.go 2014-05-22 14:33:28 +0000 | |||
2654 | @@ -9,13 +9,13 @@ | |||
2655 | 9 | "launchpad.net/juju-core/container" | 9 | "launchpad.net/juju-core/container" |
2656 | 10 | "launchpad.net/juju-core/container/lxc" | 10 | "launchpad.net/juju-core/container/lxc" |
2657 | 11 | "launchpad.net/juju-core/container/lxc/mock" | 11 | "launchpad.net/juju-core/container/lxc/mock" |
2659 | 12 | "launchpad.net/juju-core/testing" | 12 | "launchpad.net/juju-core/testing/testbase" |
2660 | 13 | ) | 13 | ) |
2661 | 14 | 14 | ||
2662 | 15 | // TestSuite replaces the lxc factory that the broker uses with a mock | 15 | // TestSuite replaces the lxc factory that the broker uses with a mock |
2663 | 16 | // implementation. | 16 | // implementation. |
2664 | 17 | type TestSuite struct { | 17 | type TestSuite struct { |
2666 | 18 | testing.FakeJujuHomeSuite | 18 | testbase.LoggingSuite |
2667 | 19 | Factory mock.ContainerFactory | 19 | Factory mock.ContainerFactory |
2668 | 20 | ContainerDir string | 20 | ContainerDir string |
2669 | 21 | RemovedDir string | 21 | RemovedDir string |
2670 | @@ -24,7 +24,7 @@ | |||
2671 | 24 | } | 24 | } |
2672 | 25 | 25 | ||
2673 | 26 | func (s *TestSuite) SetUpTest(c *gc.C) { | 26 | func (s *TestSuite) SetUpTest(c *gc.C) { |
2675 | 27 | s.FakeJujuHomeSuite.SetUpTest(c) | 27 | s.LoggingSuite.SetUpTest(c) |
2676 | 28 | s.ContainerDir = c.MkDir() | 28 | s.ContainerDir = c.MkDir() |
2677 | 29 | s.PatchValue(&container.ContainerDir, s.ContainerDir) | 29 | s.PatchValue(&container.ContainerDir, s.ContainerDir) |
2678 | 30 | s.RemovedDir = c.MkDir() | 30 | s.RemovedDir = c.MkDir() |
2679 | 31 | 31 | ||
2680 | === removed file 'doc.go' | |||
2681 | --- doc.go 2014-05-20 01:56:13 +0000 | |||
2682 | +++ doc.go 1970-01-01 00:00:00 +0000 | |||
2683 | @@ -1,10 +0,0 @@ | |||
2684 | 1 | // Copyright 2013 Canonical Ltd. | ||
2685 | 2 | // Licensed under the AGPLv3, see LICENCE file for details. | ||
2686 | 3 | |||
2687 | 4 | // Juju is devops distilled. | ||
2688 | 5 | // | ||
2689 | 6 | // Project homepage: https://launchpad.net/juju-core | ||
2690 | 7 | // | ||
2691 | 8 | // For more information please refer to the README file | ||
2692 | 9 | // in this directory. | ||
2693 | 10 | package juju | ||
2694 | 11 | 0 | ||
2695 | === modified file 'doc/how-to-write-tests.txt' | |||
2696 | --- doc/how-to-write-tests.txt 2014-05-16 01:33:13 +0000 | |||
2697 | +++ doc/how-to-write-tests.txt 2014-05-22 14:33:28 +0000 | |||
2698 | @@ -140,28 +140,23 @@ | |||
2699 | 140 | set-up and tear-down logic. Suites are often composed of other suites | 140 | set-up and tear-down logic. Suites are often composed of other suites |
2700 | 141 | that provide specific set-up and tear-down behaviour. | 141 | that provide specific set-up and tear-down behaviour. |
2701 | 142 | 142 | ||
2703 | 143 | There are four main suites: | 143 | There are three main suites: |
2704 | 144 | 144 | ||
2706 | 145 | * /testing.BaseSuite (testing/base.go) | 145 | * /testing/testbase.LoggingSuite (testing/testbase/log.go) |
2707 | 146 | * /testing.FakeHomeSuite (testing/environ.go) | 146 | * /testing.FakeHomeSuite (testing/environ.go) |
2708 | 147 | * /testing.FakeJujuHomeSuite (testing/environ.go) | ||
2709 | 148 | * /juju/testing.JujuConnSuite (juju/testing/conn.go) | 147 | * /juju/testing.JujuConnSuite (juju/testing/conn.go) |
2710 | 149 | 148 | ||
2726 | 150 | The last three have the BaseSuite functionality included through | 149 | The second two have the LoggingSuite functionality included through |
2727 | 151 | composition. The BaseSuite isolates a user's home directory from accidental | 150 | composition. The LoggingSuite is also composed of the LoggingSuite from |
2728 | 152 | modification (by setting $HOME to "") and errors if there is an attempt to do | 151 | github.com/juju/testing, which brings in the CleanupSuite from the same. |
2729 | 153 | outgoing http access. It also clears the relevant $JUJU_* environment variables. | 152 | The CleanupSuite has the functionality around patching environment |
2730 | 154 | The BaseSuite is also composed of the core LoggingSuite, and also LoggingSuite | 153 | variables and normal variables for the duration of a test. It also |
2731 | 155 | from github.com/juju/testing, which brings in the CleanupSuite from the same. | 154 | provides a clean-up stack that gets called when the test teardown happens. |
2732 | 156 | The CleanupSuite has the functionality around patching environment variables | 155 | |
2733 | 157 | and normal variables for the duration of a test. It also provides a clean-up | 156 | The FakeHomeSuite creates a temporary directory and sets the HOME environment |
2734 | 158 | stack that gets called when the test teardown happens. | 157 | variable to it. It also creates ~/.juju and a simple environments.yaml file, |
2735 | 159 | 158 | ~/.ssh with a fake id_rsa.pub key, it isolates the test from the JUJU_HOME, | |
2736 | 160 | All test suites should embedd BaseSuite. Those that need the extra functionality | 159 | JUJU_ENV, and JUJU_LOGGING_CONFIG environment variables. |
2722 | 161 | can instead embedd one of the fake home suites: | ||
2723 | 162 | |||
2724 | 163 | * FakeHomeSuite: creates a fake home directory with ~/.ssh and fake ssh keys. | ||
2725 | 164 | * FakeJujuHomeSuite: as above but also sets up a ~/.juju with a fake environment. | ||
2737 | 165 | 160 | ||
2738 | 166 | The JujuConnSuite does this and more. It also sets up a state server and api | 161 | The JujuConnSuite does this and more. It also sets up a state server and api |
2739 | 167 | server. This is one problem with the JujuConnSuite, it almost always does a | 162 | server. This is one problem with the JujuConnSuite, it almost always does a |
2740 | @@ -174,7 +169,7 @@ | |||
2741 | 174 | 169 | ||
2742 | 175 | ```go | 170 | ```go |
2743 | 176 | type ToolsSuite struct { | 171 | type ToolsSuite struct { |
2745 | 177 | testing.BaseSuite | 172 | testbase.LoggingSuite |
2746 | 178 | dataDir string | 173 | dataDir string |
2747 | 179 | } | 174 | } |
2748 | 180 | 175 | ||
2749 | @@ -191,21 +186,19 @@ | |||
2750 | 191 | 186 | ||
2751 | 192 | ```go | 187 | ```go |
2752 | 193 | func (t *ToolsSuite) SetUpTest(c *gc.C) { | 188 | func (t *ToolsSuite) SetUpTest(c *gc.C) { |
2754 | 194 | t.BaseSuite.SetUpTest(c) | 189 | t.LoggingSuite.SetUpTest(c) |
2755 | 195 | t.dataDir = c.MkDir() | 190 | t.dataDir = c.MkDir() |
2756 | 196 | } | 191 | } |
2757 | 197 | ``` | 192 | ``` |
2758 | 198 | 193 | ||
2759 | 199 | If the test suite has multiple contained suites, please call them in the | 194 | If the test suite has multiple contained suites, please call them in the |
2760 | 200 | order that they are defined, and make sure something that is composed from | 195 | order that they are defined, and make sure something that is composed from |
2762 | 201 | the BaseSuite is first. They should be torn down in the reverse order. | 196 | the LoggingSuite is first. They should be torn down in the reverse order. |
2763 | 202 | 197 | ||
2768 | 203 | Even if the code that is being tested currently has no logging or outbound | 198 | Even if the code that is being tested currently has no logging in it, it |
2769 | 204 | network access in it, it is a good idea to use the BaseSuite as a base: | 199 | is a good idea to use the LoggingSuite as a base for two reasons: |
2766 | 205 | * it isolates the user's home directory against accidental modification | ||
2767 | 206 | * if someone does add outbound network access later, it will be caught | ||
2770 | 207 | * it brings in something composed of the CleanupSuite | 200 | * it brings in something composed of the CleanupSuite |
2772 | 208 | * if someone does add logging later, it is captured and doesn't pollute | 201 | * if someone does add logging later, it is captured and doesn't polute |
2773 | 209 | the logging output | 202 | the logging output |
2774 | 210 | 203 | ||
2775 | 211 | 204 | ||
2776 | 212 | 205 | ||
2777 | === modified file 'downloader/downloader_test.go' | |||
2778 | --- downloader/downloader_test.go 2014-05-20 04:27:02 +0000 | |||
2779 | +++ downloader/downloader_test.go 2014-05-22 14:33:28 +0000 | |||
2780 | @@ -14,32 +14,33 @@ | |||
2781 | 14 | 14 | ||
2782 | 15 | "launchpad.net/juju-core/downloader" | 15 | "launchpad.net/juju-core/downloader" |
2783 | 16 | "launchpad.net/juju-core/testing" | 16 | "launchpad.net/juju-core/testing" |
2784 | 17 | "launchpad.net/juju-core/testing/testbase" | ||
2785 | 17 | "launchpad.net/juju-core/utils" | 18 | "launchpad.net/juju-core/utils" |
2786 | 18 | ) | 19 | ) |
2787 | 19 | 20 | ||
2788 | 20 | type suite struct { | 21 | type suite struct { |
2790 | 21 | testing.BaseSuite | 22 | testbase.LoggingSuite |
2791 | 22 | testing.HTTPSuite | 23 | testing.HTTPSuite |
2792 | 23 | } | 24 | } |
2793 | 24 | 25 | ||
2794 | 25 | func (s *suite) SetUpSuite(c *gc.C) { | 26 | func (s *suite) SetUpSuite(c *gc.C) { |
2796 | 26 | s.BaseSuite.SetUpSuite(c) | 27 | s.LoggingSuite.SetUpSuite(c) |
2797 | 27 | s.HTTPSuite.SetUpSuite(c) | 28 | s.HTTPSuite.SetUpSuite(c) |
2798 | 28 | } | 29 | } |
2799 | 29 | 30 | ||
2800 | 30 | func (s *suite) TearDownSuite(c *gc.C) { | 31 | func (s *suite) TearDownSuite(c *gc.C) { |
2801 | 31 | s.HTTPSuite.TearDownSuite(c) | 32 | s.HTTPSuite.TearDownSuite(c) |
2803 | 32 | s.BaseSuite.TearDownSuite(c) | 33 | s.LoggingSuite.TearDownSuite(c) |
2804 | 33 | } | 34 | } |
2805 | 34 | 35 | ||
2806 | 35 | func (s *suite) SetUpTest(c *gc.C) { | 36 | func (s *suite) SetUpTest(c *gc.C) { |
2808 | 36 | s.BaseSuite.SetUpTest(c) | 37 | s.LoggingSuite.SetUpTest(c) |
2809 | 37 | s.HTTPSuite.SetUpTest(c) | 38 | s.HTTPSuite.SetUpTest(c) |
2810 | 38 | } | 39 | } |
2811 | 39 | 40 | ||
2812 | 40 | func (s *suite) TearDownTest(c *gc.C) { | 41 | func (s *suite) TearDownTest(c *gc.C) { |
2813 | 41 | s.HTTPSuite.TearDownTest(c) | 42 | s.HTTPSuite.TearDownTest(c) |
2815 | 42 | s.BaseSuite.TearDownTest(c) | 43 | s.LoggingSuite.TearDownTest(c) |
2816 | 43 | } | 44 | } |
2817 | 44 | 45 | ||
2818 | 45 | var _ = gc.Suite(&suite{}) | 46 | var _ = gc.Suite(&suite{}) |
2819 | 46 | 47 | ||
2820 | === modified file 'environs/bootstrap/bootstrap_test.go' | |||
2821 | --- environs/bootstrap/bootstrap_test.go 2014-05-19 04:28:01 +0000 | |||
2822 | +++ environs/bootstrap/bootstrap_test.go 2014-05-22 14:33:28 +0000 | |||
2823 | @@ -24,6 +24,7 @@ | |||
2824 | 24 | "launchpad.net/juju-core/juju/arch" | 24 | "launchpad.net/juju-core/juju/arch" |
2825 | 25 | "launchpad.net/juju-core/provider/dummy" | 25 | "launchpad.net/juju-core/provider/dummy" |
2826 | 26 | coretesting "launchpad.net/juju-core/testing" | 26 | coretesting "launchpad.net/juju-core/testing" |
2827 | 27 | "launchpad.net/juju-core/testing/testbase" | ||
2828 | 27 | "launchpad.net/juju-core/tools" | 28 | "launchpad.net/juju-core/tools" |
2829 | 28 | "launchpad.net/juju-core/version" | 29 | "launchpad.net/juju-core/version" |
2830 | 29 | ) | 30 | ) |
2831 | @@ -38,20 +39,23 @@ | |||
2832 | 38 | ) | 39 | ) |
2833 | 39 | 40 | ||
2834 | 40 | type bootstrapSuite struct { | 41 | type bootstrapSuite struct { |
2836 | 41 | coretesting.BaseSuite | 42 | home *coretesting.FakeHome |
2837 | 43 | testbase.LoggingSuite | ||
2838 | 42 | envtesting.ToolsFixture | 44 | envtesting.ToolsFixture |
2839 | 43 | } | 45 | } |
2840 | 44 | 46 | ||
2841 | 45 | var _ = gc.Suite(&bootstrapSuite{}) | 47 | var _ = gc.Suite(&bootstrapSuite{}) |
2842 | 46 | 48 | ||
2843 | 47 | func (s *bootstrapSuite) SetUpTest(c *gc.C) { | 49 | func (s *bootstrapSuite) SetUpTest(c *gc.C) { |
2845 | 48 | s.BaseSuite.SetUpTest(c) | 50 | s.LoggingSuite.SetUpTest(c) |
2846 | 49 | s.ToolsFixture.SetUpTest(c) | 51 | s.ToolsFixture.SetUpTest(c) |
2847 | 52 | s.home = coretesting.MakeFakeHomeNoEnvironments(c, "foo") | ||
2848 | 50 | } | 53 | } |
2849 | 51 | 54 | ||
2850 | 52 | func (s *bootstrapSuite) TearDownTest(c *gc.C) { | 55 | func (s *bootstrapSuite) TearDownTest(c *gc.C) { |
2851 | 56 | s.home.Restore() | ||
2852 | 53 | s.ToolsFixture.TearDownTest(c) | 57 | s.ToolsFixture.TearDownTest(c) |
2854 | 54 | s.BaseSuite.TearDownTest(c) | 58 | s.LoggingSuite.TearDownTest(c) |
2855 | 55 | } | 59 | } |
2856 | 56 | 60 | ||
2857 | 57 | func (s *bootstrapSuite) TestBootstrapNeedsSettings(c *gc.C) { | 61 | func (s *bootstrapSuite) TestBootstrapNeedsSettings(c *gc.C) { |
2858 | 58 | 62 | ||
2859 | === modified file 'environs/bootstrap/interruptiblestorage_test.go' | |||
2860 | --- environs/bootstrap/interruptiblestorage_test.go 2014-05-20 04:27:02 +0000 | |||
2861 | +++ environs/bootstrap/interruptiblestorage_test.go 2014-05-22 14:33:28 +0000 | |||
2862 | @@ -10,11 +10,11 @@ | |||
2863 | 10 | 10 | ||
2864 | 11 | "launchpad.net/juju-core/environs/bootstrap" | 11 | "launchpad.net/juju-core/environs/bootstrap" |
2865 | 12 | envtesting "launchpad.net/juju-core/environs/testing" | 12 | envtesting "launchpad.net/juju-core/environs/testing" |
2867 | 13 | coretesting "launchpad.net/juju-core/testing" | 13 | "launchpad.net/juju-core/testing/testbase" |
2868 | 14 | ) | 14 | ) |
2869 | 15 | 15 | ||
2870 | 16 | type interruptibleStorageSuite struct { | 16 | type interruptibleStorageSuite struct { |
2872 | 17 | coretesting.BaseSuite | 17 | testbase.LoggingSuite |
2873 | 18 | } | 18 | } |
2874 | 19 | 19 | ||
2875 | 20 | var _ = gc.Suite(&interruptibleStorageSuite{}) | 20 | var _ = gc.Suite(&interruptibleStorageSuite{}) |
2876 | 21 | 21 | ||
2877 | === modified file 'environs/bootstrap/state_test.go' | |||
2878 | --- environs/bootstrap/state_test.go 2014-05-20 04:27:02 +0000 | |||
2879 | +++ environs/bootstrap/state_test.go 2014-05-22 14:33:28 +0000 | |||
2880 | @@ -19,11 +19,11 @@ | |||
2881 | 19 | "launchpad.net/juju-core/environs/storage" | 19 | "launchpad.net/juju-core/environs/storage" |
2882 | 20 | envtesting "launchpad.net/juju-core/environs/testing" | 20 | envtesting "launchpad.net/juju-core/environs/testing" |
2883 | 21 | "launchpad.net/juju-core/instance" | 21 | "launchpad.net/juju-core/instance" |
2885 | 22 | coretesting "launchpad.net/juju-core/testing" | 22 | "launchpad.net/juju-core/testing/testbase" |
2886 | 23 | ) | 23 | ) |
2887 | 24 | 24 | ||
2888 | 25 | type StateSuite struct { | 25 | type StateSuite struct { |
2890 | 26 | coretesting.BaseSuite | 26 | testbase.LoggingSuite |
2891 | 27 | } | 27 | } |
2892 | 28 | 28 | ||
2893 | 29 | var _ = gc.Suite(&StateSuite{}) | 29 | var _ = gc.Suite(&StateSuite{}) |
2894 | 30 | 30 | ||
2895 | === modified file 'environs/cloudinit/cloudinit_test.go' | |||
2896 | --- environs/cloudinit/cloudinit_test.go 2014-05-20 04:27:02 +0000 | |||
2897 | +++ environs/cloudinit/cloudinit_test.go 2014-05-22 14:33:28 +0000 | |||
2898 | @@ -24,6 +24,7 @@ | |||
2899 | 24 | "launchpad.net/juju-core/state/api" | 24 | "launchpad.net/juju-core/state/api" |
2900 | 25 | "launchpad.net/juju-core/state/api/params" | 25 | "launchpad.net/juju-core/state/api/params" |
2901 | 26 | "launchpad.net/juju-core/testing" | 26 | "launchpad.net/juju-core/testing" |
2902 | 27 | "launchpad.net/juju-core/testing/testbase" | ||
2903 | 27 | "launchpad.net/juju-core/tools" | 28 | "launchpad.net/juju-core/tools" |
2904 | 28 | "launchpad.net/juju-core/version" | 29 | "launchpad.net/juju-core/version" |
2905 | 29 | ) | 30 | ) |
2906 | @@ -31,7 +32,7 @@ | |||
2907 | 31 | // Use local suite since this file lives in the ec2 package | 32 | // Use local suite since this file lives in the ec2 package |
2908 | 32 | // for testing internals. | 33 | // for testing internals. |
2909 | 33 | type cloudinitSuite struct { | 34 | type cloudinitSuite struct { |
2911 | 34 | testing.BaseSuite | 35 | testbase.LoggingSuite |
2912 | 35 | } | 36 | } |
2913 | 36 | 37 | ||
2914 | 37 | var _ = gc.Suite(&cloudinitSuite{}) | 38 | var _ = gc.Suite(&cloudinitSuite{}) |
2915 | 38 | 39 | ||
2916 | === modified file 'environs/cloudinit_test.go' | |||
2917 | --- environs/cloudinit_test.go 2014-05-20 04:27:02 +0000 | |||
2918 | +++ environs/cloudinit_test.go 2014-05-22 14:33:28 +0000 | |||
2919 | @@ -23,6 +23,7 @@ | |||
2920 | 23 | "launchpad.net/juju-core/state/api" | 23 | "launchpad.net/juju-core/state/api" |
2921 | 24 | "launchpad.net/juju-core/state/api/params" | 24 | "launchpad.net/juju-core/state/api/params" |
2922 | 25 | "launchpad.net/juju-core/testing" | 25 | "launchpad.net/juju-core/testing" |
2923 | 26 | "launchpad.net/juju-core/testing/testbase" | ||
2924 | 26 | "launchpad.net/juju-core/tools" | 27 | "launchpad.net/juju-core/tools" |
2925 | 27 | "launchpad.net/juju-core/utils" | 28 | "launchpad.net/juju-core/utils" |
2926 | 28 | "launchpad.net/juju-core/version" | 29 | "launchpad.net/juju-core/version" |
2927 | @@ -38,7 +39,7 @@ | |||
2928 | 38 | } | 39 | } |
2929 | 39 | 40 | ||
2930 | 40 | type CloudInitSuite struct { | 41 | type CloudInitSuite struct { |
2932 | 41 | testing.BaseSuite | 42 | testbase.LoggingSuite |
2933 | 42 | } | 43 | } |
2934 | 43 | 44 | ||
2935 | 44 | var _ = gc.Suite(&CloudInitSuite{}) | 45 | var _ = gc.Suite(&CloudInitSuite{}) |
2936 | 45 | 46 | ||
2937 | === modified file 'environs/config.go' | |||
2938 | --- environs/config.go 2014-05-15 10:31:08 +0000 | |||
2939 | +++ environs/config.go 2014-05-22 14:33:28 +0000 | |||
2940 | @@ -98,14 +98,6 @@ | |||
2941 | 98 | ) | 98 | ) |
2942 | 99 | } | 99 | } |
2943 | 100 | 100 | ||
2944 | 101 | // lxc-use-clone has been renamed to lxc-clone | ||
2945 | 102 | if _, ok := attrs["lxc-use-clone"]; ok { | ||
2946 | 103 | logger.Warningf( | ||
2947 | 104 | "Config attribute \"lxc-use-clone\" has been renamed to \"lxc-clone\".\n" + | ||
2948 | 105 | "Please update your environment configuration.", | ||
2949 | 106 | ) | ||
2950 | 107 | } | ||
2951 | 108 | |||
2952 | 109 | cfg, err := config.New(config.UseDefaults, attrs) | 101 | cfg, err := config.New(config.UseDefaults, attrs) |
2953 | 110 | if err != nil { | 102 | if err != nil { |
2954 | 111 | return nil, err | 103 | return nil, err |
2955 | 112 | 104 | ||
2956 | === modified file 'environs/config/authkeys_test.go' | |||
2957 | --- environs/config/authkeys_test.go 2014-05-20 04:27:02 +0000 | |||
2958 | +++ environs/config/authkeys_test.go 2014-05-22 14:33:28 +0000 | |||
2959 | @@ -13,19 +13,19 @@ | |||
2960 | 13 | 13 | ||
2961 | 14 | "launchpad.net/juju-core/environs/config" | 14 | "launchpad.net/juju-core/environs/config" |
2962 | 15 | "launchpad.net/juju-core/juju/osenv" | 15 | "launchpad.net/juju-core/juju/osenv" |
2964 | 16 | "launchpad.net/juju-core/testing" | 16 | "launchpad.net/juju-core/testing/testbase" |
2965 | 17 | "launchpad.net/juju-core/utils/ssh" | 17 | "launchpad.net/juju-core/utils/ssh" |
2966 | 18 | ) | 18 | ) |
2967 | 19 | 19 | ||
2968 | 20 | type AuthKeysSuite struct { | 20 | type AuthKeysSuite struct { |
2970 | 21 | testing.BaseSuite | 21 | testbase.LoggingSuite |
2971 | 22 | dotssh string // ~/.ssh | 22 | dotssh string // ~/.ssh |
2972 | 23 | } | 23 | } |
2973 | 24 | 24 | ||
2974 | 25 | var _ = gc.Suite(&AuthKeysSuite{}) | 25 | var _ = gc.Suite(&AuthKeysSuite{}) |
2975 | 26 | 26 | ||
2976 | 27 | func (s *AuthKeysSuite) SetUpTest(c *gc.C) { | 27 | func (s *AuthKeysSuite) SetUpTest(c *gc.C) { |
2978 | 28 | s.BaseSuite.SetUpTest(c) | 28 | s.LoggingSuite.SetUpTest(c) |
2979 | 29 | old := osenv.Home() | 29 | old := osenv.Home() |
2980 | 30 | newhome := c.MkDir() | 30 | newhome := c.MkDir() |
2981 | 31 | osenv.SetHome(newhome) | 31 | osenv.SetHome(newhome) |
2982 | @@ -37,7 +37,7 @@ | |||
2983 | 37 | 37 | ||
2984 | 38 | func (s *AuthKeysSuite) TearDownTest(c *gc.C) { | 38 | func (s *AuthKeysSuite) TearDownTest(c *gc.C) { |
2985 | 39 | ssh.ClearClientKeys() | 39 | ssh.ClearClientKeys() |
2987 | 40 | s.BaseSuite.TearDownTest(c) | 40 | s.LoggingSuite.TearDownTest(c) |
2988 | 41 | } | 41 | } |
2989 | 42 | 42 | ||
2990 | 43 | func (s *AuthKeysSuite) TestReadAuthorizedKeysErrors(c *gc.C) { | 43 | func (s *AuthKeysSuite) TestReadAuthorizedKeysErrors(c *gc.C) { |
2991 | 44 | 44 | ||
2992 | === modified file 'environs/config/config.go' | |||
2993 | --- environs/config/config.go 2014-05-15 10:31:08 +0000 | |||
2994 | +++ environs/config/config.go 2014-05-22 14:33:28 +0000 | |||
2995 | @@ -258,16 +258,6 @@ | |||
2996 | 258 | // Even if the user has edited their environment yaml to remove the deprecated tools-url value, | 258 | // Even if the user has edited their environment yaml to remove the deprecated tools-url value, |
2997 | 259 | // we still want it in the config for upgrades. | 259 | // we still want it in the config for upgrades. |
2998 | 260 | cfg.defined["tools-url"], _ = cfg.ToolsURL() | 260 | cfg.defined["tools-url"], _ = cfg.ToolsURL() |
2999 | 261 | |||
3000 | 262 | // Copy across lxc-use-clone to lxc-clone. | ||
3001 | 263 | if lxcUseClone, ok := cfg.defined["lxc-use-clone"]; ok { | ||
3002 | 264 | _, newValSpecified := cfg.LXCUseClone() | ||
3003 | 265 | // Ensure the new attribute name "lxc-clone" is set. | ||
3004 | 266 | if !newValSpecified { | ||
3005 | 267 | cfg.defined["lxc-clone"] = lxcUseClone | ||
3006 | 268 | } | ||
3007 | 269 | } | ||
3008 | 270 | |||
3009 | 271 | // Update the provider type from null to manual. | 261 | // Update the provider type from null to manual. |
3010 | 272 | if cfg.Type() == "null" { | 262 | if cfg.Type() == "null" { |
3011 | 273 | cfg.defined["type"] = "manual" | 263 | cfg.defined["type"] = "manual" |
3012 | @@ -710,16 +700,9 @@ | |||
3013 | 710 | 700 | ||
3014 | 711 | // LXCUseClone reports whether the LXC provisioner should create a | 701 | // LXCUseClone reports whether the LXC provisioner should create a |
3015 | 712 | // template and use cloning to speed up container provisioning. | 702 | // template and use cloning to speed up container provisioning. |
3026 | 713 | func (c *Config) LXCUseClone() (bool, bool) { | 703 | func (c *Config) LXCUseClone() bool { |
3027 | 714 | v, ok := c.defined["lxc-clone"].(bool) | 704 | v, _ := c.defined["lxc-use-clone"].(bool) |
3028 | 715 | return v, ok | 705 | return v |
3019 | 716 | } | ||
3020 | 717 | |||
3021 | 718 | // LXCUseCloneAUFS reports whether the LXC provisioner should create a | ||
3022 | 719 | // lxc clone using aufs if available. | ||
3023 | 720 | func (c *Config) LXCUseCloneAUFS() (bool, bool) { | ||
3024 | 721 | v, ok := c.defined["lxc-clone-aufs"].(bool) | ||
3025 | 722 | return v, ok | ||
3029 | 723 | } | 706 | } |
3030 | 724 | 707 | ||
3031 | 725 | // UnknownAttrs returns a copy of the raw configuration attributes | 708 | // UnknownAttrs returns a copy of the raw configuration attributes |
3032 | @@ -798,12 +781,10 @@ | |||
3033 | 798 | "bootstrap-addresses-delay": schema.ForceInt(), | 781 | "bootstrap-addresses-delay": schema.ForceInt(), |
3034 | 799 | "test-mode": schema.Bool(), | 782 | "test-mode": schema.Bool(), |
3035 | 800 | "proxy-ssh": schema.Bool(), | 783 | "proxy-ssh": schema.Bool(), |
3038 | 801 | "lxc-clone": schema.Bool(), | 784 | "lxc-use-clone": schema.Bool(), |
3037 | 802 | "lxc-clone-aufs": schema.Bool(), | ||
3039 | 803 | 785 | ||
3040 | 804 | // Deprecated fields, retain for backwards compatibility. | 786 | // Deprecated fields, retain for backwards compatibility. |
3043 | 805 | "tools-url": schema.String(), | 787 | "tools-url": schema.String(), |
3042 | 806 | "lxc-use-clone": schema.Bool(), | ||
3044 | 807 | } | 788 | } |
3045 | 808 | 789 | ||
3046 | 809 | // alwaysOptional holds configuration defaults for attributes that may | 790 | // alwaysOptional holds configuration defaults for attributes that may |
3047 | @@ -834,11 +815,9 @@ | |||
3048 | 834 | "apt-http-proxy": schema.Omit, | 815 | "apt-http-proxy": schema.Omit, |
3049 | 835 | "apt-https-proxy": schema.Omit, | 816 | "apt-https-proxy": schema.Omit, |
3050 | 836 | "apt-ftp-proxy": schema.Omit, | 817 | "apt-ftp-proxy": schema.Omit, |
3051 | 837 | "lxc-clone": schema.Omit, | ||
3052 | 838 | 818 | ||
3053 | 839 | // Deprecated fields, retain for backwards compatibility. | 819 | // Deprecated fields, retain for backwards compatibility. |
3056 | 840 | "tools-url": "", | 820 | "tools-url": "", |
3055 | 841 | "lxc-use-clone": schema.Omit, | ||
3057 | 842 | 821 | ||
3058 | 843 | // For backward compatibility reasons, the following | 822 | // For backward compatibility reasons, the following |
3059 | 844 | // attributes default to empty strings rather than being | 823 | // attributes default to empty strings rather than being |
3060 | @@ -860,10 +839,10 @@ | |||
3061 | 860 | // Authentication string sent with requests to the charm store | 839 | // Authentication string sent with requests to the charm store |
3062 | 861 | "charm-store-auth": "", | 840 | "charm-store-auth": "", |
3063 | 862 | // Previously image-stream could be set to an empty value | 841 | // Previously image-stream could be set to an empty value |
3068 | 863 | "image-stream": "", | 842 | "image-stream": "", |
3069 | 864 | "test-mode": false, | 843 | "test-mode": false, |
3070 | 865 | "proxy-ssh": false, | 844 | "proxy-ssh": false, |
3071 | 866 | "lxc-clone-aufs": false, | 845 | "lxc-use-clone": false, |
3072 | 867 | } | 846 | } |
3073 | 868 | 847 | ||
3074 | 869 | func allowEmpty(attr string) bool { | 848 | func allowEmpty(attr string) bool { |
3075 | @@ -924,8 +903,7 @@ | |||
3076 | 924 | "bootstrap-timeout", | 903 | "bootstrap-timeout", |
3077 | 925 | "bootstrap-retry-delay", | 904 | "bootstrap-retry-delay", |
3078 | 926 | "bootstrap-addresses-delay", | 905 | "bootstrap-addresses-delay", |
3081 | 927 | "lxc-clone", | 906 | "lxc-use-clone", |
3080 | 928 | "lxc-clone-aufs", | ||
3082 | 929 | } | 907 | } |
3083 | 930 | 908 | ||
3084 | 931 | var ( | 909 | var ( |
3085 | 932 | 910 | ||
3086 | === modified file 'environs/config/config_test.go' | |||
3087 | --- environs/config/config_test.go 2014-05-16 04:57:59 +0000 | |||
3088 | +++ environs/config/config_test.go 2014-05-22 14:33:28 +0000 | |||
3089 | @@ -18,6 +18,7 @@ | |||
3090 | 18 | "launchpad.net/juju-core/juju/osenv" | 18 | "launchpad.net/juju-core/juju/osenv" |
3091 | 19 | "launchpad.net/juju-core/schema" | 19 | "launchpad.net/juju-core/schema" |
3092 | 20 | "launchpad.net/juju-core/testing" | 20 | "launchpad.net/juju-core/testing" |
3093 | 21 | "launchpad.net/juju-core/testing/testbase" | ||
3094 | 21 | "launchpad.net/juju-core/version" | 22 | "launchpad.net/juju-core/version" |
3095 | 22 | ) | 23 | ) |
3096 | 23 | 24 | ||
3097 | @@ -26,14 +27,14 @@ | |||
3098 | 26 | } | 27 | } |
3099 | 27 | 28 | ||
3100 | 28 | type ConfigSuite struct { | 29 | type ConfigSuite struct { |
3102 | 29 | testing.FakeJujuHomeSuite | 30 | testbase.LoggingSuite |
3103 | 30 | home string | 31 | home string |
3104 | 31 | } | 32 | } |
3105 | 32 | 33 | ||
3106 | 33 | var _ = gc.Suite(&ConfigSuite{}) | 34 | var _ = gc.Suite(&ConfigSuite{}) |
3107 | 34 | 35 | ||
3108 | 35 | func (s *ConfigSuite) SetUpTest(c *gc.C) { | 36 | func (s *ConfigSuite) SetUpTest(c *gc.C) { |
3110 | 36 | s.FakeJujuHomeSuite.SetUpTest(c) | 37 | s.LoggingSuite.SetUpTest(c) |
3111 | 37 | // Make sure that the defaults are used, which | 38 | // Make sure that the defaults are used, which |
3112 | 38 | // is <root>=WARNING | 39 | // is <root>=WARNING |
3113 | 39 | loggo.ResetLoggers() | 40 | loggo.ResetLoggers() |
3114 | @@ -60,8 +61,7 @@ | |||
3115 | 60 | type configTest struct { | 61 | type configTest struct { |
3116 | 61 | about string | 62 | about string |
3117 | 62 | useDefaults config.Defaulting | 63 | useDefaults config.Defaulting |
3120 | 63 | attrs testing.Attrs | 64 | attrs map[string]interface{} |
3119 | 64 | expected testing.Attrs | ||
3121 | 65 | err string | 65 | err string |
3122 | 66 | } | 66 | } |
3123 | 67 | 67 | ||
3124 | @@ -140,33 +140,6 @@ | |||
3125 | 140 | "authorized-keys-path": "~/.ssh/authorized_keys2", | 140 | "authorized-keys-path": "~/.ssh/authorized_keys2", |
3126 | 141 | }, | 141 | }, |
3127 | 142 | }, { | 142 | }, { |
3128 | 143 | about: "LXC clone values", | ||
3129 | 144 | useDefaults: config.UseDefaults, | ||
3130 | 145 | attrs: testing.Attrs{ | ||
3131 | 146 | "type": "my-type", | ||
3132 | 147 | "name": "my-name", | ||
3133 | 148 | "default-series": "precise", | ||
3134 | 149 | "lxc-clone": true, | ||
3135 | 150 | "lxc-clone-aufs": true, | ||
3136 | 151 | }, | ||
3137 | 152 | }, { | ||
3138 | 153 | about: "Deprecated lxc-use-clone used", | ||
3139 | 154 | useDefaults: config.UseDefaults, | ||
3140 | 155 | attrs: testing.Attrs{ | ||
3141 | 156 | "type": "my-type", | ||
3142 | 157 | "name": "my-name", | ||
3143 | 158 | "lxc-use-clone": true, | ||
3144 | 159 | }, | ||
3145 | 160 | }, { | ||
3146 | 161 | about: "Deprecated lxc-use-clone ignored", | ||
3147 | 162 | useDefaults: config.UseDefaults, | ||
3148 | 163 | attrs: testing.Attrs{ | ||
3149 | 164 | "type": "my-type", | ||
3150 | 165 | "name": "my-name", | ||
3151 | 166 | "lxc-use-clone": false, | ||
3152 | 167 | "lxc-clone": true, | ||
3153 | 168 | }, | ||
3154 | 169 | }, { | ||
3155 | 170 | about: "CA cert & key from path", | 143 | about: "CA cert & key from path", |
3156 | 171 | useDefaults: config.UseDefaults, | 144 | useDefaults: config.UseDefaults, |
3157 | 172 | attrs: testing.Attrs{ | 145 | attrs: testing.Attrs{ |
3158 | @@ -723,7 +696,7 @@ | |||
3159 | 723 | name, data string | 696 | name, data string |
3160 | 724 | } | 697 | } |
3161 | 725 | 698 | ||
3163 | 726 | func (s *ConfigSuite) TestConfig(c *gc.C) { | 699 | func (*ConfigSuite) TestConfig(c *gc.C) { |
3164 | 727 | files := []testing.TestFile{ | 700 | files := []testing.TestFile{ |
3165 | 728 | {".ssh/id_dsa.pub", "dsa"}, | 701 | {".ssh/id_dsa.pub", "dsa"}, |
3166 | 729 | {".ssh/id_rsa.pub", "rsa\n"}, | 702 | {".ssh/id_rsa.pub", "rsa\n"}, |
3167 | @@ -738,10 +711,11 @@ | |||
3168 | 738 | {"othercert.pem", caCert3}, | 711 | {"othercert.pem", caCert3}, |
3169 | 739 | {"otherkey.pem", caKey3}, | 712 | {"otherkey.pem", caKey3}, |
3170 | 740 | } | 713 | } |
3172 | 741 | s.FakeHomeSuite.Home.AddFiles(c, files...) | 714 | h := testing.MakeFakeHomeWithFiles(c, files) |
3173 | 715 | defer h.Restore() | ||
3174 | 742 | for i, test := range configTests { | 716 | for i, test := range configTests { |
3175 | 743 | c.Logf("test %d. %s", i, test.about) | 717 | c.Logf("test %d. %s", i, test.about) |
3177 | 744 | test.check(c, s.FakeHomeSuite.Home) | 718 | test.check(c, h) |
3178 | 745 | } | 719 | } |
3179 | 746 | } | 720 | } |
3180 | 747 | 721 | ||
3181 | @@ -767,10 +741,12 @@ | |||
3182 | 767 | }, | 741 | }, |
3183 | 768 | } | 742 | } |
3184 | 769 | 743 | ||
3186 | 770 | func (s *ConfigSuite) TestConfigNoCertFiles(c *gc.C) { | 744 | func (*ConfigSuite) TestConfigNoCertFiles(c *gc.C) { |
3187 | 745 | h := testing.MakeEmptyFakeHome(c) | ||
3188 | 746 | defer h.Restore() | ||
3189 | 771 | for i, test := range noCertFilesTests { | 747 | for i, test := range noCertFilesTests { |
3190 | 772 | c.Logf("test %d. %s", i, test.about) | 748 | c.Logf("test %d. %s", i, test.about) |
3192 | 773 | test.check(c, s.FakeHomeSuite.Home) | 749 | test.check(c, h) |
3193 | 774 | } | 750 | } |
3194 | 775 | } | 751 | } |
3195 | 776 | 752 | ||
3196 | @@ -827,16 +803,17 @@ | |||
3197 | 827 | }, */ | 803 | }, */ |
3198 | 828 | } | 804 | } |
3199 | 829 | 805 | ||
3201 | 830 | func (s *ConfigSuite) TestConfigEmptyCertFiles(c *gc.C) { | 806 | func (*ConfigSuite) TestConfigEmptyCertFiles(c *gc.C) { |
3202 | 831 | files := []testing.TestFile{ | 807 | files := []testing.TestFile{ |
3203 | 832 | {".juju/my-name-cert.pem", ""}, | 808 | {".juju/my-name-cert.pem", ""}, |
3204 | 833 | {".juju/my-name-private-key.pem", ""}, | 809 | {".juju/my-name-private-key.pem", ""}, |
3205 | 834 | } | 810 | } |
3207 | 835 | s.FakeHomeSuite.Home.AddFiles(c, files...) | 811 | h := testing.MakeFakeHomeWithFiles(c, files) |
3208 | 812 | defer h.Restore() | ||
3209 | 836 | 813 | ||
3210 | 837 | for i, test := range emptyCertFilesTests { | 814 | for i, test := range emptyCertFilesTests { |
3211 | 838 | c.Logf("test %d. %s", i, test.about) | 815 | c.Logf("test %d. %s", i, test.about) |
3213 | 839 | test.check(c, s.FakeHomeSuite.Home) | 816 | test.check(c, h) |
3214 | 840 | } | 817 | } |
3215 | 841 | } | 818 | } |
3216 | 842 | 819 | ||
3217 | @@ -1004,27 +981,6 @@ | |||
3218 | 1004 | c.Assert(oldURLAttrPresent, jc.IsFalse) | 981 | c.Assert(oldURLAttrPresent, jc.IsFalse) |
3219 | 1005 | c.Assert(oldToolsURL, gc.Equals, "") | 982 | c.Assert(oldToolsURL, gc.Equals, "") |
3220 | 1006 | } | 983 | } |
3221 | 1007 | |||
3222 | 1008 | useLxcClone, useLxcClonePresent := cfg.LXCUseClone() | ||
3223 | 1009 | oldUseClone, oldUseClonePresent := cfg.AllAttrs()["lxc-use-clone"] | ||
3224 | 1010 | if v, ok := test.attrs["lxc-clone"]; ok { | ||
3225 | 1011 | c.Assert(useLxcClone, gc.Equals, v) | ||
3226 | 1012 | c.Assert(useLxcClonePresent, jc.IsTrue) | ||
3227 | 1013 | } else { | ||
3228 | 1014 | if oldUseClonePresent { | ||
3229 | 1015 | c.Assert(useLxcClonePresent, jc.IsTrue) | ||
3230 | 1016 | c.Assert(useLxcClone, gc.Equals, oldUseClone) | ||
3231 | 1017 | } else { | ||
3232 | 1018 | c.Assert(useLxcClonePresent, jc.IsFalse) | ||
3233 | 1019 | c.Assert(useLxcClone, gc.Equals, false) | ||
3234 | 1020 | } | ||
3235 | 1021 | } | ||
3236 | 1022 | useLxcCloneAufs, ok := cfg.LXCUseCloneAUFS() | ||
3237 | 1023 | if v, ok := test.attrs["lxc-clone-aufs"]; ok { | ||
3238 | 1024 | c.Assert(useLxcCloneAufs, gc.Equals, v) | ||
3239 | 1025 | } else { | ||
3240 | 1026 | c.Assert(useLxcCloneAufs, gc.Equals, false) | ||
3241 | 1027 | } | ||
3242 | 1028 | } | 984 | } |
3243 | 1029 | 985 | ||
3244 | 1030 | func (test configTest) assertDuration(c *gc.C, name string, actual time.Duration, defaultInSeconds int) { | 986 | func (test configTest) assertDuration(c *gc.C, name string, actual time.Duration, defaultInSeconds int) { |
3245 | @@ -1072,7 +1028,7 @@ | |||
3246 | 1072 | attrs["tools-url"] = "" | 1028 | attrs["tools-url"] = "" |
3247 | 1073 | attrs["image-stream"] = "" | 1029 | attrs["image-stream"] = "" |
3248 | 1074 | attrs["proxy-ssh"] = false | 1030 | attrs["proxy-ssh"] = false |
3250 | 1075 | attrs["lxc-clone-aufs"] = false | 1031 | attrs["lxc-use-clone"] = false |
3251 | 1076 | 1032 | ||
3252 | 1077 | // Default firewall mode is instance | 1033 | // Default firewall mode is instance |
3253 | 1078 | attrs["firewall-mode"] = string(config.FwInstance) | 1034 | attrs["firewall-mode"] = string(config.FwInstance) |
3254 | @@ -1156,22 +1112,18 @@ | |||
3255 | 1156 | new: testing.Attrs{"bootstrap-timeout": 5}, | 1112 | new: testing.Attrs{"bootstrap-timeout": 5}, |
3256 | 1157 | err: `cannot change bootstrap-timeout from 600 to 5`, | 1113 | err: `cannot change bootstrap-timeout from 600 to 5`, |
3257 | 1158 | }, { | 1114 | }, { |
3267 | 1159 | about: "Cannot change lxc-clone", | 1115 | about: "Cannot change lxc-use-clone", |
3268 | 1160 | old: testing.Attrs{"lxc-clone": false}, | 1116 | old: testing.Attrs{"lxc-use-clone": false}, |
3269 | 1161 | new: testing.Attrs{"lxc-clone": true}, | 1117 | new: testing.Attrs{"lxc-use-clone": true}, |
3270 | 1162 | err: `cannot change lxc-clone from false to true`, | 1118 | err: `cannot change lxc-use-clone from false to true`, |
3262 | 1163 | }, { | ||
3263 | 1164 | about: "Cannot change lxc-clone-aufs", | ||
3264 | 1165 | old: testing.Attrs{"lxc-clone-aufs": false}, | ||
3265 | 1166 | new: testing.Attrs{"lxc-clone-aufs": true}, | ||
3266 | 1167 | err: `cannot change lxc-clone-aufs from false to true`, | ||
3271 | 1168 | }} | 1119 | }} |
3272 | 1169 | 1120 | ||
3274 | 1170 | func (s *ConfigSuite) TestValidateChange(c *gc.C) { | 1121 | func (*ConfigSuite) TestValidateChange(c *gc.C) { |
3275 | 1171 | files := []testing.TestFile{ | 1122 | files := []testing.TestFile{ |
3276 | 1172 | {".ssh/identity.pub", "identity"}, | 1123 | {".ssh/identity.pub", "identity"}, |
3277 | 1173 | } | 1124 | } |
3279 | 1174 | s.FakeHomeSuite.Home.AddFiles(c, files...) | 1125 | h := testing.MakeFakeHomeWithFiles(c, files) |
3280 | 1126 | defer h.Restore() | ||
3281 | 1175 | 1127 | ||
3282 | 1176 | for i, test := range validationTests { | 1128 | for i, test := range validationTests { |
3283 | 1177 | c.Logf("test %d: %s", i, test.about) | 1129 | c.Logf("test %d: %s", i, test.about) |
3284 | @@ -1179,23 +1131,23 @@ | |||
3285 | 1179 | oldConfig := newTestConfig(c, test.old) | 1131 | oldConfig := newTestConfig(c, test.old) |
3286 | 1180 | err := config.Validate(newConfig, oldConfig) | 1132 | err := config.Validate(newConfig, oldConfig) |
3287 | 1181 | if test.err == "" { | 1133 | if test.err == "" { |
3289 | 1182 | c.Check(err, gc.IsNil) | 1134 | c.Assert(err, gc.IsNil) |
3290 | 1183 | } else { | 1135 | } else { |
3292 | 1184 | c.Check(err, gc.ErrorMatches, test.err) | 1136 | c.Assert(err, gc.ErrorMatches, test.err) |
3293 | 1185 | } | 1137 | } |
3294 | 1186 | } | 1138 | } |
3295 | 1187 | } | 1139 | } |
3296 | 1188 | 1140 | ||
3299 | 1189 | func (s *ConfigSuite) addJujuFiles(c *gc.C) { | 1141 | func makeFakeHome(c *gc.C) *testing.FakeHome { |
3300 | 1190 | s.FakeHomeSuite.Home.AddFiles(c, []testing.TestFile{ | 1142 | return testing.MakeFakeHomeWithFiles(c, []testing.TestFile{ |
3301 | 1191 | {".ssh/id_rsa.pub", "rsa\n"}, | 1143 | {".ssh/id_rsa.pub", "rsa\n"}, |
3302 | 1192 | {".juju/myenv-cert.pem", caCert}, | 1144 | {".juju/myenv-cert.pem", caCert}, |
3303 | 1193 | {".juju/myenv-private-key.pem", caKey}, | 1145 | {".juju/myenv-private-key.pem", caKey}, |
3305 | 1194 | }...) | 1146 | }) |
3306 | 1195 | } | 1147 | } |
3307 | 1196 | 1148 | ||
3310 | 1197 | func (s *ConfigSuite) TestValidateUnknownAttrs(c *gc.C) { | 1149 | func (*ConfigSuite) TestValidateUnknownAttrs(c *gc.C) { |
3311 | 1198 | s.addJujuFiles(c) | 1150 | defer makeFakeHome(c).Restore() |
3312 | 1199 | cfg, err := config.New(config.UseDefaults, map[string]interface{}{ | 1151 | cfg, err := config.New(config.UseDefaults, map[string]interface{}{ |
3313 | 1200 | "name": "myenv", | 1152 | "name": "myenv", |
3314 | 1201 | "type": "other", | 1153 | "type": "other", |
3315 | @@ -1247,30 +1199,32 @@ | |||
3316 | 1247 | return result | 1199 | return result |
3317 | 1248 | } | 1200 | } |
3318 | 1249 | 1201 | ||
3321 | 1250 | func (s *ConfigSuite) TestLoggingConfig(c *gc.C) { | 1202 | func (*ConfigSuite) TestLoggingConfig(c *gc.C) { |
3322 | 1251 | s.addJujuFiles(c) | 1203 | defer makeFakeHome(c).Restore() |
3323 | 1204 | |||
3324 | 1252 | config := newTestConfig(c, testing.Attrs{ | 1205 | config := newTestConfig(c, testing.Attrs{ |
3325 | 1253 | "logging-config": "<root>=WARNING;juju=DEBUG"}) | 1206 | "logging-config": "<root>=WARNING;juju=DEBUG"}) |
3326 | 1254 | c.Assert(config.LoggingConfig(), gc.Equals, "<root>=WARNING;juju=DEBUG;unit=DEBUG") | 1207 | c.Assert(config.LoggingConfig(), gc.Equals, "<root>=WARNING;juju=DEBUG;unit=DEBUG") |
3327 | 1255 | } | 1208 | } |
3328 | 1256 | 1209 | ||
3331 | 1257 | func (s *ConfigSuite) TestLoggingConfigWithUnit(c *gc.C) { | 1210 | func (*ConfigSuite) TestLoggingConfigWithUnit(c *gc.C) { |
3332 | 1258 | s.addJujuFiles(c) | 1211 | defer makeFakeHome(c).Restore() |
3333 | 1212 | |||
3334 | 1259 | config := newTestConfig(c, testing.Attrs{ | 1213 | config := newTestConfig(c, testing.Attrs{ |
3335 | 1260 | "logging-config": "<root>=WARNING;unit=INFO"}) | 1214 | "logging-config": "<root>=WARNING;unit=INFO"}) |
3336 | 1261 | c.Assert(config.LoggingConfig(), gc.Equals, "<root>=WARNING;unit=INFO") | 1215 | c.Assert(config.LoggingConfig(), gc.Equals, "<root>=WARNING;unit=INFO") |
3337 | 1262 | } | 1216 | } |
3338 | 1263 | 1217 | ||
3339 | 1264 | func (s *ConfigSuite) TestLoggingConfigFromEnvironment(c *gc.C) { | 1218 | func (s *ConfigSuite) TestLoggingConfigFromEnvironment(c *gc.C) { |
3341 | 1265 | s.addJujuFiles(c) | 1219 | defer makeFakeHome(c).Restore() |
3342 | 1266 | s.PatchEnvironment(osenv.JujuLoggingConfigEnvKey, "<root>=INFO") | 1220 | s.PatchEnvironment(osenv.JujuLoggingConfigEnvKey, "<root>=INFO") |
3343 | 1267 | 1221 | ||
3344 | 1268 | config := newTestConfig(c, nil) | 1222 | config := newTestConfig(c, nil) |
3345 | 1269 | c.Assert(config.LoggingConfig(), gc.Equals, "<root>=INFO;unit=DEBUG") | 1223 | c.Assert(config.LoggingConfig(), gc.Equals, "<root>=INFO;unit=DEBUG") |
3346 | 1270 | } | 1224 | } |
3347 | 1271 | 1225 | ||
3350 | 1272 | func (s *ConfigSuite) TestProxyValuesWithFallback(c *gc.C) { | 1226 | func (*ConfigSuite) TestProxyValuesWithFallback(c *gc.C) { |
3351 | 1273 | s.addJujuFiles(c) | 1227 | defer makeFakeHome(c).Restore() |
3352 | 1274 | 1228 | ||
3353 | 1275 | config := newTestConfig(c, testing.Attrs{ | 1229 | config := newTestConfig(c, testing.Attrs{ |
3354 | 1276 | "http-proxy": "http://user@10.0.0.1", | 1230 | "http-proxy": "http://user@10.0.0.1", |
3355 | @@ -1287,8 +1241,9 @@ | |||
3356 | 1287 | c.Assert(config.NoProxy(), gc.Equals, "localhost,10.0.3.1") | 1241 | c.Assert(config.NoProxy(), gc.Equals, "localhost,10.0.3.1") |
3357 | 1288 | } | 1242 | } |
3358 | 1289 | 1243 | ||
3361 | 1290 | func (s *ConfigSuite) TestProxyValues(c *gc.C) { | 1244 | func (*ConfigSuite) TestProxyValues(c *gc.C) { |
3362 | 1291 | s.addJujuFiles(c) | 1245 | defer makeFakeHome(c).Restore() |
3363 | 1246 | |||
3364 | 1292 | config := newTestConfig(c, testing.Attrs{ | 1247 | config := newTestConfig(c, testing.Attrs{ |
3365 | 1293 | "http-proxy": "http://user@10.0.0.1", | 1248 | "http-proxy": "http://user@10.0.0.1", |
3366 | 1294 | "https-proxy": "https://user@10.0.0.1", | 1249 | "https-proxy": "https://user@10.0.0.1", |
3367 | @@ -1305,8 +1260,9 @@ | |||
3368 | 1305 | c.Assert(config.AptFtpProxy(), gc.Equals, "ftp://user@10.0.0.2") | 1260 | c.Assert(config.AptFtpProxy(), gc.Equals, "ftp://user@10.0.0.2") |
3369 | 1306 | } | 1261 | } |
3370 | 1307 | 1262 | ||
3373 | 1308 | func (s *ConfigSuite) TestProxyValuesNotSet(c *gc.C) { | 1263 | func (*ConfigSuite) TestProxyValuesNotSet(c *gc.C) { |
3374 | 1309 | s.addJujuFiles(c) | 1264 | defer makeFakeHome(c).Restore() |
3375 | 1265 | |||
3376 | 1310 | config := newTestConfig(c, testing.Attrs{}) | 1266 | config := newTestConfig(c, testing.Attrs{}) |
3377 | 1311 | c.Assert(config.HttpProxy(), gc.Equals, "") | 1267 | c.Assert(config.HttpProxy(), gc.Equals, "") |
3378 | 1312 | c.Assert(config.AptHttpProxy(), gc.Equals, "") | 1268 | c.Assert(config.AptHttpProxy(), gc.Equals, "") |
3379 | @@ -1317,8 +1273,9 @@ | |||
3380 | 1317 | c.Assert(config.NoProxy(), gc.Equals, "") | 1273 | c.Assert(config.NoProxy(), gc.Equals, "") |
3381 | 1318 | } | 1274 | } |
3382 | 1319 | 1275 | ||
3385 | 1320 | func (s *ConfigSuite) TestProxyConfigMap(c *gc.C) { | 1276 | func (*ConfigSuite) TestProxyConfigMap(c *gc.C) { |
3386 | 1321 | s.addJujuFiles(c) | 1277 | defer makeFakeHome(c).Restore() |
3387 | 1278 | |||
3388 | 1322 | cfg := newTestConfig(c, testing.Attrs{}) | 1279 | cfg := newTestConfig(c, testing.Attrs{}) |
3389 | 1323 | proxy := osenv.ProxySettings{ | 1280 | proxy := osenv.ProxySettings{ |
3390 | 1324 | Http: "http proxy", | 1281 | Http: "http proxy", |
3391 | @@ -1334,8 +1291,9 @@ | |||
3392 | 1334 | c.Assert(cfg.AptProxySettings(), gc.DeepEquals, proxy) | 1291 | c.Assert(cfg.AptProxySettings(), gc.DeepEquals, proxy) |
3393 | 1335 | } | 1292 | } |
3394 | 1336 | 1293 | ||
3397 | 1337 | func (s *ConfigSuite) TestAptProxyConfigMap(c *gc.C) { | 1294 | func (*ConfigSuite) TestAptProxyConfigMap(c *gc.C) { |
3398 | 1338 | s.addJujuFiles(c) | 1295 | defer makeFakeHome(c).Restore() |
3399 | 1296 | |||
3400 | 1339 | cfg := newTestConfig(c, testing.Attrs{}) | 1297 | cfg := newTestConfig(c, testing.Attrs{}) |
3401 | 1340 | proxy := osenv.ProxySettings{ | 1298 | proxy := osenv.ProxySettings{ |
3402 | 1341 | Http: "http proxy", | 1299 | Http: "http proxy", |
3403 | @@ -1349,9 +1307,12 @@ | |||
3404 | 1349 | c.Assert(cfg.AptProxySettings(), gc.DeepEquals, proxy) | 1307 | c.Assert(cfg.AptProxySettings(), gc.DeepEquals, proxy) |
3405 | 1350 | } | 1308 | } |
3406 | 1351 | 1309 | ||
3410 | 1352 | func (s *ConfigSuite) TestGenerateStateServerCertAndKey(c *gc.C) { | 1310 | func (*ConfigSuite) TestGenerateStateServerCertAndKey(c *gc.C) { |
3411 | 1353 | // Add a cert. | 1311 | // In order to test missing certs, it checks the JUJU_HOME dir, so we need |
3412 | 1354 | s.FakeHomeSuite.Home.AddFiles(c, testing.TestFile{".ssh/id_rsa.pub", "rsa\n"}) | 1312 | // a fake home. |
3413 | 1313 | defer testing.MakeFakeHomeWithFiles(c, []testing.TestFile{ | ||
3414 | 1314 | {".ssh/id_rsa.pub", "rsa\n"}, | ||
3415 | 1315 | }).Restore() | ||
3416 | 1355 | 1316 | ||
3417 | 1356 | for _, test := range []struct { | 1317 | for _, test := range []struct { |
3418 | 1357 | configValues map[string]interface{} | 1318 | configValues map[string]interface{} |
3419 | 1358 | 1319 | ||
3420 | === modified file 'environs/config_test.go' | |||
3421 | --- environs/config_test.go 2014-05-16 04:57:59 +0000 | |||
3422 | +++ environs/config_test.go 2014-05-22 14:33:28 +0000 | |||
3423 | @@ -19,17 +19,18 @@ | |||
3424 | 19 | "launchpad.net/juju-core/provider/dummy" | 19 | "launchpad.net/juju-core/provider/dummy" |
3425 | 20 | _ "launchpad.net/juju-core/provider/manual" | 20 | _ "launchpad.net/juju-core/provider/manual" |
3426 | 21 | "launchpad.net/juju-core/testing" | 21 | "launchpad.net/juju-core/testing" |
3427 | 22 | "launchpad.net/juju-core/testing/testbase" | ||
3428 | 22 | ) | 23 | ) |
3429 | 23 | 24 | ||
3430 | 24 | type suite struct { | 25 | type suite struct { |
3432 | 25 | testing.FakeJujuHomeSuite | 26 | testbase.LoggingSuite |
3433 | 26 | } | 27 | } |
3434 | 27 | 28 | ||
3435 | 28 | var _ = gc.Suite(&suite{}) | 29 | var _ = gc.Suite(&suite{}) |
3436 | 29 | 30 | ||
3437 | 30 | func (s *suite) TearDownTest(c *gc.C) { | 31 | func (s *suite) TearDownTest(c *gc.C) { |
3438 | 31 | dummy.Reset() | 32 | dummy.Reset() |
3440 | 32 | s.FakeJujuHomeSuite.TearDownTest(c) | 33 | s.LoggingSuite.TearDownTest(c) |
3441 | 33 | } | 34 | } |
3442 | 34 | 35 | ||
3443 | 35 | var invalidConfigTests = []struct { | 36 | var invalidConfigTests = []struct { |
3444 | @@ -79,6 +80,7 @@ | |||
3445 | 79 | } | 80 | } |
3446 | 80 | 81 | ||
3447 | 81 | func (*suite) TestInvalidEnv(c *gc.C) { | 82 | func (*suite) TestInvalidEnv(c *gc.C) { |
3448 | 83 | defer testing.MakeFakeHomeNoEnvironments(c, "only").Restore() | ||
3449 | 82 | for i, t := range invalidEnvTests { | 84 | for i, t := range invalidEnvTests { |
3450 | 83 | c.Logf("running test %v", i) | 85 | c.Logf("running test %v", i) |
3451 | 84 | es, err := environs.ReadEnvironsBytes([]byte(t.env)) | 86 | es, err := environs.ReadEnvironsBytes([]byte(t.env)) |
3452 | @@ -95,6 +97,7 @@ | |||
3453 | 95 | // However, we can only really trigger that when we have a deprecated | 97 | // However, we can only really trigger that when we have a deprecated |
3454 | 96 | // field. If support for the field is removed entirely, another | 98 | // field. If support for the field is removed entirely, another |
3455 | 97 | // mechanism will need to be used | 99 | // mechanism will need to be used |
3456 | 100 | defer testing.MakeFakeHomeNoEnvironments(c, "only").Restore() | ||
3457 | 98 | content := ` | 101 | content := ` |
3458 | 99 | environments: | 102 | environments: |
3459 | 100 | valid: | 103 | valid: |
3460 | @@ -104,7 +107,6 @@ | |||
3461 | 104 | type: dummy | 107 | type: dummy |
3462 | 105 | state-server: false | 108 | state-server: false |
3463 | 106 | tools-url: aknowndeprecatedfield | 109 | tools-url: aknowndeprecatedfield |
3464 | 107 | lxc-use-clone: true | ||
3465 | 108 | ` | 110 | ` |
3466 | 109 | tw := &loggo.TestWriter{} | 111 | tw := &loggo.TestWriter{} |
3467 | 110 | // we only capture Warning or above | 112 | // we only capture Warning or above |
3468 | @@ -126,12 +128,12 @@ | |||
3469 | 126 | // Only once we grab the deprecated one do we see any warnings | 128 | // Only once we grab the deprecated one do we see any warnings |
3470 | 127 | _, err = envs.Config("deprecated") | 129 | _, err = envs.Config("deprecated") |
3471 | 128 | c.Check(err, gc.IsNil) | 130 | c.Check(err, gc.IsNil) |
3473 | 129 | c.Check(tw.Log, gc.HasLen, 2) | 131 | c.Check(tw.Log, gc.HasLen, 1) |
3474 | 130 | } | 132 | } |
3475 | 131 | 133 | ||
3476 | 132 | func (*suite) TestNoHomeBeforeConfig(c *gc.C) { | 134 | func (*suite) TestNoHomeBeforeConfig(c *gc.C) { |
3477 | 133 | // Test that we don't actually need HOME set until we call envs.Config() | 135 | // Test that we don't actually need HOME set until we call envs.Config() |
3479 | 134 | os.Setenv("HOME", "") | 136 | // Because of this, we intentionally do *not* call testing.MakeFakeHomeNoEnvironments() |
3480 | 135 | content := ` | 137 | content := ` |
3481 | 136 | environments: | 138 | environments: |
3482 | 137 | valid: | 139 | valid: |
3483 | @@ -144,9 +146,7 @@ | |||
3484 | 144 | } | 146 | } |
3485 | 145 | 147 | ||
3486 | 146 | func (*suite) TestNoEnv(c *gc.C) { | 148 | func (*suite) TestNoEnv(c *gc.C) { |
3490 | 147 | envPath := testing.HomePath(".juju", "environments.yaml") | 149 | defer testing.MakeFakeHomeNoEnvironments(c).Restore() |
3488 | 148 | err := os.Remove(envPath) | ||
3489 | 149 | c.Assert(err, gc.IsNil) | ||
3491 | 150 | es, err := environs.ReadEnvirons("") | 150 | es, err := environs.ReadEnvirons("") |
3492 | 151 | c.Assert(es, gc.IsNil) | 151 | c.Assert(es, gc.IsNil) |
3493 | 152 | c.Assert(err, jc.Satisfies, environs.IsNoEnv) | 152 | c.Assert(err, jc.Satisfies, environs.IsNoEnv) |
3494 | @@ -197,6 +197,7 @@ | |||
3495 | 197 | } | 197 | } |
3496 | 198 | 198 | ||
3497 | 199 | func (*suite) TestConfig(c *gc.C) { | 199 | func (*suite) TestConfig(c *gc.C) { |
3498 | 200 | defer testing.MakeFakeHomeNoEnvironments(c, "only", "valid", "one", "two").Restore() | ||
3499 | 200 | for i, t := range configTests { | 201 | for i, t := range configTests { |
3500 | 201 | c.Logf("running test %v", i) | 202 | c.Logf("running test %v", i) |
3501 | 202 | envs, err := environs.ReadEnvironsBytes([]byte(t.env)) | 203 | envs, err := environs.ReadEnvironsBytes([]byte(t.env)) |
3502 | @@ -206,6 +207,8 @@ | |||
3503 | 206 | } | 207 | } |
3504 | 207 | 208 | ||
3505 | 208 | func (*suite) TestDefaultConfigFile(c *gc.C) { | 209 | func (*suite) TestDefaultConfigFile(c *gc.C) { |
3506 | 210 | defer testing.MakeEmptyFakeHome(c).Restore() | ||
3507 | 211 | |||
3508 | 209 | env := ` | 212 | env := ` |
3509 | 210 | environments: | 213 | environments: |
3510 | 211 | only: | 214 | only: |
3511 | @@ -225,8 +228,8 @@ | |||
3512 | 225 | c.Assert(cfg.Name(), gc.Equals, "only") | 228 | c.Assert(cfg.Name(), gc.Equals, "only") |
3513 | 226 | } | 229 | } |
3514 | 227 | 230 | ||
3517 | 228 | func (s *suite) TestConfigPerm(c *gc.C) { | 231 | func (*suite) TestConfigPerm(c *gc.C) { |
3518 | 229 | testing.MakeSampleJujuHome(c) | 232 | defer testing.MakeSampleHome(c).Restore() |
3519 | 230 | 233 | ||
3520 | 231 | path := testing.HomePath(".juju") | 234 | path := testing.HomePath(".juju") |
3521 | 232 | info, err := os.Lstat(path) | 235 | info, err := os.Lstat(path) |
3522 | @@ -253,6 +256,7 @@ | |||
3523 | 253 | } | 256 | } |
3524 | 254 | 257 | ||
3525 | 255 | func (*suite) TestNamedConfigFile(c *gc.C) { | 258 | func (*suite) TestNamedConfigFile(c *gc.C) { |
3526 | 259 | defer testing.MakeFakeHomeNoEnvironments(c, "only").Restore() | ||
3527 | 256 | 260 | ||
3528 | 257 | env := ` | 261 | env := ` |
3529 | 258 | environments: | 262 | environments: |
3530 | @@ -279,6 +283,7 @@ | |||
3531 | 279 | } | 283 | } |
3532 | 280 | 284 | ||
3533 | 281 | func (*suite) TestBootstrapConfig(c *gc.C) { | 285 | func (*suite) TestBootstrapConfig(c *gc.C) { |
3534 | 286 | defer testing.MakeFakeHomeNoEnvironments(c, "bladaam").Restore() | ||
3535 | 282 | attrs := dummySampleConfig().Merge(testing.Attrs{ | 287 | attrs := dummySampleConfig().Merge(testing.Attrs{ |
3536 | 283 | "agent-version": "1.2.3", | 288 | "agent-version": "1.2.3", |
3537 | 284 | }) | 289 | }) |
3538 | @@ -405,6 +410,7 @@ | |||
3539 | 405 | } | 410 | } |
3540 | 406 | 411 | ||
3541 | 407 | func (s *ConfigDeprecationSuite) checkDeprecationWarning(c *gc.C, attrs testing.Attrs, expectedMsg string) { | 412 | func (s *ConfigDeprecationSuite) checkDeprecationWarning(c *gc.C, attrs testing.Attrs, expectedMsg string) { |
3542 | 413 | defer testing.MakeFakeHomeNoEnvironments(c, "only").Restore() | ||
3543 | 408 | content := ` | 414 | content := ` |
3544 | 409 | environments: | 415 | environments: |
3545 | 410 | deprecated: | 416 | deprecated: |
3546 | @@ -449,9 +455,3 @@ | |||
3547 | 449 | expected := `Provider type \"null\" has been renamed to \"manual\"\.Please update your environment configuration\.` | 455 | expected := `Provider type \"null\" has been renamed to \"manual\"\.Please update your environment configuration\.` |
3548 | 450 | s.checkDeprecationWarning(c, attrs, expected) | 456 | s.checkDeprecationWarning(c, attrs, expected) |
3549 | 451 | } | 457 | } |
3550 | 452 | |||
3551 | 453 | func (s *ConfigDeprecationSuite) TestDeprecatedLxcUseCloneWarning(c *gc.C) { | ||
3552 | 454 | attrs := testing.Attrs{"lxc-use-clone": true} | ||
3553 | 455 | expected := `Config attribute \"lxc-use-clone\" has been renamed to \"lxc-clone\".Please update your environment configuration\.` | ||
3554 | 456 | s.checkDeprecationWarning(c, attrs, expected) | ||
3555 | 457 | } | ||
3556 | 458 | 458 | ||
3557 | === modified file 'environs/configstore/disk_test.go' | |||
3558 | --- environs/configstore/disk_test.go 2014-05-20 04:27:02 +0000 | |||
3559 | +++ environs/configstore/disk_test.go 2014-05-22 14:33:28 +0000 | |||
3560 | @@ -17,7 +17,7 @@ | |||
3561 | 17 | gc "launchpad.net/gocheck" | 17 | gc "launchpad.net/gocheck" |
3562 | 18 | 18 | ||
3563 | 19 | "launchpad.net/juju-core/environs/configstore" | 19 | "launchpad.net/juju-core/environs/configstore" |
3565 | 20 | "launchpad.net/juju-core/testing" | 20 | "launchpad.net/juju-core/testing/testbase" |
3566 | 21 | ) | 21 | ) |
3567 | 22 | 22 | ||
3568 | 23 | var _ = gc.Suite(&diskInterfaceSuite{}) | 23 | var _ = gc.Suite(&diskInterfaceSuite{}) |
3569 | @@ -63,7 +63,7 @@ | |||
3570 | 63 | var _ = gc.Suite(&diskStoreSuite{}) | 63 | var _ = gc.Suite(&diskStoreSuite{}) |
3571 | 64 | 64 | ||
3572 | 65 | type diskStoreSuite struct { | 65 | type diskStoreSuite struct { |
3574 | 66 | testing.BaseSuite | 66 | testbase.LoggingSuite |
3575 | 67 | } | 67 | } |
3576 | 68 | 68 | ||
3577 | 69 | func (*diskStoreSuite) TestNewDisk(c *gc.C) { | 69 | func (*diskStoreSuite) TestNewDisk(c *gc.C) { |
3578 | 70 | 70 | ||
3579 | === modified file 'environs/configstore/interface_test.go' | |||
3580 | --- environs/configstore/interface_test.go 2014-05-20 04:27:02 +0000 | |||
3581 | +++ environs/configstore/interface_test.go 2014-05-22 14:33:28 +0000 | |||
3582 | @@ -8,7 +8,7 @@ | |||
3583 | 8 | gc "launchpad.net/gocheck" | 8 | gc "launchpad.net/gocheck" |
3584 | 9 | 9 | ||
3585 | 10 | "launchpad.net/juju-core/environs/configstore" | 10 | "launchpad.net/juju-core/environs/configstore" |
3587 | 11 | "launchpad.net/juju-core/testing" | 11 | "launchpad.net/juju-core/testing/testbase" |
3588 | 12 | ) | 12 | ) |
3589 | 13 | 13 | ||
3590 | 14 | // interfaceSuite defines a set of tests on a ConfigStorage | 14 | // interfaceSuite defines a set of tests on a ConfigStorage |
3591 | @@ -16,7 +16,7 @@ | |||
3592 | 16 | // The NewStore field must be set up to return a ConfigStorage | 16 | // The NewStore field must be set up to return a ConfigStorage |
3593 | 17 | // instance of the type to be tested. | 17 | // instance of the type to be tested. |
3594 | 18 | type interfaceSuite struct { | 18 | type interfaceSuite struct { |
3596 | 19 | testing.BaseSuite | 19 | testbase.LoggingSuite |
3597 | 20 | NewStore func(c *gc.C) configstore.Storage | 20 | NewStore func(c *gc.C) configstore.Storage |
3598 | 21 | } | 21 | } |
3599 | 22 | 22 | ||
3600 | 23 | 23 | ||
3601 | === modified file 'environs/emptystorage_test.go' | |||
3602 | --- environs/emptystorage_test.go 2014-05-16 01:33:13 +0000 | |||
3603 | +++ environs/emptystorage_test.go 2014-05-22 14:33:28 +0000 | |||
3604 | @@ -14,10 +14,11 @@ | |||
3605 | 14 | "launchpad.net/juju-core/environs/storage" | 14 | "launchpad.net/juju-core/environs/storage" |
3606 | 15 | "launchpad.net/juju-core/provider/dummy" | 15 | "launchpad.net/juju-core/provider/dummy" |
3607 | 16 | "launchpad.net/juju-core/testing" | 16 | "launchpad.net/juju-core/testing" |
3608 | 17 | "launchpad.net/juju-core/testing/testbase" | ||
3609 | 17 | ) | 18 | ) |
3610 | 18 | 19 | ||
3611 | 19 | type EmptyStorageSuite struct { | 20 | type EmptyStorageSuite struct { |
3613 | 20 | testing.FakeJujuHomeSuite | 21 | testbase.LoggingSuite |
3614 | 21 | } | 22 | } |
3615 | 22 | 23 | ||
3616 | 23 | var _ = gc.Suite(&EmptyStorageSuite{}) | 24 | var _ = gc.Suite(&EmptyStorageSuite{}) |
3617 | @@ -41,7 +42,7 @@ | |||
3618 | 41 | } | 42 | } |
3619 | 42 | 43 | ||
3620 | 43 | type verifyStorageSuite struct { | 44 | type verifyStorageSuite struct { |
3622 | 44 | testing.FakeJujuHomeSuite | 45 | testbase.LoggingSuite |
3623 | 45 | } | 46 | } |
3624 | 46 | 47 | ||
3625 | 47 | var _ = gc.Suite(&verifyStorageSuite{}) | 48 | var _ = gc.Suite(&verifyStorageSuite{}) |
3626 | @@ -54,17 +55,14 @@ | |||
3627 | 54 | authorized-keys: i-am-a-key | 55 | authorized-keys: i-am-a-key |
3628 | 55 | ` | 56 | ` |
3629 | 56 | 57 | ||
3630 | 57 | func (s *verifyStorageSuite) SetUpTest(c *gc.C) { | ||
3631 | 58 | s.FakeJujuHomeSuite.SetUpTest(c) | ||
3632 | 59 | testing.WriteEnvironments(c, existingEnv) | ||
3633 | 60 | } | ||
3634 | 61 | |||
3635 | 62 | func (s *verifyStorageSuite) TearDownTest(c *gc.C) { | 58 | func (s *verifyStorageSuite) TearDownTest(c *gc.C) { |
3636 | 63 | dummy.Reset() | 59 | dummy.Reset() |
3638 | 64 | s.FakeJujuHomeSuite.TearDownTest(c) | 60 | s.LoggingSuite.TearDownTest(c) |
3639 | 65 | } | 61 | } |
3640 | 66 | 62 | ||
3641 | 67 | func (s *verifyStorageSuite) TestVerifyStorage(c *gc.C) { | 63 | func (s *verifyStorageSuite) TestVerifyStorage(c *gc.C) { |
3642 | 64 | defer testing.MakeFakeHome(c, existingEnv, "existing").Restore() | ||
3643 | 65 | |||
3644 | 68 | ctx := testing.Context(c) | 66 | ctx := testing.Context(c) |
3645 | 69 | environ, err := environs.PrepareFromName("test", ctx, configstore.NewMem()) | 67 | environ, err := environs.PrepareFromName("test", ctx, configstore.NewMem()) |
3646 | 70 | c.Assert(err, gc.IsNil) | 68 | c.Assert(err, gc.IsNil) |
3647 | @@ -81,6 +79,8 @@ | |||
3648 | 81 | } | 79 | } |
3649 | 82 | 80 | ||
3650 | 83 | func (s *verifyStorageSuite) TestVerifyStorageFails(c *gc.C) { | 81 | func (s *verifyStorageSuite) TestVerifyStorageFails(c *gc.C) { |
3651 | 82 | defer testing.MakeFakeHome(c, existingEnv, "existing").Restore() | ||
3652 | 83 | |||
3653 | 84 | ctx := testing.Context(c) | 84 | ctx := testing.Context(c) |
3654 | 85 | environ, err := environs.PrepareFromName("test", ctx, configstore.NewMem()) | 85 | environ, err := environs.PrepareFromName("test", ctx, configstore.NewMem()) |
3655 | 86 | c.Assert(err, gc.IsNil) | 86 | c.Assert(err, gc.IsNil) |
3656 | 87 | 87 | ||
3657 | === modified file 'environs/httpstorage/backend_test.go' | |||
3658 | --- environs/httpstorage/backend_test.go 2014-05-20 04:27:02 +0000 | |||
3659 | +++ environs/httpstorage/backend_test.go 2014-05-22 14:33:28 +0000 | |||
3660 | @@ -22,6 +22,7 @@ | |||
3661 | 22 | "launchpad.net/juju-core/environs/filestorage" | 22 | "launchpad.net/juju-core/environs/filestorage" |
3662 | 23 | "launchpad.net/juju-core/environs/httpstorage" | 23 | "launchpad.net/juju-core/environs/httpstorage" |
3663 | 24 | coretesting "launchpad.net/juju-core/testing" | 24 | coretesting "launchpad.net/juju-core/testing" |
3664 | 25 | "launchpad.net/juju-core/testing/testbase" | ||
3665 | 25 | "launchpad.net/juju-core/utils" | 26 | "launchpad.net/juju-core/utils" |
3666 | 26 | ) | 27 | ) |
3667 | 27 | 28 | ||
3668 | @@ -32,7 +33,7 @@ | |||
3669 | 32 | } | 33 | } |
3670 | 33 | 34 | ||
3671 | 34 | type backendSuite struct { | 35 | type backendSuite struct { |
3673 | 35 | coretesting.BaseSuite | 36 | testbase.LoggingSuite |
3674 | 36 | } | 37 | } |
3675 | 37 | 38 | ||
3676 | 38 | var _ = gc.Suite(&backendSuite{}) | 39 | var _ = gc.Suite(&backendSuite{}) |
3677 | 39 | 40 | ||
3678 | === modified file 'environs/imagemetadata/generate_test.go' | |||
3679 | --- environs/imagemetadata/generate_test.go 2014-05-20 04:27:02 +0000 | |||
3680 | +++ environs/imagemetadata/generate_test.go 2014-05-22 14:33:28 +0000 | |||
3681 | @@ -11,13 +11,13 @@ | |||
3682 | 11 | "launchpad.net/juju-core/environs/imagemetadata/testing" | 11 | "launchpad.net/juju-core/environs/imagemetadata/testing" |
3683 | 12 | "launchpad.net/juju-core/environs/simplestreams" | 12 | "launchpad.net/juju-core/environs/simplestreams" |
3684 | 13 | "launchpad.net/juju-core/environs/storage" | 13 | "launchpad.net/juju-core/environs/storage" |
3686 | 14 | coretesting "launchpad.net/juju-core/testing" | 14 | "launchpad.net/juju-core/testing/testbase" |
3687 | 15 | ) | 15 | ) |
3688 | 16 | 16 | ||
3689 | 17 | var _ = gc.Suite(&generateSuite{}) | 17 | var _ = gc.Suite(&generateSuite{}) |
3690 | 18 | 18 | ||
3691 | 19 | type generateSuite struct { | 19 | type generateSuite struct { |
3693 | 20 | coretesting.BaseSuite | 20 | testbase.LoggingSuite |
3694 | 21 | } | 21 | } |
3695 | 22 | 22 | ||
3696 | 23 | func assertFetch(c *gc.C, stor storage.Storage, series, arch, region, endpoint, id string) { | 23 | func assertFetch(c *gc.C, stor storage.Storage, series, arch, region, endpoint, id string) { |
3697 | 24 | 24 | ||
3698 | === modified file 'environs/imagemetadata/marshal_test.go' | |||
3699 | --- environs/imagemetadata/marshal_test.go 2014-05-20 04:27:02 +0000 | |||
3700 | +++ environs/imagemetadata/marshal_test.go 2014-05-22 14:33:28 +0000 | |||
3701 | @@ -10,13 +10,13 @@ | |||
3702 | 10 | 10 | ||
3703 | 11 | "launchpad.net/juju-core/environs/imagemetadata" | 11 | "launchpad.net/juju-core/environs/imagemetadata" |
3704 | 12 | "launchpad.net/juju-core/environs/simplestreams" | 12 | "launchpad.net/juju-core/environs/simplestreams" |
3706 | 13 | "launchpad.net/juju-core/testing" | 13 | "launchpad.net/juju-core/testing/testbase" |
3707 | 14 | ) | 14 | ) |
3708 | 15 | 15 | ||
3709 | 16 | var _ = gc.Suite(&marshalSuite{}) | 16 | var _ = gc.Suite(&marshalSuite{}) |
3710 | 17 | 17 | ||
3711 | 18 | type marshalSuite struct { | 18 | type marshalSuite struct { |
3713 | 19 | testing.BaseSuite | 19 | testbase.LoggingSuite |
3714 | 20 | } | 20 | } |
3715 | 21 | 21 | ||
3716 | 22 | var expectedIndex = `{ | 22 | var expectedIndex = `{ |
3717 | 23 | 23 | ||
3718 | === modified file 'environs/imagemetadata/upload_test.go' | |||
3719 | --- environs/imagemetadata/upload_test.go 2014-05-20 04:27:02 +0000 | |||
3720 | +++ environs/imagemetadata/upload_test.go 2014-05-22 14:33:28 +0000 | |||
3721 | @@ -17,13 +17,13 @@ | |||
3722 | 17 | "launchpad.net/juju-core/environs/imagemetadata/testing" | 17 | "launchpad.net/juju-core/environs/imagemetadata/testing" |
3723 | 18 | "launchpad.net/juju-core/environs/simplestreams" | 18 | "launchpad.net/juju-core/environs/simplestreams" |
3724 | 19 | "launchpad.net/juju-core/environs/storage" | 19 | "launchpad.net/juju-core/environs/storage" |
3726 | 20 | coretesting "launchpad.net/juju-core/testing" | 20 | "launchpad.net/juju-core/testing/testbase" |
3727 | 21 | ) | 21 | ) |
3728 | 22 | 22 | ||
3729 | 23 | var _ = gc.Suite(&uploadSuite{}) | 23 | var _ = gc.Suite(&uploadSuite{}) |
3730 | 24 | 24 | ||
3731 | 25 | type uploadSuite struct { | 25 | type uploadSuite struct { |
3733 | 26 | coretesting.BaseSuite | 26 | testbase.LoggingSuite |
3734 | 27 | } | 27 | } |
3735 | 28 | 28 | ||
3736 | 29 | func createImageMetadata(c *gc.C) (sourceDir string, destDir string, destStor storage.Storage, metadata *imagemetadata.ImageMetadata) { | 29 | func createImageMetadata(c *gc.C) (sourceDir string, destDir string, destStor storage.Storage, metadata *imagemetadata.ImageMetadata) { |
3737 | 30 | 30 | ||
3738 | === modified file 'environs/imagemetadata/urls_test.go' | |||
3739 | --- environs/imagemetadata/urls_test.go 2014-05-15 05:14:01 +0000 | |||
3740 | +++ environs/imagemetadata/urls_test.go 2014-05-22 14:33:28 +0000 | |||
3741 | @@ -15,18 +15,21 @@ | |||
3742 | 15 | sstesting "launchpad.net/juju-core/environs/simplestreams/testing" | 15 | sstesting "launchpad.net/juju-core/environs/simplestreams/testing" |
3743 | 16 | "launchpad.net/juju-core/provider/dummy" | 16 | "launchpad.net/juju-core/provider/dummy" |
3744 | 17 | "launchpad.net/juju-core/testing" | 17 | "launchpad.net/juju-core/testing" |
3745 | 18 | coretesting "launchpad.net/juju-core/testing" | ||
3746 | 19 | ) | 18 | ) |
3747 | 20 | 19 | ||
3748 | 21 | type URLsSuite struct { | 20 | type URLsSuite struct { |
3750 | 22 | coretesting.BaseSuite | 21 | home *testing.FakeHome |
3751 | 23 | } | 22 | } |
3752 | 24 | 23 | ||
3753 | 25 | var _ = gc.Suite(&URLsSuite{}) | 24 | var _ = gc.Suite(&URLsSuite{}) |
3754 | 26 | 25 | ||
3755 | 26 | func (s *URLsSuite) SetUpTest(c *gc.C) { | ||
3756 | 27 | s.home = testing.MakeEmptyFakeHome(c) | ||
3757 | 28 | } | ||
3758 | 29 | |||
3759 | 27 | func (s *URLsSuite) TearDownTest(c *gc.C) { | 30 | func (s *URLsSuite) TearDownTest(c *gc.C) { |
3760 | 28 | dummy.Reset() | 31 | dummy.Reset() |
3762 | 29 | s.BaseSuite.TearDownTest(c) | 32 | s.home.Restore() |
3763 | 30 | } | 33 | } |
3764 | 31 | 34 | ||
3765 | 32 | func (s *URLsSuite) env(c *gc.C, imageMetadataURL, stream string) environs.Environ { | 35 | func (s *URLsSuite) env(c *gc.C, imageMetadataURL, stream string) environs.Environ { |
3766 | 33 | 36 | ||
3767 | === modified file 'environs/imagemetadata/validation_test.go' | |||
3768 | --- environs/imagemetadata/validation_test.go 2014-05-20 04:27:02 +0000 | |||
3769 | +++ environs/imagemetadata/validation_test.go 2014-05-22 14:33:28 +0000 | |||
3770 | @@ -12,12 +12,12 @@ | |||
3771 | 12 | "launchpad.net/juju-core/environs/filestorage" | 12 | "launchpad.net/juju-core/environs/filestorage" |
3772 | 13 | "launchpad.net/juju-core/environs/imagemetadata" | 13 | "launchpad.net/juju-core/environs/imagemetadata" |
3773 | 14 | "launchpad.net/juju-core/environs/simplestreams" | 14 | "launchpad.net/juju-core/environs/simplestreams" |
3775 | 15 | "launchpad.net/juju-core/testing" | 15 | "launchpad.net/juju-core/testing/testbase" |
3776 | 16 | "launchpad.net/juju-core/utils" | 16 | "launchpad.net/juju-core/utils" |
3777 | 17 | ) | 17 | ) |
3778 | 18 | 18 | ||
3779 | 19 | type ValidateSuite struct { | 19 | type ValidateSuite struct { |
3781 | 20 | testing.BaseSuite | 20 | testbase.LoggingSuite |
3782 | 21 | metadataDir string | 21 | metadataDir string |
3783 | 22 | } | 22 | } |
3784 | 23 | 23 | ||
3785 | @@ -45,7 +45,7 @@ | |||
3786 | 45 | } | 45 | } |
3787 | 46 | 46 | ||
3788 | 47 | func (s *ValidateSuite) SetUpTest(c *gc.C) { | 47 | func (s *ValidateSuite) SetUpTest(c *gc.C) { |
3790 | 48 | s.BaseSuite.SetUpTest(c) | 48 | s.LoggingSuite.SetUpTest(c) |
3791 | 49 | s.metadataDir = c.MkDir() | 49 | s.metadataDir = c.MkDir() |
3792 | 50 | } | 50 | } |
3793 | 51 | 51 | ||
3794 | 52 | 52 | ||
3795 | === modified file 'environs/instances/image.go' | |||
3796 | --- environs/instances/image.go 2014-05-16 09:58:00 +0000 | |||
3797 | +++ environs/instances/image.go 2014-05-22 14:33:28 +0000 | |||
3798 | @@ -5,7 +5,6 @@ | |||
3799 | 5 | 5 | ||
3800 | 6 | import ( | 6 | import ( |
3801 | 7 | "fmt" | 7 | "fmt" |
3802 | 8 | "sort" | ||
3803 | 9 | 8 | ||
3804 | 10 | "launchpad.net/juju-core/constraints" | 9 | "launchpad.net/juju-core/constraints" |
3805 | 11 | "launchpad.net/juju-core/environs/imagemetadata" | 10 | "launchpad.net/juju-core/environs/imagemetadata" |
3806 | @@ -45,8 +44,6 @@ | |||
3807 | 45 | type InstanceSpec struct { | 44 | type InstanceSpec struct { |
3808 | 46 | InstanceType InstanceType | 45 | InstanceType InstanceType |
3809 | 47 | Image Image | 46 | Image Image |
3810 | 48 | // order is used to sort InstanceSpec based on the input InstanceTypes. | ||
3811 | 49 | order int | ||
3812 | 50 | } | 47 | } |
3813 | 51 | 48 | ||
3814 | 52 | // FindInstanceSpec returns an InstanceSpec satisfying the supplied InstanceConstraint. | 49 | // FindInstanceSpec returns an InstanceSpec satisfying the supplied InstanceConstraint. |
3815 | @@ -86,17 +83,13 @@ | |||
3816 | 86 | for _, itype := range matchingTypes { | 83 | for _, itype := range matchingTypes { |
3817 | 87 | for _, image := range possibleImages { | 84 | for _, image := range possibleImages { |
3818 | 88 | if image.match(itype) { | 85 | if image.match(itype) { |
3824 | 89 | specs = append(specs, &InstanceSpec{ | 86 | specs = append(specs, &InstanceSpec{itype, image}) |
3820 | 90 | InstanceType: itype, | ||
3821 | 91 | Image: image, | ||
3822 | 92 | order: len(specs), | ||
3823 | 93 | }) | ||
3825 | 94 | } | 87 | } |
3826 | 95 | } | 88 | } |
3827 | 96 | } | 89 | } |
3831 | 97 | if len(specs) > 0 { | 90 | |
3832 | 98 | sort.Sort(byArch(specs)) | 91 | if spec := preferredSpec(specs); spec != nil { |
3833 | 99 | return specs[0], nil | 92 | return spec, nil |
3834 | 100 | } | 93 | } |
3835 | 101 | 94 | ||
3836 | 102 | names := make([]string, len(matchingTypes)) | 95 | names := make([]string, len(matchingTypes)) |
3837 | @@ -106,39 +99,21 @@ | |||
3838 | 106 | return nil, fmt.Errorf("no %q images in %s matching instance types %v", ic.Series, ic.Region, names) | 99 | return nil, fmt.Errorf("no %q images in %s matching instance types %v", ic.Series, ic.Region, names) |
3839 | 107 | } | 100 | } |
3840 | 108 | 101 | ||
3874 | 109 | // byArch sorts InstanceSpecs first by descending word-size, then | 102 | // preferredSpec will if possible return a spec with arch matching that |
3875 | 110 | // alphabetically by name, and choose the first spec in the sequence. | 103 | // of the host machine. |
3876 | 111 | type byArch []*InstanceSpec | 104 | func preferredSpec(specs []*InstanceSpec) *InstanceSpec { |
3877 | 112 | 105 | if len(specs) > 1 { | |
3878 | 113 | func (a byArch) Len() int { | 106 | hostArch := arch.HostArch() |
3879 | 114 | return len(a) | 107 | for _, spec := range specs { |
3880 | 115 | } | 108 | if spec.Image.Arch == hostArch { |
3881 | 116 | 109 | return spec | |
3882 | 117 | func (a byArch) Less(i, j int) bool { | 110 | } |
3883 | 118 | iArchName := a[i].Image.Arch | 111 | } |
3884 | 119 | jArchName := a[j].Image.Arch | 112 | } |
3885 | 120 | iArch := arch.Info[iArchName] | 113 | if len(specs) > 0 { |
3886 | 121 | jArch := arch.Info[jArchName] | 114 | return specs[0] |
3887 | 122 | // Wider word-size first. | 115 | } |
3888 | 123 | switch { | 116 | return nil |
3856 | 124 | case iArch.WordSize > jArch.WordSize: | ||
3857 | 125 | return true | ||
3858 | 126 | case iArch.WordSize < jArch.WordSize: | ||
3859 | 127 | return false | ||
3860 | 128 | } | ||
3861 | 129 | // Alphabetically by arch name. | ||
3862 | 130 | switch { | ||
3863 | 131 | case iArchName < jArchName: | ||
3864 | 132 | return true | ||
3865 | 133 | case iArchName > jArchName: | ||
3866 | 134 | return false | ||
3867 | 135 | } | ||
3868 | 136 | // If word-size and name the same, keep stable. | ||
3869 | 137 | return a[i].order < a[j].order | ||
3870 | 138 | } | ||
3871 | 139 | |||
3872 | 140 | func (a byArch) Swap(i, j int) { | ||
3873 | 141 | a[i], a[j] = a[j], a[i] | ||
3889 | 142 | } | 117 | } |
3890 | 143 | 118 | ||
3891 | 144 | // Image holds the attributes that vary amongst relevant images for | 119 | // Image holds the attributes that vary amongst relevant images for |
3892 | 145 | 120 | ||
3893 | === modified file 'environs/instances/image_test.go' | |||
3894 | --- environs/instances/image_test.go 2014-05-20 04:27:02 +0000 | |||
3895 | +++ environs/instances/image_test.go 2014-05-22 14:33:28 +0000 | |||
3896 | @@ -11,12 +11,13 @@ | |||
3897 | 11 | "launchpad.net/juju-core/constraints" | 11 | "launchpad.net/juju-core/constraints" |
3898 | 12 | "launchpad.net/juju-core/environs/imagemetadata" | 12 | "launchpad.net/juju-core/environs/imagemetadata" |
3899 | 13 | "launchpad.net/juju-core/environs/simplestreams" | 13 | "launchpad.net/juju-core/environs/simplestreams" |
3901 | 14 | coretesting "launchpad.net/juju-core/testing" | 14 | "launchpad.net/juju-core/juju/arch" |
3902 | 15 | "launchpad.net/juju-core/testing/testbase" | ||
3903 | 15 | "launchpad.net/juju-core/utils" | 16 | "launchpad.net/juju-core/utils" |
3904 | 16 | ) | 17 | ) |
3905 | 17 | 18 | ||
3906 | 18 | type imageSuite struct { | 19 | type imageSuite struct { |
3908 | 19 | coretesting.BaseSuite | 20 | testbase.LoggingSuite |
3909 | 20 | } | 21 | } |
3910 | 21 | 22 | ||
3911 | 22 | func Test(t *testing.T) { | 23 | func Test(t *testing.T) { |
3912 | @@ -90,10 +91,10 @@ | |||
3913 | 90 | } | 91 | } |
3914 | 91 | } | 92 | } |
3915 | 92 | }, | 93 | }, |
3917 | 93 | "com.ubuntu.cloud:server:12.04:armhf": { | 94 | "com.ubuntu.cloud:server:12.04:arm": { |
3918 | 94 | "release": "precise", | 95 | "release": "precise", |
3919 | 95 | "version": "12.04", | 96 | "version": "12.04", |
3921 | 96 | "arch": "armhf", | 97 | "arch": "arm", |
3922 | 97 | "versions": { | 98 | "versions": { |
3923 | 98 | "20121218": { | 99 | "20121218": { |
3924 | 99 | "items": { | 100 | "items": { |
3925 | @@ -116,57 +117,7 @@ | |||
3926 | 116 | "id": "ami-00000036" | 117 | "id": "ami-00000036" |
3927 | 117 | } | 118 | } |
3928 | 118 | }, | 119 | }, |
3980 | 119 | "pubname": "ubuntu-precise-12.04-armhf-server-20121218", | 120 | "pubname": "ubuntu-precise-12.04-arm-server-20121218", |
3930 | 120 | "label": "release" | ||
3931 | 121 | } | ||
3932 | 122 | } | ||
3933 | 123 | }, | ||
3934 | 124 | "com.ubuntu.cloud:server:12.04:i386": { | ||
3935 | 125 | "release": "precise", | ||
3936 | 126 | "version": "12.04", | ||
3937 | 127 | "arch": "i386", | ||
3938 | 128 | "versions": { | ||
3939 | 129 | "20121218": { | ||
3940 | 130 | "items": { | ||
3941 | 131 | "apne1pe": { | ||
3942 | 132 | "root_store": "ebs", | ||
3943 | 133 | "virt": "pv", | ||
3944 | 134 | "region": "ap-northeast-1", | ||
3945 | 135 | "id": "ami-b79b09b6" | ||
3946 | 136 | }, | ||
3947 | 137 | "test1pe": { | ||
3948 | 138 | "root_store": "ebs", | ||
3949 | 139 | "virt": "pv", | ||
3950 | 140 | "region": "test", | ||
3951 | 141 | "id": "ami-b79b09b7" | ||
3952 | 142 | } | ||
3953 | 143 | }, | ||
3954 | 144 | "pubname": "ubuntu-precise-12.04-i386-server-20121218", | ||
3955 | 145 | "label": "release" | ||
3956 | 146 | } | ||
3957 | 147 | } | ||
3958 | 148 | }, | ||
3959 | 149 | "com.ubuntu.cloud:server:12.04:ppc64": { | ||
3960 | 150 | "release": "precise", | ||
3961 | 151 | "version": "12.04", | ||
3962 | 152 | "arch": "ppc64", | ||
3963 | 153 | "versions": { | ||
3964 | 154 | "20121218": { | ||
3965 | 155 | "items": { | ||
3966 | 156 | "apne1pe": { | ||
3967 | 157 | "root_store": "ebs", | ||
3968 | 158 | "virt": "pv", | ||
3969 | 159 | "region": "ap-northeast-1", | ||
3970 | 160 | "id": "ami-b79b09b8" | ||
3971 | 161 | }, | ||
3972 | 162 | "test1pe": { | ||
3973 | 163 | "root_store": "ebs", | ||
3974 | 164 | "virt": "pv", | ||
3975 | 165 | "region": "test", | ||
3976 | 166 | "id": "ami-b79b09b9" | ||
3977 | 167 | } | ||
3978 | 168 | }, | ||
3979 | 169 | "pubname": "ubuntu-precise-12.04-ppc64-server-20121218", | ||
3981 | 170 | "label": "release" | 121 | "label": "release" |
3982 | 171 | } | 122 | } |
3983 | 172 | } | 123 | } |
3984 | @@ -216,10 +167,10 @@ | |||
3985 | 216 | 167 | ||
3986 | 217 | func (p *instanceSpecTestParams) init() { | 168 | func (p *instanceSpecTestParams) init() { |
3987 | 218 | if p.arches == nil { | 169 | if p.arches == nil { |
3989 | 219 | p.arches = []string{"amd64", "armhf"} | 170 | p.arches = []string{"amd64", "arm"} |
3990 | 220 | } | 171 | } |
3991 | 221 | if p.instanceTypes == nil { | 172 | if p.instanceTypes == nil { |
3993 | 222 | p.instanceTypes = []InstanceType{{Id: "1", Name: "it-1", Arches: []string{"amd64", "armhf"}}} | 173 | p.instanceTypes = []InstanceType{{Id: "1", Name: "it-1", Arches: []string{"amd64", "arm"}}} |
3994 | 223 | p.instanceTypeId = "1" | 174 | p.instanceTypeId = "1" |
3995 | 224 | p.instanceTypeName = "it-1" | 175 | p.instanceTypeName = "it-1" |
3996 | 225 | } | 176 | } |
3997 | @@ -236,42 +187,6 @@ | |||
3998 | 236 | }, | 187 | }, |
3999 | 237 | }, | 188 | }, |
4000 | 238 | { | 189 | { |
4001 | 239 | desc: "prefer amd64 over i386", | ||
4002 | 240 | region: "test", | ||
4003 | 241 | imageId: "ami-00000033", | ||
4004 | 242 | arches: []string{"amd64", "i386"}, | ||
4005 | 243 | instanceTypes: []InstanceType{ | ||
4006 | 244 | {Id: "1", Name: "it-1", Arches: []string{"i386", "amd64"}, VirtType: &pv, Mem: 512}, | ||
4007 | 245 | }, | ||
4008 | 246 | }, | ||
4009 | 247 | { | ||
4010 | 248 | desc: "prefer armhf over i386 (first alphabetical wins)", | ||
4011 | 249 | region: "test", | ||
4012 | 250 | imageId: "ami-00000034", | ||
4013 | 251 | arches: []string{"armhf", "i386"}, | ||
4014 | 252 | instanceTypes: []InstanceType{ | ||
4015 | 253 | {Id: "1", Name: "it-1", Arches: []string{"armhf", "i386"}, VirtType: &pv, Mem: 512}, | ||
4016 | 254 | }, | ||
4017 | 255 | }, | ||
4018 | 256 | { | ||
4019 | 257 | desc: "prefer ppc64 over i386 (64-bit trumps 32-bit, regardless of alphabetical order)", | ||
4020 | 258 | region: "test", | ||
4021 | 259 | imageId: "ami-b79b09b9", | ||
4022 | 260 | arches: []string{"ppc64", "i386"}, | ||
4023 | 261 | instanceTypes: []InstanceType{ | ||
4024 | 262 | {Id: "1", Name: "it-1", Arches: []string{"i386", "ppc64"}, VirtType: &pv, Mem: 512}, | ||
4025 | 263 | }, | ||
4026 | 264 | }, | ||
4027 | 265 | { | ||
4028 | 266 | desc: "prefer amd64 over arm64 (first 64-bit alphabetical wins)", | ||
4029 | 267 | region: "test", | ||
4030 | 268 | imageId: "ami-00000033", | ||
4031 | 269 | arches: []string{"arm64", "amd64"}, | ||
4032 | 270 | instanceTypes: []InstanceType{ | ||
4033 | 271 | {Id: "1", Name: "it-1", Arches: []string{"arm64", "amd64"}, VirtType: &pv, Mem: 512}, | ||
4034 | 272 | }, | ||
4035 | 273 | }, | ||
4036 | 274 | { | ||
4037 | 275 | desc: "explicit release stream", | 190 | desc: "explicit release stream", |
4038 | 276 | region: "test", | 191 | region: "test", |
4039 | 277 | stream: "released", | 192 | stream: "released", |
4040 | @@ -328,7 +243,7 @@ | |||
4041 | 328 | { | 243 | { |
4042 | 329 | desc: "no image exists in metadata", | 244 | desc: "no image exists in metadata", |
4043 | 330 | region: "invalid-region", | 245 | region: "invalid-region", |
4045 | 331 | err: `no "precise" images in invalid-region with arches \[amd64 armhf\]`, | 246 | err: `no "precise" images in invalid-region with arches \[amd64 arm\]`, |
4046 | 332 | }, | 247 | }, |
4047 | 333 | { | 248 | { |
4048 | 334 | desc: "no valid instance types", | 249 | desc: "no valid instance types", |
4049 | @@ -392,6 +307,44 @@ | |||
4050 | 392 | } | 307 | } |
4051 | 393 | } | 308 | } |
4052 | 394 | 309 | ||
4053 | 310 | func (s *imageSuite) TestPreferredSpec(c *gc.C) { | ||
4054 | 311 | type prefTest struct { | ||
4055 | 312 | desc string | ||
4056 | 313 | specs []*InstanceSpec | ||
4057 | 314 | expected *InstanceSpec | ||
4058 | 315 | } | ||
4059 | 316 | |||
4060 | 317 | s.PatchValue(&arch.HostArch, func() string { return arch.ARM64 }) | ||
4061 | 318 | |||
4062 | 319 | amd64 := &InstanceSpec{Image: Image{Arch: arch.AMD64}} | ||
4063 | 320 | i386 := &InstanceSpec{Image: Image{Arch: arch.I386}} | ||
4064 | 321 | arm64 := &InstanceSpec{Image: Image{Arch: arch.ARM64}} | ||
4065 | 322 | |||
4066 | 323 | prefTests := []prefTest{ | ||
4067 | 324 | { | ||
4068 | 325 | "choose hostarch (arm64) over other arches", | ||
4069 | 326 | []*InstanceSpec{i386, arm64, amd64}, | ||
4070 | 327 | arm64, | ||
4071 | 328 | }, | ||
4072 | 329 | { | ||
4073 | 330 | "choose first image if no arm64", | ||
4074 | 331 | []*InstanceSpec{i386, amd64}, | ||
4075 | 332 | i386, | ||
4076 | 333 | }, | ||
4077 | 334 | { | ||
4078 | 335 | "choose only image only one there", | ||
4079 | 336 | []*InstanceSpec{amd64}, | ||
4080 | 337 | amd64, | ||
4081 | 338 | }, | ||
4082 | 339 | } | ||
4083 | 340 | |||
4084 | 341 | for n, test := range prefTests { | ||
4085 | 342 | c.Logf("PreferredSpec test %d: %s", n, test.desc) | ||
4086 | 343 | actual := preferredSpec(test.specs) | ||
4087 | 344 | c.Assert(actual, gc.Equals, test.expected) | ||
4088 | 345 | } | ||
4089 | 346 | } | ||
4090 | 347 | |||
4091 | 395 | var imageMatchtests = []struct { | 348 | var imageMatchtests = []struct { |
4092 | 396 | image Image | 349 | image Image |
4093 | 397 | itype InstanceType | 350 | itype InstanceType |
4094 | @@ -403,14 +356,14 @@ | |||
4095 | 403 | match: true, | 356 | match: true, |
4096 | 404 | }, { | 357 | }, { |
4097 | 405 | image: Image{Arch: "amd64"}, | 358 | image: Image{Arch: "amd64"}, |
4099 | 406 | itype: InstanceType{Arches: []string{"amd64", "armhf"}}, | 359 | itype: InstanceType{Arches: []string{"amd64", "arm"}}, |
4100 | 407 | match: true, | 360 | match: true, |
4101 | 408 | }, { | 361 | }, { |
4102 | 409 | image: Image{Arch: "amd64", VirtType: hvm}, | 362 | image: Image{Arch: "amd64", VirtType: hvm}, |
4103 | 410 | itype: InstanceType{Arches: []string{"amd64"}, VirtType: &hvm}, | 363 | itype: InstanceType{Arches: []string{"amd64"}, VirtType: &hvm}, |
4104 | 411 | match: true, | 364 | match: true, |
4105 | 412 | }, { | 365 | }, { |
4107 | 413 | image: Image{Arch: "armhf"}, | 366 | image: Image{Arch: "arm"}, |
4108 | 414 | itype: InstanceType{Arches: []string{"amd64"}}, | 367 | itype: InstanceType{Arches: []string{"amd64"}}, |
4109 | 415 | }, { | 368 | }, { |
4110 | 416 | image: Image{Arch: "amd64", VirtType: hvm}, | 369 | image: Image{Arch: "amd64", VirtType: hvm}, |
4111 | 417 | 370 | ||
4112 | === modified file 'environs/instances/instancetype_test.go' | |||
4113 | --- environs/instances/instancetype_test.go 2014-05-20 04:27:02 +0000 | |||
4114 | +++ environs/instances/instancetype_test.go 2014-05-22 14:33:28 +0000 | |||
4115 | @@ -9,11 +9,11 @@ | |||
4116 | 9 | gc "launchpad.net/gocheck" | 9 | gc "launchpad.net/gocheck" |
4117 | 10 | 10 | ||
4118 | 11 | "launchpad.net/juju-core/constraints" | 11 | "launchpad.net/juju-core/constraints" |
4120 | 12 | "launchpad.net/juju-core/testing" | 12 | "launchpad.net/juju-core/testing/testbase" |
4121 | 13 | ) | 13 | ) |
4122 | 14 | 14 | ||
4123 | 15 | type instanceTypeSuite struct { | 15 | type instanceTypeSuite struct { |
4125 | 16 | testing.BaseSuite | 16 | testbase.LoggingSuite |
4126 | 17 | } | 17 | } |
4127 | 18 | 18 | ||
4128 | 19 | var _ = gc.Suite(&instanceTypeSuite{}) | 19 | var _ = gc.Suite(&instanceTypeSuite{}) |
4129 | 20 | 20 | ||
4130 | === modified file 'environs/jujutest/livetests.go' | |||
4131 | --- environs/jujutest/livetests.go 2014-05-20 00:11:22 +0000 | |||
4132 | +++ environs/jujutest/livetests.go 2014-05-22 14:33:28 +0000 | |||
4133 | @@ -33,6 +33,7 @@ | |||
4134 | 33 | "launchpad.net/juju-core/state/api" | 33 | "launchpad.net/juju-core/state/api" |
4135 | 34 | statetesting "launchpad.net/juju-core/state/testing" | 34 | statetesting "launchpad.net/juju-core/state/testing" |
4136 | 35 | coretesting "launchpad.net/juju-core/testing" | 35 | coretesting "launchpad.net/juju-core/testing" |
4137 | 36 | "launchpad.net/juju-core/testing/testbase" | ||
4138 | 36 | coretools "launchpad.net/juju-core/tools" | 37 | coretools "launchpad.net/juju-core/tools" |
4139 | 37 | "launchpad.net/juju-core/utils" | 38 | "launchpad.net/juju-core/utils" |
4140 | 38 | "launchpad.net/juju-core/version" | 39 | "launchpad.net/juju-core/version" |
4141 | @@ -42,6 +43,7 @@ | |||
4142 | 42 | // (e.g. Amazon EC2). The Environ is opened once only for all the tests | 43 | // (e.g. Amazon EC2). The Environ is opened once only for all the tests |
4143 | 43 | // in the suite, stored in Env, and Destroyed after the suite has completed. | 44 | // in the suite, stored in Env, and Destroyed after the suite has completed. |
4144 | 44 | type LiveTests struct { | 45 | type LiveTests struct { |
4145 | 46 | testbase.LoggingSuite | ||
4146 | 45 | envtesting.ToolsFixture | 47 | envtesting.ToolsFixture |
4147 | 46 | 48 | ||
4148 | 47 | // TestConfig contains the configuration attributes for opening an environment. | 49 | // TestConfig contains the configuration attributes for opening an environment. |
4149 | @@ -73,9 +75,15 @@ | |||
4150 | 73 | } | 75 | } |
4151 | 74 | 76 | ||
4152 | 75 | func (t *LiveTests) SetUpSuite(c *gc.C) { | 77 | func (t *LiveTests) SetUpSuite(c *gc.C) { |
4153 | 78 | t.LoggingSuite.SetUpSuite(c) | ||
4154 | 76 | t.ConfigStore = configstore.NewMem() | 79 | t.ConfigStore = configstore.NewMem() |
4155 | 77 | } | 80 | } |
4156 | 78 | 81 | ||
4157 | 82 | func (t *LiveTests) SetUpTest(c *gc.C) { | ||
4158 | 83 | t.LoggingSuite.SetUpTest(c) | ||
4159 | 84 | t.ToolsFixture.SetUpTest(c) | ||
4160 | 85 | } | ||
4161 | 86 | |||
4162 | 79 | func publicAttrs(e environs.Environ) map[string]interface{} { | 87 | func publicAttrs(e environs.Environ) map[string]interface{} { |
4163 | 80 | cfg := e.Config() | 88 | cfg := e.Config() |
4164 | 81 | secrets, err := e.Provider().SecretAttrs(cfg) | 89 | secrets, err := e.Provider().SecretAttrs(cfg) |
4165 | @@ -93,6 +101,12 @@ | |||
4166 | 93 | if t.Env != nil { | 101 | if t.Env != nil { |
4167 | 94 | t.Destroy(c) | 102 | t.Destroy(c) |
4168 | 95 | } | 103 | } |
4169 | 104 | t.LoggingSuite.TearDownSuite(c) | ||
4170 | 105 | } | ||
4171 | 106 | |||
4172 | 107 | func (t *LiveTests) TearDownTest(c *gc.C) { | ||
4173 | 108 | t.ToolsFixture.TearDownTest(c) | ||
4174 | 109 | t.LoggingSuite.TearDownTest(c) | ||
4175 | 96 | } | 110 | } |
4176 | 97 | 111 | ||
4177 | 98 | // PrepareOnce ensures that the environment is | 112 | // PrepareOnce ensures that the environment is |
4178 | @@ -122,7 +136,7 @@ | |||
4179 | 122 | _, err := sync.Upload(t.Env.Storage(), nil, coretesting.FakeDefaultSeries) | 136 | _, err := sync.Upload(t.Env.Storage(), nil, coretesting.FakeDefaultSeries) |
4180 | 123 | c.Assert(err, gc.IsNil) | 137 | c.Assert(err, gc.IsNil) |
4181 | 124 | } | 138 | } |
4183 | 125 | t.UploadFakeTools(c, t.Env.Storage()) | 139 | envtesting.UploadFakeTools(c, t.Env.Storage()) |
4184 | 126 | err := bootstrap.EnsureNotBootstrapped(t.Env) | 140 | err := bootstrap.EnsureNotBootstrapped(t.Env) |
4185 | 127 | c.Assert(err, gc.IsNil) | 141 | c.Assert(err, gc.IsNil) |
4186 | 128 | err = bootstrap.Bootstrap(coretesting.Context(c), t.Env, environs.BootstrapParams{Constraints: cons}) | 142 | err = bootstrap.Bootstrap(coretesting.Context(c), t.Env, environs.BootstrapParams{Constraints: cons}) |
4187 | @@ -157,7 +171,7 @@ | |||
4188 | 157 | // that it does not assume a pristine environment. | 171 | // that it does not assume a pristine environment. |
4189 | 158 | func (t *LiveTests) TestStartStop(c *gc.C) { | 172 | func (t *LiveTests) TestStartStop(c *gc.C) { |
4190 | 159 | t.PrepareOnce(c) | 173 | t.PrepareOnce(c) |
4192 | 160 | t.UploadFakeTools(c, t.Env.Storage()) | 174 | envtesting.UploadFakeTools(c, t.Env.Storage()) |
4193 | 161 | 175 | ||
4194 | 162 | inst, _ := testing.AssertStartInstance(c, t.Env, "0") | 176 | inst, _ := testing.AssertStartInstance(c, t.Env, "0") |
4195 | 163 | c.Assert(inst, gc.NotNil) | 177 | c.Assert(inst, gc.NotNil) |
4196 | @@ -211,7 +225,7 @@ | |||
4197 | 211 | 225 | ||
4198 | 212 | func (t *LiveTests) TestPorts(c *gc.C) { | 226 | func (t *LiveTests) TestPorts(c *gc.C) { |
4199 | 213 | t.PrepareOnce(c) | 227 | t.PrepareOnce(c) |
4201 | 214 | t.UploadFakeTools(c, t.Env.Storage()) | 228 | envtesting.UploadFakeTools(c, t.Env.Storage()) |
4202 | 215 | 229 | ||
4203 | 216 | inst1, _ := testing.AssertStartInstance(c, t.Env, "1") | 230 | inst1, _ := testing.AssertStartInstance(c, t.Env, "1") |
4204 | 217 | c.Assert(inst1, gc.NotNil) | 231 | c.Assert(inst1, gc.NotNil) |
4205 | @@ -300,7 +314,7 @@ | |||
4206 | 300 | 314 | ||
4207 | 301 | func (t *LiveTests) TestGlobalPorts(c *gc.C) { | 315 | func (t *LiveTests) TestGlobalPorts(c *gc.C) { |
4208 | 302 | t.PrepareOnce(c) | 316 | t.PrepareOnce(c) |
4210 | 303 | t.UploadFakeTools(c, t.Env.Storage()) | 317 | envtesting.UploadFakeTools(c, t.Env.Storage()) |
4211 | 304 | 318 | ||
4212 | 305 | // Change configuration. | 319 | // Change configuration. |
4213 | 306 | oldConfig := t.Env.Config() | 320 | oldConfig := t.Env.Config() |
4214 | 307 | 321 | ||
4215 | === modified file 'environs/jujutest/tests.go' | |||
4216 | --- environs/jujutest/tests.go 2014-05-19 09:06:00 +0000 | |||
4217 | +++ environs/jujutest/tests.go 2014-05-22 14:33:28 +0000 | |||
4218 | @@ -22,6 +22,7 @@ | |||
4219 | 22 | "launchpad.net/juju-core/instance" | 22 | "launchpad.net/juju-core/instance" |
4220 | 23 | "launchpad.net/juju-core/juju/testing" | 23 | "launchpad.net/juju-core/juju/testing" |
4221 | 24 | coretesting "launchpad.net/juju-core/testing" | 24 | coretesting "launchpad.net/juju-core/testing" |
4222 | 25 | "launchpad.net/juju-core/testing/testbase" | ||
4223 | 25 | "launchpad.net/juju-core/utils" | 26 | "launchpad.net/juju-core/utils" |
4224 | 26 | "launchpad.net/juju-core/version" | 27 | "launchpad.net/juju-core/version" |
4225 | 27 | ) | 28 | ) |
4226 | @@ -32,6 +33,7 @@ | |||
4227 | 32 | // is opened once for each test, and some potentially expensive operations | 33 | // is opened once for each test, and some potentially expensive operations |
4228 | 33 | // may be executed. | 34 | // may be executed. |
4229 | 34 | type Tests struct { | 35 | type Tests struct { |
4230 | 36 | testbase.LoggingSuite | ||
4231 | 35 | TestConfig coretesting.Attrs | 37 | TestConfig coretesting.Attrs |
4232 | 36 | envtesting.ToolsFixture | 38 | envtesting.ToolsFixture |
4233 | 37 | 39 | ||
4234 | @@ -64,17 +66,19 @@ | |||
4235 | 64 | } | 66 | } |
4236 | 65 | 67 | ||
4237 | 66 | func (t *Tests) SetUpTest(c *gc.C) { | 68 | func (t *Tests) SetUpTest(c *gc.C) { |
4238 | 69 | t.LoggingSuite.SetUpTest(c) | ||
4239 | 67 | t.ToolsFixture.SetUpTest(c) | 70 | t.ToolsFixture.SetUpTest(c) |
4240 | 68 | t.ConfigStore = configstore.NewMem() | 71 | t.ConfigStore = configstore.NewMem() |
4241 | 69 | } | 72 | } |
4242 | 70 | 73 | ||
4243 | 71 | func (t *Tests) TearDownTest(c *gc.C) { | 74 | func (t *Tests) TearDownTest(c *gc.C) { |
4244 | 72 | t.ToolsFixture.TearDownTest(c) | 75 | t.ToolsFixture.TearDownTest(c) |
4245 | 76 | t.LoggingSuite.TearDownTest(c) | ||
4246 | 73 | } | 77 | } |
4247 | 74 | 78 | ||
4248 | 75 | func (t *Tests) TestStartStop(c *gc.C) { | 79 | func (t *Tests) TestStartStop(c *gc.C) { |
4249 | 76 | e := t.Prepare(c) | 80 | e := t.Prepare(c) |
4251 | 77 | t.UploadFakeTools(c, e.Storage()) | 81 | envtesting.UploadFakeTools(c, e.Storage()) |
4252 | 78 | cfg, err := e.Config().Apply(map[string]interface{}{ | 82 | cfg, err := e.Config().Apply(map[string]interface{}{ |
4253 | 79 | "agent-version": version.Current.Number.String(), | 83 | "agent-version": version.Current.Number.String(), |
4254 | 80 | }) | 84 | }) |
4255 | @@ -125,7 +129,7 @@ | |||
4256 | 125 | 129 | ||
4257 | 126 | func (t *Tests) TestBootstrap(c *gc.C) { | 130 | func (t *Tests) TestBootstrap(c *gc.C) { |
4258 | 127 | e := t.Prepare(c) | 131 | e := t.Prepare(c) |
4260 | 128 | t.UploadFakeTools(c, e.Storage()) | 132 | envtesting.UploadFakeTools(c, e.Storage()) |
4261 | 129 | err := bootstrap.EnsureNotBootstrapped(e) | 133 | err := bootstrap.EnsureNotBootstrapped(e) |
4262 | 130 | c.Assert(err, gc.IsNil) | 134 | c.Assert(err, gc.IsNil) |
4263 | 131 | err = bootstrap.Bootstrap(coretesting.Context(c), e, environs.BootstrapParams{}) | 135 | err = bootstrap.Bootstrap(coretesting.Context(c), e, environs.BootstrapParams{}) |
4264 | @@ -139,7 +143,7 @@ | |||
4265 | 139 | c.Assert(err, gc.ErrorMatches, "environment is already bootstrapped") | 143 | c.Assert(err, gc.ErrorMatches, "environment is already bootstrapped") |
4266 | 140 | 144 | ||
4267 | 141 | e2 := t.Open(c) | 145 | e2 := t.Open(c) |
4269 | 142 | t.UploadFakeTools(c, e2.Storage()) | 146 | envtesting.UploadFakeTools(c, e2.Storage()) |
4270 | 143 | err = bootstrap.EnsureNotBootstrapped(e2) | 147 | err = bootstrap.EnsureNotBootstrapped(e2) |
4271 | 144 | c.Assert(err, gc.ErrorMatches, "environment is already bootstrapped") | 148 | c.Assert(err, gc.ErrorMatches, "environment is already bootstrapped") |
4272 | 145 | 149 | ||
4273 | @@ -152,7 +156,7 @@ | |||
4274 | 152 | 156 | ||
4275 | 153 | // Prepare again because Destroy invalidates old environments. | 157 | // Prepare again because Destroy invalidates old environments. |
4276 | 154 | e3 := t.Prepare(c) | 158 | e3 := t.Prepare(c) |
4278 | 155 | t.UploadFakeTools(c, e3.Storage()) | 159 | envtesting.UploadFakeTools(c, e3.Storage()) |
4279 | 156 | 160 | ||
4280 | 157 | err = bootstrap.EnsureNotBootstrapped(e3) | 161 | err = bootstrap.EnsureNotBootstrapped(e3) |
4281 | 158 | c.Assert(err, gc.IsNil) | 162 | c.Assert(err, gc.IsNil) |
4282 | 159 | 163 | ||
4283 | === modified file 'environs/manual/addresses_test.go' | |||
4284 | --- environs/manual/addresses_test.go 2014-05-20 04:27:02 +0000 | |||
4285 | +++ environs/manual/addresses_test.go 2014-05-22 14:33:28 +0000 | |||
4286 | @@ -10,7 +10,7 @@ | |||
4287 | 10 | 10 | ||
4288 | 11 | "launchpad.net/juju-core/environs/manual" | 11 | "launchpad.net/juju-core/environs/manual" |
4289 | 12 | "launchpad.net/juju-core/instance" | 12 | "launchpad.net/juju-core/instance" |
4291 | 13 | "launchpad.net/juju-core/testing" | 13 | "launchpad.net/juju-core/testing/testbase" |
4292 | 14 | ) | 14 | ) |
4293 | 15 | 15 | ||
4294 | 16 | const ( | 16 | const ( |
4295 | @@ -19,7 +19,7 @@ | |||
4296 | 19 | ) | 19 | ) |
4297 | 20 | 20 | ||
4298 | 21 | type addressesSuite struct { | 21 | type addressesSuite struct { |
4300 | 22 | testing.BaseSuite | 22 | testbase.LoggingSuite |
4301 | 23 | netLookupHostCalled int | 23 | netLookupHostCalled int |
4302 | 24 | } | 24 | } |
4303 | 25 | 25 | ||
4304 | 26 | 26 | ||
4305 | === modified file 'environs/manual/init_test.go' | |||
4306 | --- environs/manual/init_test.go 2014-05-20 04:27:02 +0000 | |||
4307 | +++ environs/manual/init_test.go 2014-05-22 14:33:28 +0000 | |||
4308 | @@ -10,11 +10,11 @@ | |||
4309 | 10 | gc "launchpad.net/gocheck" | 10 | gc "launchpad.net/gocheck" |
4310 | 11 | 11 | ||
4311 | 12 | "launchpad.net/juju-core/environs/manual" | 12 | "launchpad.net/juju-core/environs/manual" |
4313 | 13 | "launchpad.net/juju-core/testing" | 13 | "launchpad.net/juju-core/testing/testbase" |
4314 | 14 | ) | 14 | ) |
4315 | 15 | 15 | ||
4316 | 16 | type initialisationSuite struct { | 16 | type initialisationSuite struct { |
4318 | 17 | testing.BaseSuite | 17 | testbase.LoggingSuite |
4319 | 18 | } | 18 | } |
4320 | 19 | 19 | ||
4321 | 20 | var _ = gc.Suite(&initialisationSuite{}) | 20 | var _ = gc.Suite(&initialisationSuite{}) |
4322 | 21 | 21 | ||
4323 | === modified file 'environs/open_test.go' | |||
4324 | --- environs/open_test.go 2014-05-16 01:33:13 +0000 | |||
4325 | +++ environs/open_test.go 2014-05-22 14:33:28 +0000 | |||
4326 | @@ -18,23 +18,18 @@ | |||
4327 | 18 | envtesting "launchpad.net/juju-core/environs/testing" | 18 | envtesting "launchpad.net/juju-core/environs/testing" |
4328 | 19 | "launchpad.net/juju-core/provider/dummy" | 19 | "launchpad.net/juju-core/provider/dummy" |
4329 | 20 | "launchpad.net/juju-core/testing" | 20 | "launchpad.net/juju-core/testing" |
4330 | 21 | "launchpad.net/juju-core/testing/testbase" | ||
4331 | 21 | ) | 22 | ) |
4332 | 22 | 23 | ||
4333 | 23 | type OpenSuite struct { | 24 | type OpenSuite struct { |
4335 | 24 | testing.FakeJujuHomeSuite | 25 | testbase.LoggingSuite |
4336 | 25 | envtesting.ToolsFixture | 26 | envtesting.ToolsFixture |
4337 | 26 | } | 27 | } |
4338 | 27 | 28 | ||
4339 | 28 | var _ = gc.Suite(&OpenSuite{}) | 29 | var _ = gc.Suite(&OpenSuite{}) |
4340 | 29 | 30 | ||
4347 | 30 | func (s *OpenSuite) SetUpTest(c *gc.C) { | 31 | func (*OpenSuite) TearDownTest(c *gc.C) { |
4342 | 31 | s.FakeJujuHomeSuite.SetUpTest(c) | ||
4343 | 32 | testing.WriteEnvironments(c, testing.MultipleEnvConfigNoDefault) | ||
4344 | 33 | } | ||
4345 | 34 | |||
4346 | 35 | func (s *OpenSuite) TearDownTest(c *gc.C) { | ||
4348 | 36 | dummy.Reset() | 32 | dummy.Reset() |
4349 | 37 | s.FakeJujuHomeSuite.TearDownTest(c) | ||
4350 | 38 | } | 33 | } |
4351 | 39 | 34 | ||
4352 | 40 | func (*OpenSuite) TestNewDummyEnviron(c *gc.C) { | 35 | func (*OpenSuite) TestNewDummyEnviron(c *gc.C) { |
4353 | @@ -59,6 +54,7 @@ | |||
4354 | 59 | } | 54 | } |
4355 | 60 | 55 | ||
4356 | 61 | func (*OpenSuite) TestNewFromName(c *gc.C) { | 56 | func (*OpenSuite) TestNewFromName(c *gc.C) { |
4357 | 57 | defer testing.MakeFakeHome(c, testing.MultipleEnvConfigNoDefault, testing.SampleCertName).Restore() | ||
4358 | 62 | store := configstore.NewMem() | 58 | store := configstore.NewMem() |
4359 | 63 | ctx := testing.Context(c) | 59 | ctx := testing.Context(c) |
4360 | 64 | e, err := environs.PrepareFromName("erewhemos", ctx, store) | 60 | e, err := environs.PrepareFromName("erewhemos", ctx, store) |
4361 | @@ -70,6 +66,7 @@ | |||
4362 | 70 | } | 66 | } |
4363 | 71 | 67 | ||
4364 | 72 | func (*OpenSuite) TestNewFromNameWithInvalidInfo(c *gc.C) { | 68 | func (*OpenSuite) TestNewFromNameWithInvalidInfo(c *gc.C) { |
4365 | 69 | defer testing.MakeFakeHome(c, testing.MultipleEnvConfigNoDefault, testing.SampleCertName).Restore() | ||
4366 | 73 | store := configstore.NewMem() | 70 | store := configstore.NewMem() |
4367 | 74 | cfg, _, err := environs.ConfigForName("erewhemos", store) | 71 | cfg, _, err := environs.ConfigForName("erewhemos", store) |
4368 | 75 | c.Assert(err, gc.IsNil) | 72 | c.Assert(err, gc.IsNil) |
4369 | @@ -89,6 +86,7 @@ | |||
4370 | 89 | } | 86 | } |
4371 | 90 | 87 | ||
4372 | 91 | func (*OpenSuite) TestNewFromNameWithInvalidEnvironConfig(c *gc.C) { | 88 | func (*OpenSuite) TestNewFromNameWithInvalidEnvironConfig(c *gc.C) { |
4373 | 89 | defer testing.MakeFakeHome(c, testing.MultipleEnvConfigNoDefault, testing.SampleCertName).Restore() | ||
4374 | 92 | store := configstore.NewMem() | 90 | store := configstore.NewMem() |
4375 | 93 | 91 | ||
4376 | 94 | e, err := environs.NewFromName("erewhemos", store) | 92 | e, err := environs.NewFromName("erewhemos", store) |
4377 | @@ -97,6 +95,7 @@ | |||
4378 | 97 | } | 95 | } |
4379 | 98 | 96 | ||
4380 | 99 | func (*OpenSuite) TestPrepareFromName(c *gc.C) { | 97 | func (*OpenSuite) TestPrepareFromName(c *gc.C) { |
4381 | 98 | defer testing.MakeFakeHome(c, testing.MultipleEnvConfigNoDefault, testing.SampleCertName).Restore() | ||
4382 | 100 | ctx := testing.Context(c) | 99 | ctx := testing.Context(c) |
4383 | 101 | e, err := environs.PrepareFromName("erewhemos", ctx, configstore.NewMem()) | 100 | e, err := environs.PrepareFromName("erewhemos", ctx, configstore.NewMem()) |
4384 | 102 | c.Assert(err, gc.IsNil) | 101 | c.Assert(err, gc.IsNil) |
4385 | @@ -106,6 +105,7 @@ | |||
4386 | 106 | } | 105 | } |
4387 | 107 | 106 | ||
4388 | 108 | func (*OpenSuite) TestConfigForName(c *gc.C) { | 107 | func (*OpenSuite) TestConfigForName(c *gc.C) { |
4389 | 108 | defer testing.MakeFakeHome(c, testing.MultipleEnvConfigNoDefault, testing.SampleCertName).Restore() | ||
4390 | 109 | cfg, source, err := environs.ConfigForName("erewhemos", configstore.NewMem()) | 109 | cfg, source, err := environs.ConfigForName("erewhemos", configstore.NewMem()) |
4391 | 110 | c.Assert(err, gc.IsNil) | 110 | c.Assert(err, gc.IsNil) |
4392 | 111 | c.Assert(source, gc.Equals, environs.ConfigFromEnvirons) | 111 | c.Assert(source, gc.Equals, environs.ConfigFromEnvirons) |
4393 | @@ -113,6 +113,7 @@ | |||
4394 | 113 | } | 113 | } |
4395 | 114 | 114 | ||
4396 | 115 | func (*OpenSuite) TestConfigForNameNoDefault(c *gc.C) { | 115 | func (*OpenSuite) TestConfigForNameNoDefault(c *gc.C) { |
4397 | 116 | defer testing.MakeFakeHome(c, testing.MultipleEnvConfigNoDefault, testing.SampleCertName).Restore() | ||
4398 | 116 | cfg, source, err := environs.ConfigForName("", configstore.NewMem()) | 117 | cfg, source, err := environs.ConfigForName("", configstore.NewMem()) |
4399 | 117 | c.Assert(err, gc.ErrorMatches, "no default environment found") | 118 | c.Assert(err, gc.ErrorMatches, "no default environment found") |
4400 | 118 | c.Assert(cfg, gc.IsNil) | 119 | c.Assert(cfg, gc.IsNil) |
4401 | @@ -120,7 +121,7 @@ | |||
4402 | 120 | } | 121 | } |
4403 | 121 | 122 | ||
4404 | 122 | func (*OpenSuite) TestConfigForNameDefault(c *gc.C) { | 123 | func (*OpenSuite) TestConfigForNameDefault(c *gc.C) { |
4406 | 123 | testing.WriteEnvironments(c, testing.SingleEnvConfig) | 124 | defer testing.MakeFakeHome(c, testing.SingleEnvConfig, testing.SampleCertName).Restore() |
4407 | 124 | cfg, source, err := environs.ConfigForName("", configstore.NewMem()) | 125 | cfg, source, err := environs.ConfigForName("", configstore.NewMem()) |
4408 | 125 | c.Assert(err, gc.IsNil) | 126 | c.Assert(err, gc.IsNil) |
4409 | 126 | c.Assert(cfg.Name(), gc.Equals, "erewhemos") | 127 | c.Assert(cfg.Name(), gc.Equals, "erewhemos") |
4410 | @@ -128,7 +129,7 @@ | |||
4411 | 128 | } | 129 | } |
4412 | 129 | 130 | ||
4413 | 130 | func (*OpenSuite) TestConfigForNameFromInfo(c *gc.C) { | 131 | func (*OpenSuite) TestConfigForNameFromInfo(c *gc.C) { |
4415 | 131 | testing.WriteEnvironments(c, testing.SingleEnvConfig) | 132 | defer testing.MakeFakeHome(c, testing.SingleEnvConfig, testing.SampleCertName).Restore() |
4416 | 132 | store := configstore.NewMem() | 133 | store := configstore.NewMem() |
4417 | 133 | cfg, source, err := environs.ConfigForName("", store) | 134 | cfg, source, err := environs.ConfigForName("", store) |
4418 | 134 | c.Assert(err, gc.IsNil) | 135 | c.Assert(err, gc.IsNil) |
4419 | @@ -325,23 +326,17 @@ | |||
4420 | 325 | authorized-keys: i-am-a-key | 326 | authorized-keys: i-am-a-key |
4421 | 326 | ` | 327 | ` |
4422 | 327 | 328 | ||
4426 | 328 | type checkEnvironmentSuite struct { | 329 | type checkEnvironmentSuite struct{} |
4424 | 329 | testing.FakeJujuHomeSuite | ||
4425 | 330 | } | ||
4427 | 331 | 330 | ||
4428 | 332 | var _ = gc.Suite(&checkEnvironmentSuite{}) | 331 | var _ = gc.Suite(&checkEnvironmentSuite{}) |
4429 | 333 | 332 | ||
4430 | 334 | func (s *checkEnvironmentSuite) SetUpTest(c *gc.C) { | ||
4431 | 335 | s.FakeJujuHomeSuite.SetUpTest(c) | ||
4432 | 336 | testing.WriteEnvironments(c, checkEnv) | ||
4433 | 337 | } | ||
4434 | 338 | |||
4435 | 339 | func (s *checkEnvironmentSuite) TearDownTest(c *gc.C) { | 333 | func (s *checkEnvironmentSuite) TearDownTest(c *gc.C) { |
4436 | 340 | dummy.Reset() | 334 | dummy.Reset() |
4437 | 341 | s.FakeJujuHomeSuite.TearDownTest(c) | ||
4438 | 342 | } | 335 | } |
4439 | 343 | 336 | ||
4440 | 344 | func (s *checkEnvironmentSuite) TestCheckEnvironment(c *gc.C) { | 337 | func (s *checkEnvironmentSuite) TestCheckEnvironment(c *gc.C) { |
4441 | 338 | defer testing.MakeFakeHome(c, checkEnv, "existing").Restore() | ||
4442 | 339 | |||
4443 | 345 | ctx := testing.Context(c) | 340 | ctx := testing.Context(c) |
4444 | 346 | environ, err := environs.PrepareFromName("test", ctx, configstore.NewMem()) | 341 | environ, err := environs.PrepareFromName("test", ctx, configstore.NewMem()) |
4445 | 347 | c.Assert(err, gc.IsNil) | 342 | c.Assert(err, gc.IsNil) |
4446 | @@ -356,6 +351,8 @@ | |||
4447 | 356 | } | 351 | } |
4448 | 357 | 352 | ||
4449 | 358 | func (s *checkEnvironmentSuite) TestCheckEnvironmentFileNotFound(c *gc.C) { | 353 | func (s *checkEnvironmentSuite) TestCheckEnvironmentFileNotFound(c *gc.C) { |
4450 | 354 | defer testing.MakeFakeHome(c, checkEnv, "existing").Restore() | ||
4451 | 355 | |||
4452 | 359 | ctx := testing.Context(c) | 356 | ctx := testing.Context(c) |
4453 | 360 | environ, err := environs.PrepareFromName("test", ctx, configstore.NewMem()) | 357 | environ, err := environs.PrepareFromName("test", ctx, configstore.NewMem()) |
4454 | 361 | c.Assert(err, gc.IsNil) | 358 | c.Assert(err, gc.IsNil) |
4455 | @@ -376,6 +373,8 @@ | |||
4456 | 376 | } | 373 | } |
4457 | 377 | 374 | ||
4458 | 378 | func (s *checkEnvironmentSuite) TestCheckEnvironmentGetFails(c *gc.C) { | 375 | func (s *checkEnvironmentSuite) TestCheckEnvironmentGetFails(c *gc.C) { |
4459 | 376 | defer testing.MakeFakeHome(c, checkEnv, "existing").Restore() | ||
4460 | 377 | |||
4461 | 379 | ctx := testing.Context(c) | 378 | ctx := testing.Context(c) |
4462 | 380 | environ, err := environs.PrepareFromName("test", ctx, configstore.NewMem()) | 379 | environ, err := environs.PrepareFromName("test", ctx, configstore.NewMem()) |
4463 | 381 | c.Assert(err, gc.IsNil) | 380 | c.Assert(err, gc.IsNil) |
4464 | @@ -395,6 +394,8 @@ | |||
4465 | 395 | } | 394 | } |
4466 | 396 | 395 | ||
4467 | 397 | func (s *checkEnvironmentSuite) TestCheckEnvironmentBadContent(c *gc.C) { | 396 | func (s *checkEnvironmentSuite) TestCheckEnvironmentBadContent(c *gc.C) { |
4468 | 397 | defer testing.MakeFakeHome(c, checkEnv, "existing").Restore() | ||
4469 | 398 | |||
4470 | 398 | ctx := testing.Context(c) | 399 | ctx := testing.Context(c) |
4471 | 399 | environ, err := environs.PrepareFromName("test", ctx, configstore.NewMem()) | 400 | environ, err := environs.PrepareFromName("test", ctx, configstore.NewMem()) |
4472 | 400 | c.Assert(err, gc.IsNil) | 401 | c.Assert(err, gc.IsNil) |
4473 | 401 | 402 | ||
4474 | === modified file 'environs/simplestreams/testing/testing.go' | |||
4475 | --- environs/simplestreams/testing/testing.go 2014-05-20 04:27:02 +0000 | |||
4476 | +++ environs/simplestreams/testing/testing.go 2014-05-22 14:33:28 +0000 | |||
4477 | @@ -13,7 +13,7 @@ | |||
4478 | 13 | 13 | ||
4479 | 14 | "launchpad.net/juju-core/environs/jujutest" | 14 | "launchpad.net/juju-core/environs/jujutest" |
4480 | 15 | "launchpad.net/juju-core/environs/simplestreams" | 15 | "launchpad.net/juju-core/environs/simplestreams" |
4482 | 16 | "launchpad.net/juju-core/testing" | 16 | "launchpad.net/juju-core/testing/testbase" |
4483 | 17 | "launchpad.net/juju-core/version/ubuntu" | 17 | "launchpad.net/juju-core/version/ubuntu" |
4484 | 18 | ) | 18 | ) |
4485 | 19 | 19 | ||
4486 | @@ -506,7 +506,7 @@ | |||
4487 | 506 | } | 506 | } |
4488 | 507 | 507 | ||
4489 | 508 | type LocalLiveSimplestreamsSuite struct { | 508 | type LocalLiveSimplestreamsSuite struct { |
4491 | 509 | testing.BaseSuite | 509 | testbase.LoggingSuite |
4492 | 510 | Source simplestreams.DataSource | 510 | Source simplestreams.DataSource |
4493 | 511 | RequireSigned bool | 511 | RequireSigned bool |
4494 | 512 | DataType string | 512 | DataType string |
4495 | @@ -514,11 +514,11 @@ | |||
4496 | 514 | } | 514 | } |
4497 | 515 | 515 | ||
4498 | 516 | func (s *LocalLiveSimplestreamsSuite) SetUpSuite(c *gc.C) { | 516 | func (s *LocalLiveSimplestreamsSuite) SetUpSuite(c *gc.C) { |
4500 | 517 | s.BaseSuite.SetUpSuite(c) | 517 | s.LoggingSuite.SetUpSuite(c) |
4501 | 518 | } | 518 | } |
4502 | 519 | 519 | ||
4503 | 520 | func (s *LocalLiveSimplestreamsSuite) TearDownSuite(c *gc.C) { | 520 | func (s *LocalLiveSimplestreamsSuite) TearDownSuite(c *gc.C) { |
4505 | 521 | s.BaseSuite.TearDownSuite(c) | 521 | s.LoggingSuite.TearDownSuite(c) |
4506 | 522 | } | 522 | } |
4507 | 523 | 523 | ||
4508 | 524 | const ( | 524 | const ( |
4509 | 525 | 525 | ||
4510 | === modified file 'environs/sshstorage/storage_test.go' | |||
4511 | --- environs/sshstorage/storage_test.go 2014-05-20 04:27:02 +0000 | |||
4512 | +++ environs/sshstorage/storage_test.go 2014-05-22 14:33:28 +0000 | |||
4513 | @@ -22,13 +22,13 @@ | |||
4514 | 22 | gc "launchpad.net/gocheck" | 22 | gc "launchpad.net/gocheck" |
4515 | 23 | 23 | ||
4516 | 24 | "launchpad.net/juju-core/environs/storage" | 24 | "launchpad.net/juju-core/environs/storage" |
4518 | 25 | coretesting "launchpad.net/juju-core/testing" | 25 | "launchpad.net/juju-core/testing/testbase" |
4519 | 26 | "launchpad.net/juju-core/utils" | 26 | "launchpad.net/juju-core/utils" |
4520 | 27 | "launchpad.net/juju-core/utils/ssh" | 27 | "launchpad.net/juju-core/utils/ssh" |
4521 | 28 | ) | 28 | ) |
4522 | 29 | 29 | ||
4523 | 30 | type storageSuite struct { | 30 | type storageSuite struct { |
4525 | 31 | coretesting.BaseSuite | 31 | testbase.LoggingSuite |
4526 | 32 | bin string | 32 | bin string |
4527 | 33 | } | 33 | } |
4528 | 34 | 34 | ||
4529 | @@ -56,7 +56,7 @@ | |||
4530 | 56 | var flockBin string | 56 | var flockBin string |
4531 | 57 | 57 | ||
4532 | 58 | func (s *storageSuite) SetUpSuite(c *gc.C) { | 58 | func (s *storageSuite) SetUpSuite(c *gc.C) { |
4534 | 59 | s.BaseSuite.SetUpSuite(c) | 59 | s.LoggingSuite.SetUpSuite(c) |
4535 | 60 | 60 | ||
4536 | 61 | var err error | 61 | var err error |
4537 | 62 | flockBin, err = exec.LookPath("flock") | 62 | flockBin, err = exec.LookPath("flock") |
4538 | 63 | 63 | ||
4539 | === modified file 'environs/storage/storage_test.go' | |||
4540 | --- environs/storage/storage_test.go 2014-05-16 01:33:13 +0000 | |||
4541 | +++ environs/storage/storage_test.go 2014-05-22 14:33:28 +0000 | |||
4542 | @@ -27,7 +27,7 @@ | |||
4543 | 27 | var _ = gc.Suite(&datasourceSuite{}) | 27 | var _ = gc.Suite(&datasourceSuite{}) |
4544 | 28 | 28 | ||
4545 | 29 | type datasourceSuite struct { | 29 | type datasourceSuite struct { |
4547 | 30 | testing.FakeJujuHomeSuite | 30 | home *testing.FakeHome |
4548 | 31 | stor storage.Storage | 31 | stor storage.Storage |
4549 | 32 | baseURL string | 32 | baseURL string |
4550 | 33 | } | 33 | } |
4551 | @@ -41,8 +41,7 @@ | |||
4552 | 41 | ` | 41 | ` |
4553 | 42 | 42 | ||
4554 | 43 | func (s *datasourceSuite) SetUpTest(c *gc.C) { | 43 | func (s *datasourceSuite) SetUpTest(c *gc.C) { |
4557 | 44 | s.FakeJujuHomeSuite.SetUpTest(c) | 44 | s.home = testing.MakeFakeHome(c, existingEnv, "existing") |
4556 | 45 | testing.WriteEnvironments(c, existingEnv) | ||
4558 | 46 | environ, err := environs.PrepareFromName("test", testing.Context(c), configstore.NewMem()) | 45 | environ, err := environs.PrepareFromName("test", testing.Context(c), configstore.NewMem()) |
4559 | 47 | c.Assert(err, gc.IsNil) | 46 | c.Assert(err, gc.IsNil) |
4560 | 48 | s.stor = environ.Storage() | 47 | s.stor = environ.Storage() |
4561 | @@ -52,7 +51,7 @@ | |||
4562 | 52 | 51 | ||
4563 | 53 | func (s *datasourceSuite) TearDownTest(c *gc.C) { | 52 | func (s *datasourceSuite) TearDownTest(c *gc.C) { |
4564 | 54 | dummy.Reset() | 53 | dummy.Reset() |
4566 | 55 | s.FakeJujuHomeSuite.TearDownTest(c) | 54 | s.home.Restore() |
4567 | 56 | } | 55 | } |
4568 | 57 | 56 | ||
4569 | 58 | func (s *datasourceSuite) TestFetch(c *gc.C) { | 57 | func (s *datasourceSuite) TestFetch(c *gc.C) { |
4570 | 59 | 58 | ||
4571 | === modified file 'environs/sync/sync_test.go' | |||
4572 | --- environs/sync/sync_test.go 2014-05-20 00:01:25 +0000 | |||
4573 | +++ environs/sync/sync_test.go 2014-05-22 14:33:28 +0000 | |||
4574 | @@ -40,7 +40,7 @@ | |||
4575 | 40 | } | 40 | } |
4576 | 41 | 41 | ||
4577 | 42 | type syncSuite struct { | 42 | type syncSuite struct { |
4579 | 43 | coretesting.FakeJujuHomeSuite | 43 | testbase.LoggingSuite |
4580 | 44 | envtesting.ToolsFixture | 44 | envtesting.ToolsFixture |
4581 | 45 | targetEnv environs.Environ | 45 | targetEnv environs.Environ |
4582 | 46 | origVersion version.Binary | 46 | origVersion version.Binary |
4583 | @@ -53,21 +53,21 @@ | |||
4584 | 53 | var _ = gc.Suite(&badBuildSuite{}) | 53 | var _ = gc.Suite(&badBuildSuite{}) |
4585 | 54 | 54 | ||
4586 | 55 | func (s *syncSuite) setUpTest(c *gc.C) { | 55 | func (s *syncSuite) setUpTest(c *gc.C) { |
4588 | 56 | s.FakeJujuHomeSuite.SetUpTest(c) | 56 | s.LoggingSuite.SetUpTest(c) |
4589 | 57 | s.ToolsFixture.SetUpTest(c) | 57 | s.ToolsFixture.SetUpTest(c) |
4590 | 58 | s.origVersion = version.Current | 58 | s.origVersion = version.Current |
4591 | 59 | // It's important that this be v1.8.x to match the test data. | 59 | // It's important that this be v1.8.x to match the test data. |
4592 | 60 | version.Current.Number = version.MustParse("1.8.3") | 60 | version.Current.Number = version.MustParse("1.8.3") |
4593 | 61 | 61 | ||
4594 | 62 | // Create a target environments.yaml. | 62 | // Create a target environments.yaml. |
4596 | 63 | envConfig := ` | 63 | fakeHome := coretesting.MakeFakeHome(c, ` |
4597 | 64 | environments: | 64 | environments: |
4598 | 65 | test-target: | 65 | test-target: |
4599 | 66 | type: dummy | 66 | type: dummy |
4600 | 67 | state-server: false | 67 | state-server: false |
4601 | 68 | authorized-keys: "not-really-one" | 68 | authorized-keys: "not-really-one" |
4604 | 69 | ` | 69 | `) |
4605 | 70 | coretesting.WriteEnvironments(c, envConfig) | 70 | s.AddCleanup(func(*gc.C) { fakeHome.Restore() }) |
4606 | 71 | var err error | 71 | var err error |
4607 | 72 | s.targetEnv, err = environs.PrepareFromName("test-target", coretesting.Context(c), configstore.NewMem()) | 72 | s.targetEnv, err = environs.PrepareFromName("test-target", coretesting.Context(c), configstore.NewMem()) |
4608 | 73 | c.Assert(err, gc.IsNil) | 73 | c.Assert(err, gc.IsNil) |
4609 | @@ -100,7 +100,7 @@ | |||
4610 | 100 | dummy.Reset() | 100 | dummy.Reset() |
4611 | 101 | version.Current = s.origVersion | 101 | version.Current = s.origVersion |
4612 | 102 | s.ToolsFixture.TearDownTest(c) | 102 | s.ToolsFixture.TearDownTest(c) |
4614 | 103 | s.FakeJujuHomeSuite.TearDownTest(c) | 103 | s.LoggingSuite.TearDownTest(c) |
4615 | 104 | } | 104 | } |
4616 | 105 | 105 | ||
4617 | 106 | var tests = []struct { | 106 | var tests = []struct { |
4618 | @@ -255,12 +255,12 @@ | |||
4619 | 255 | 255 | ||
4620 | 256 | type uploadSuite struct { | 256 | type uploadSuite struct { |
4621 | 257 | env environs.Environ | 257 | env environs.Environ |
4623 | 258 | coretesting.FakeJujuHomeSuite | 258 | testbase.LoggingSuite |
4624 | 259 | envtesting.ToolsFixture | 259 | envtesting.ToolsFixture |
4625 | 260 | } | 260 | } |
4626 | 261 | 261 | ||
4627 | 262 | func (s *uploadSuite) SetUpTest(c *gc.C) { | 262 | func (s *uploadSuite) SetUpTest(c *gc.C) { |
4629 | 263 | s.FakeJujuHomeSuite.SetUpTest(c) | 263 | s.LoggingSuite.SetUpTest(c) |
4630 | 264 | s.ToolsFixture.SetUpTest(c) | 264 | s.ToolsFixture.SetUpTest(c) |
4631 | 265 | // We only want to use simplestreams to find any synced tools. | 265 | // We only want to use simplestreams to find any synced tools. |
4632 | 266 | cfg, err := config.New(config.NoDefaults, dummy.SampleConfig()) | 266 | cfg, err := config.New(config.NoDefaults, dummy.SampleConfig()) |
4633 | @@ -272,7 +272,7 @@ | |||
4634 | 272 | func (s *uploadSuite) TearDownTest(c *gc.C) { | 272 | func (s *uploadSuite) TearDownTest(c *gc.C) { |
4635 | 273 | dummy.Reset() | 273 | dummy.Reset() |
4636 | 274 | s.ToolsFixture.TearDownTest(c) | 274 | s.ToolsFixture.TearDownTest(c) |
4638 | 275 | s.FakeJujuHomeSuite.TearDownTest(c) | 275 | s.LoggingSuite.TearDownTest(c) |
4639 | 276 | } | 276 | } |
4640 | 277 | 277 | ||
4641 | 278 | func (s *uploadSuite) TestUpload(c *gc.C) { | 278 | func (s *uploadSuite) TestUpload(c *gc.C) { |
4642 | 279 | 279 | ||
4643 | === modified file 'environs/testing/tools.go' | |||
4644 | --- environs/testing/tools.go 2014-05-19 06:06:35 +0000 | |||
4645 | +++ environs/testing/tools.go 2014-05-22 14:33:28 +0000 | |||
4646 | @@ -30,11 +30,6 @@ | |||
4647 | 30 | type ToolsFixture struct { | 30 | type ToolsFixture struct { |
4648 | 31 | origDefaultURL string | 31 | origDefaultURL string |
4649 | 32 | DefaultBaseURL string | 32 | DefaultBaseURL string |
4650 | 33 | |||
4651 | 34 | // UploadArches holds the architectures of tools to | ||
4652 | 35 | // upload in UploadFakeTools. If empty, it will default | ||
4653 | 36 | // to just version.Current.Arch. | ||
4654 | 37 | UploadArches []string | ||
4655 | 38 | } | 33 | } |
4656 | 39 | 34 | ||
4657 | 40 | func (s *ToolsFixture) SetUpTest(c *gc.C) { | 35 | func (s *ToolsFixture) SetUpTest(c *gc.C) { |
4658 | @@ -46,26 +41,6 @@ | |||
4659 | 46 | envtools.DefaultBaseURL = s.origDefaultURL | 41 | envtools.DefaultBaseURL = s.origDefaultURL |
4660 | 47 | } | 42 | } |
4661 | 48 | 43 | ||
4662 | 49 | // UploadFakeTools uploads fake tools of the architectures in | ||
4663 | 50 | // s.UploadArches for each LTS release to the specified storage. | ||
4664 | 51 | func (s *ToolsFixture) UploadFakeTools(c *gc.C, stor storage.Storage) { | ||
4665 | 52 | arches := s.UploadArches | ||
4666 | 53 | if len(arches) == 0 { | ||
4667 | 54 | arches = []string{version.Current.Arch} | ||
4668 | 55 | } | ||
4669 | 56 | var versions []version.Binary | ||
4670 | 57 | for _, arch := range arches { | ||
4671 | 58 | v := version.Current | ||
4672 | 59 | v.Arch = arch | ||
4673 | 60 | for _, series := range bootstrap.ToolsLtsSeries { | ||
4674 | 61 | v.Series = series | ||
4675 | 62 | versions = append(versions, v) | ||
4676 | 63 | } | ||
4677 | 64 | } | ||
4678 | 65 | _, err := UploadFakeToolsVersions(stor, versions...) | ||
4679 | 66 | c.Assert(err, gc.IsNil) | ||
4680 | 67 | } | ||
4681 | 68 | |||
4682 | 69 | // RemoveFakeToolsMetadata deletes the fake simplestreams tools metadata from the supplied storage. | 44 | // RemoveFakeToolsMetadata deletes the fake simplestreams tools metadata from the supplied storage. |
4683 | 70 | func RemoveFakeToolsMetadata(c *gc.C, stor storage.Storage) { | 45 | func RemoveFakeToolsMetadata(c *gc.C, stor storage.Storage) { |
4684 | 71 | files := []string{simplestreams.UnsignedIndex, envtools.ProductMetadataPath} | 46 | files := []string{simplestreams.UnsignedIndex, envtools.ProductMetadataPath} |
4685 | 72 | 47 | ||
4686 | === modified file 'environs/tools/build_test.go' | |||
4687 | --- environs/tools/build_test.go 2014-05-20 04:27:02 +0000 | |||
4688 | +++ environs/tools/build_test.go 2014-05-22 14:33:28 +0000 | |||
4689 | @@ -12,11 +12,11 @@ | |||
4690 | 12 | gc "launchpad.net/gocheck" | 12 | gc "launchpad.net/gocheck" |
4691 | 13 | 13 | ||
4692 | 14 | "launchpad.net/juju-core/environs/tools" | 14 | "launchpad.net/juju-core/environs/tools" |
4694 | 15 | "launchpad.net/juju-core/testing" | 15 | "launchpad.net/juju-core/testing/testbase" |
4695 | 16 | ) | 16 | ) |
4696 | 17 | 17 | ||
4697 | 18 | type buildSuite struct { | 18 | type buildSuite struct { |
4699 | 19 | testing.BaseSuite | 19 | testbase.LoggingSuite |
4700 | 20 | restore func() | 20 | restore func() |
4701 | 21 | cwd string | 21 | cwd string |
4702 | 22 | filePath string | 22 | filePath string |
4703 | @@ -25,7 +25,7 @@ | |||
4704 | 25 | var _ = gc.Suite(&buildSuite{}) | 25 | var _ = gc.Suite(&buildSuite{}) |
4705 | 26 | 26 | ||
4706 | 27 | func (b *buildSuite) SetUpTest(c *gc.C) { | 27 | func (b *buildSuite) SetUpTest(c *gc.C) { |
4708 | 28 | b.BaseSuite.SetUpTest(c) | 28 | b.LoggingSuite.SetUpTest(c) |
4709 | 29 | 29 | ||
4710 | 30 | dir1 := c.MkDir() | 30 | dir1 := c.MkDir() |
4711 | 31 | dir2 := c.MkDir() | 31 | dir2 := c.MkDir() |
4712 | @@ -59,7 +59,7 @@ | |||
4713 | 59 | 59 | ||
4714 | 60 | func (b *buildSuite) TearDownTest(c *gc.C) { | 60 | func (b *buildSuite) TearDownTest(c *gc.C) { |
4715 | 61 | b.restore() | 61 | b.restore() |
4717 | 62 | b.BaseSuite.TearDownTest(c) | 62 | b.LoggingSuite.TearDownTest(c) |
4718 | 63 | } | 63 | } |
4719 | 64 | 64 | ||
4720 | 65 | func (b *buildSuite) TestFindExecutable(c *gc.C) { | 65 | func (b *buildSuite) TestFindExecutable(c *gc.C) { |
4721 | 66 | 66 | ||
4722 | === modified file 'environs/tools/storage_test.go' | |||
4723 | --- environs/tools/storage_test.go 2014-05-20 04:27:02 +0000 | |||
4724 | +++ environs/tools/storage_test.go 2014-05-22 14:33:28 +0000 | |||
4725 | @@ -13,21 +13,21 @@ | |||
4726 | 13 | envtools "launchpad.net/juju-core/environs/tools" | 13 | envtools "launchpad.net/juju-core/environs/tools" |
4727 | 14 | "launchpad.net/juju-core/provider/dummy" | 14 | "launchpad.net/juju-core/provider/dummy" |
4728 | 15 | "launchpad.net/juju-core/testing" | 15 | "launchpad.net/juju-core/testing" |
4730 | 16 | coretesting "launchpad.net/juju-core/testing" | 16 | "launchpad.net/juju-core/testing/testbase" |
4731 | 17 | coretools "launchpad.net/juju-core/tools" | 17 | coretools "launchpad.net/juju-core/tools" |
4732 | 18 | "launchpad.net/juju-core/version" | 18 | "launchpad.net/juju-core/version" |
4733 | 19 | ) | 19 | ) |
4734 | 20 | 20 | ||
4735 | 21 | type StorageSuite struct { | 21 | type StorageSuite struct { |
4736 | 22 | env environs.Environ | 22 | env environs.Environ |
4738 | 23 | coretesting.BaseSuite | 23 | testbase.LoggingSuite |
4739 | 24 | dataDir string | 24 | dataDir string |
4740 | 25 | } | 25 | } |
4741 | 26 | 26 | ||
4742 | 27 | var _ = gc.Suite(&StorageSuite{}) | 27 | var _ = gc.Suite(&StorageSuite{}) |
4743 | 28 | 28 | ||
4744 | 29 | func (s *StorageSuite) SetUpTest(c *gc.C) { | 29 | func (s *StorageSuite) SetUpTest(c *gc.C) { |
4746 | 30 | s.BaseSuite.SetUpTest(c) | 30 | s.LoggingSuite.SetUpTest(c) |
4747 | 31 | cfg, err := config.New(config.NoDefaults, dummy.SampleConfig()) | 31 | cfg, err := config.New(config.NoDefaults, dummy.SampleConfig()) |
4748 | 32 | c.Assert(err, gc.IsNil) | 32 | c.Assert(err, gc.IsNil) |
4749 | 33 | s.env, err = environs.Prepare(cfg, testing.Context(c), configstore.NewMem()) | 33 | s.env, err = environs.Prepare(cfg, testing.Context(c), configstore.NewMem()) |
4750 | @@ -37,7 +37,7 @@ | |||
4751 | 37 | 37 | ||
4752 | 38 | func (s *StorageSuite) TearDownTest(c *gc.C) { | 38 | func (s *StorageSuite) TearDownTest(c *gc.C) { |
4753 | 39 | dummy.Reset() | 39 | dummy.Reset() |
4755 | 40 | s.BaseSuite.TearDownTest(c) | 40 | s.LoggingSuite.TearDownTest(c) |
4756 | 41 | } | 41 | } |
4757 | 42 | 42 | ||
4758 | 43 | func (s *StorageSuite) TestStorageName(c *gc.C) { | 43 | func (s *StorageSuite) TestStorageName(c *gc.C) { |
4759 | 44 | 44 | ||
4760 | === modified file 'environs/tools/tools_test.go' | |||
4761 | --- environs/tools/tools_test.go 2014-05-21 22:15:10 +0000 | |||
4762 | +++ environs/tools/tools_test.go 2014-05-22 14:33:28 +0000 | |||
4763 | @@ -21,14 +21,14 @@ | |||
4764 | 21 | toolstesting "launchpad.net/juju-core/environs/tools/testing" | 21 | toolstesting "launchpad.net/juju-core/environs/tools/testing" |
4765 | 22 | "launchpad.net/juju-core/provider/dummy" | 22 | "launchpad.net/juju-core/provider/dummy" |
4766 | 23 | "launchpad.net/juju-core/testing" | 23 | "launchpad.net/juju-core/testing" |
4768 | 24 | coretesting "launchpad.net/juju-core/testing" | 24 | "launchpad.net/juju-core/testing/testbase" |
4769 | 25 | coretools "launchpad.net/juju-core/tools" | 25 | coretools "launchpad.net/juju-core/tools" |
4770 | 26 | "launchpad.net/juju-core/version" | 26 | "launchpad.net/juju-core/version" |
4771 | 27 | ) | 27 | ) |
4772 | 28 | 28 | ||
4773 | 29 | type SimpleStreamsToolsSuite struct { | 29 | type SimpleStreamsToolsSuite struct { |
4774 | 30 | env environs.Environ | 30 | env environs.Environ |
4776 | 31 | coretesting.BaseSuite | 31 | testbase.LoggingSuite |
4777 | 32 | envtesting.ToolsFixture | 32 | envtesting.ToolsFixture |
4778 | 33 | origCurrentVersion version.Binary | 33 | origCurrentVersion version.Binary |
4779 | 34 | customToolsDir string | 34 | customToolsDir string |
4780 | @@ -40,14 +40,14 @@ | |||
4781 | 40 | } | 40 | } |
4782 | 41 | 41 | ||
4783 | 42 | func (s *SimpleStreamsToolsSuite) SetUpSuite(c *gc.C) { | 42 | func (s *SimpleStreamsToolsSuite) SetUpSuite(c *gc.C) { |
4785 | 43 | s.BaseSuite.SetUpSuite(c) | 43 | s.LoggingSuite.SetUpSuite(c) |
4786 | 44 | s.customToolsDir = c.MkDir() | 44 | s.customToolsDir = c.MkDir() |
4787 | 45 | s.publicToolsDir = c.MkDir() | 45 | s.publicToolsDir = c.MkDir() |
4788 | 46 | } | 46 | } |
4789 | 47 | 47 | ||
4790 | 48 | func (s *SimpleStreamsToolsSuite) SetUpTest(c *gc.C) { | 48 | func (s *SimpleStreamsToolsSuite) SetUpTest(c *gc.C) { |
4791 | 49 | s.ToolsFixture.DefaultBaseURL = "file://" + s.publicToolsDir | 49 | s.ToolsFixture.DefaultBaseURL = "file://" + s.publicToolsDir |
4793 | 50 | s.BaseSuite.SetUpTest(c) | 50 | s.LoggingSuite.SetUpTest(c) |
4794 | 51 | s.ToolsFixture.SetUpTest(c) | 51 | s.ToolsFixture.SetUpTest(c) |
4795 | 52 | s.origCurrentVersion = version.Current | 52 | s.origCurrentVersion = version.Current |
4796 | 53 | s.reset(c, nil) | 53 | s.reset(c, nil) |
4797 | @@ -57,7 +57,7 @@ | |||
4798 | 57 | dummy.Reset() | 57 | dummy.Reset() |
4799 | 58 | version.Current = s.origCurrentVersion | 58 | version.Current = s.origCurrentVersion |
4800 | 59 | s.ToolsFixture.TearDownTest(c) | 59 | s.ToolsFixture.TearDownTest(c) |
4802 | 60 | s.BaseSuite.TearDownTest(c) | 60 | s.LoggingSuite.TearDownTest(c) |
4803 | 61 | } | 61 | } |
4804 | 62 | 62 | ||
4805 | 63 | func (s *SimpleStreamsToolsSuite) reset(c *gc.C, attrs map[string]interface{}) { | 63 | func (s *SimpleStreamsToolsSuite) reset(c *gc.C, attrs map[string]interface{}) { |
4806 | 64 | 64 | ||
4807 | === modified file 'environs/tools/urls_test.go' | |||
4808 | --- environs/tools/urls_test.go 2014-05-15 05:14:01 +0000 | |||
4809 | +++ environs/tools/urls_test.go 2014-05-22 14:33:28 +0000 | |||
4810 | @@ -17,18 +17,21 @@ | |||
4811 | 17 | "launchpad.net/juju-core/environs/tools" | 17 | "launchpad.net/juju-core/environs/tools" |
4812 | 18 | "launchpad.net/juju-core/provider/dummy" | 18 | "launchpad.net/juju-core/provider/dummy" |
4813 | 19 | "launchpad.net/juju-core/testing" | 19 | "launchpad.net/juju-core/testing" |
4814 | 20 | coretesting "launchpad.net/juju-core/testing" | ||
4815 | 21 | ) | 20 | ) |
4816 | 22 | 21 | ||
4817 | 23 | type URLsSuite struct { | 22 | type URLsSuite struct { |
4819 | 24 | coretesting.BaseSuite | 23 | home *testing.FakeHome |
4820 | 25 | } | 24 | } |
4821 | 26 | 25 | ||
4822 | 27 | var _ = gc.Suite(&URLsSuite{}) | 26 | var _ = gc.Suite(&URLsSuite{}) |
4823 | 28 | 27 | ||
4824 | 28 | func (s *URLsSuite) SetUpTest(c *gc.C) { | ||
4825 | 29 | s.home = testing.MakeEmptyFakeHome(c) | ||
4826 | 30 | } | ||
4827 | 31 | |||
4828 | 29 | func (s *URLsSuite) TearDownTest(c *gc.C) { | 32 | func (s *URLsSuite) TearDownTest(c *gc.C) { |
4829 | 33 | s.home.Restore() | ||
4830 | 30 | dummy.Reset() | 34 | dummy.Reset() |
4831 | 31 | s.BaseSuite.TearDownTest(c) | ||
4832 | 32 | } | 35 | } |
4833 | 33 | 36 | ||
4834 | 34 | func (s *URLsSuite) env(c *gc.C, toolsMetadataURL string) environs.Environ { | 37 | func (s *URLsSuite) env(c *gc.C, toolsMetadataURL string) environs.Environ { |
4835 | 35 | 38 | ||
4836 | === modified file 'environs/tools/validation_test.go' | |||
4837 | --- environs/tools/validation_test.go 2014-05-20 04:27:02 +0000 | |||
4838 | +++ environs/tools/validation_test.go 2014-05-22 14:33:28 +0000 | |||
4839 | @@ -10,12 +10,12 @@ | |||
4840 | 10 | 10 | ||
4841 | 11 | "launchpad.net/juju-core/environs/filestorage" | 11 | "launchpad.net/juju-core/environs/filestorage" |
4842 | 12 | "launchpad.net/juju-core/environs/simplestreams" | 12 | "launchpad.net/juju-core/environs/simplestreams" |
4844 | 13 | "launchpad.net/juju-core/testing" | 13 | "launchpad.net/juju-core/testing/testbase" |
4845 | 14 | "launchpad.net/juju-core/utils" | 14 | "launchpad.net/juju-core/utils" |
4846 | 15 | ) | 15 | ) |
4847 | 16 | 16 | ||
4848 | 17 | type ValidateSuite struct { | 17 | type ValidateSuite struct { |
4850 | 18 | testing.BaseSuite | 18 | testbase.LoggingSuite |
4851 | 19 | metadataDir string | 19 | metadataDir string |
4852 | 20 | } | 20 | } |
4853 | 21 | 21 | ||
4854 | @@ -40,7 +40,7 @@ | |||
4855 | 40 | } | 40 | } |
4856 | 41 | 41 | ||
4857 | 42 | func (s *ValidateSuite) SetUpTest(c *gc.C) { | 42 | func (s *ValidateSuite) SetUpTest(c *gc.C) { |
4859 | 43 | s.BaseSuite.SetUpTest(c) | 43 | s.LoggingSuite.SetUpTest(c) |
4860 | 44 | s.metadataDir = c.MkDir() | 44 | s.metadataDir = c.MkDir() |
4861 | 45 | } | 45 | } |
4862 | 46 | 46 | ||
4863 | 47 | 47 | ||
4864 | === modified file 'instance/address_test.go' | |||
4865 | --- instance/address_test.go 2014-05-20 04:27:02 +0000 | |||
4866 | +++ instance/address_test.go 2014-05-22 14:33:28 +0000 | |||
4867 | @@ -7,11 +7,11 @@ | |||
4868 | 7 | jc "github.com/juju/testing/checkers" | 7 | jc "github.com/juju/testing/checkers" |
4869 | 8 | gc "launchpad.net/gocheck" | 8 | gc "launchpad.net/gocheck" |
4870 | 9 | 9 | ||
4872 | 10 | "launchpad.net/juju-core/testing" | 10 | "launchpad.net/juju-core/testing/testbase" |
4873 | 11 | ) | 11 | ) |
4874 | 12 | 12 | ||
4875 | 13 | type AddressSuite struct { | 13 | type AddressSuite struct { |
4877 | 14 | testing.BaseSuite | 14 | testbase.LoggingSuite |
4878 | 15 | } | 15 | } |
4879 | 16 | 16 | ||
4880 | 17 | var _ = gc.Suite(&AddressSuite{}) | 17 | var _ = gc.Suite(&AddressSuite{}) |
4881 | 18 | 18 | ||
4882 | === modified file 'juju/apiconn_test.go' | |||
4883 | --- juju/apiconn_test.go 2014-05-16 01:33:13 +0000 | |||
4884 | +++ juju/apiconn_test.go 2014-05-22 14:33:28 +0000 | |||
4885 | @@ -23,24 +23,25 @@ | |||
4886 | 23 | "launchpad.net/juju-core/provider/dummy" | 23 | "launchpad.net/juju-core/provider/dummy" |
4887 | 24 | "launchpad.net/juju-core/state/api" | 24 | "launchpad.net/juju-core/state/api" |
4888 | 25 | coretesting "launchpad.net/juju-core/testing" | 25 | coretesting "launchpad.net/juju-core/testing" |
4889 | 26 | "launchpad.net/juju-core/testing/testbase" | ||
4890 | 26 | ) | 27 | ) |
4891 | 27 | 28 | ||
4892 | 28 | type NewAPIConnSuite struct { | 29 | type NewAPIConnSuite struct { |
4894 | 29 | coretesting.FakeJujuHomeSuite | 30 | testbase.LoggingSuite |
4895 | 30 | envtesting.ToolsFixture | 31 | envtesting.ToolsFixture |
4896 | 31 | } | 32 | } |
4897 | 32 | 33 | ||
4898 | 33 | var _ = gc.Suite(&NewAPIConnSuite{}) | 34 | var _ = gc.Suite(&NewAPIConnSuite{}) |
4899 | 34 | 35 | ||
4900 | 35 | func (cs *NewAPIConnSuite) SetUpTest(c *gc.C) { | 36 | func (cs *NewAPIConnSuite) SetUpTest(c *gc.C) { |
4902 | 36 | cs.FakeJujuHomeSuite.SetUpTest(c) | 37 | cs.LoggingSuite.SetUpTest(c) |
4903 | 37 | cs.ToolsFixture.SetUpTest(c) | 38 | cs.ToolsFixture.SetUpTest(c) |
4904 | 38 | } | 39 | } |
4905 | 39 | 40 | ||
4906 | 40 | func (cs *NewAPIConnSuite) TearDownTest(c *gc.C) { | 41 | func (cs *NewAPIConnSuite) TearDownTest(c *gc.C) { |
4907 | 41 | dummy.Reset() | 42 | dummy.Reset() |
4908 | 42 | cs.ToolsFixture.TearDownTest(c) | 43 | cs.ToolsFixture.TearDownTest(c) |
4910 | 43 | cs.FakeJujuHomeSuite.TearDownTest(c) | 44 | cs.LoggingSuite.TearDownTest(c) |
4911 | 44 | } | 45 | } |
4912 | 45 | 46 | ||
4913 | 46 | func (*NewAPIConnSuite) TestNewConn(c *gc.C) { | 47 | func (*NewAPIConnSuite) TestNewConn(c *gc.C) { |
4914 | @@ -75,18 +76,18 @@ | |||
4915 | 75 | } | 76 | } |
4916 | 76 | 77 | ||
4917 | 77 | type NewAPIClientSuite struct { | 78 | type NewAPIClientSuite struct { |
4919 | 78 | coretesting.FakeJujuHomeSuite | 79 | testbase.LoggingSuite |
4920 | 79 | } | 80 | } |
4921 | 80 | 81 | ||
4922 | 81 | var _ = gc.Suite(&NewAPIClientSuite{}) | 82 | var _ = gc.Suite(&NewAPIClientSuite{}) |
4923 | 82 | 83 | ||
4924 | 83 | func (cs *NewAPIClientSuite) TearDownTest(c *gc.C) { | 84 | func (cs *NewAPIClientSuite) TearDownTest(c *gc.C) { |
4925 | 84 | dummy.Reset() | 85 | dummy.Reset() |
4927 | 85 | cs.FakeJujuHomeSuite.TearDownTest(c) | 86 | cs.LoggingSuite.TearDownTest(c) |
4928 | 86 | } | 87 | } |
4929 | 87 | 88 | ||
4930 | 88 | func (s *NewAPIClientSuite) TestNameDefault(c *gc.C) { | 89 | func (s *NewAPIClientSuite) TestNameDefault(c *gc.C) { |
4932 | 89 | coretesting.WriteEnvironments(c, coretesting.MultipleEnvConfig) | 90 | defer coretesting.MakeMultipleEnvHome(c).Restore() |
4933 | 90 | // The connection logic should not delay the config connection | 91 | // The connection logic should not delay the config connection |
4934 | 91 | // at all when there is no environment info available. | 92 | // at all when there is no environment info available. |
4935 | 92 | // Make sure of that by providing a suitably long delay | 93 | // Make sure of that by providing a suitably long delay |
4936 | @@ -106,7 +107,7 @@ | |||
4937 | 106 | } | 107 | } |
4938 | 107 | 108 | ||
4939 | 108 | func (*NewAPIClientSuite) TestNameNotDefault(c *gc.C) { | 109 | func (*NewAPIClientSuite) TestNameNotDefault(c *gc.C) { |
4941 | 109 | coretesting.WriteEnvironments(c, coretesting.MultipleEnvConfig) | 110 | defer coretesting.MakeMultipleEnvHome(c).Restore() |
4942 | 110 | envName := coretesting.SampleCertName + "-2" | 111 | envName := coretesting.SampleCertName + "-2" |
4943 | 111 | bootstrapEnv(c, envName, defaultConfigStore(c)) | 112 | bootstrapEnv(c, envName, defaultConfigStore(c)) |
4944 | 112 | apiclient, err := juju.NewAPIClientFromName(envName) | 113 | apiclient, err := juju.NewAPIClientFromName(envName) |
4945 | @@ -116,6 +117,7 @@ | |||
4946 | 116 | } | 117 | } |
4947 | 117 | 118 | ||
4948 | 118 | func (s *NewAPIClientSuite) TestWithInfoOnly(c *gc.C) { | 119 | func (s *NewAPIClientSuite) TestWithInfoOnly(c *gc.C) { |
4949 | 120 | defer coretesting.MakeEmptyFakeHome(c).Restore() | ||
4950 | 119 | store := newConfigStore("noconfig", dummyStoreInfo) | 121 | store := newConfigStore("noconfig", dummyStoreInfo) |
4951 | 120 | 122 | ||
4952 | 121 | called := 0 | 123 | called := 0 |
4953 | @@ -155,7 +157,7 @@ | |||
4954 | 155 | } | 157 | } |
4955 | 156 | 158 | ||
4956 | 157 | func (s *NewAPIClientSuite) TestWithConfigAndNoInfo(c *gc.C) { | 159 | func (s *NewAPIClientSuite) TestWithConfigAndNoInfo(c *gc.C) { |
4958 | 158 | coretesting.MakeSampleJujuHome(c) | 160 | defer coretesting.MakeSampleHome(c).Restore() |
4959 | 159 | 161 | ||
4960 | 160 | store := newConfigStore(coretesting.SampleEnvName, &environInfo{ | 162 | store := newConfigStore(coretesting.SampleEnvName, &environInfo{ |
4961 | 161 | bootstrapConfig: map[string]interface{}{ | 163 | bootstrapConfig: map[string]interface{}{ |
4962 | @@ -208,6 +210,7 @@ | |||
4963 | 208 | } | 210 | } |
4964 | 209 | 211 | ||
4965 | 210 | func (s *NewAPIClientSuite) TestWithInfoError(c *gc.C) { | 212 | func (s *NewAPIClientSuite) TestWithInfoError(c *gc.C) { |
4966 | 213 | defer coretesting.MakeEmptyFakeHome(c).Restore() | ||
4967 | 211 | expectErr := fmt.Errorf("an error") | 214 | expectErr := fmt.Errorf("an error") |
4968 | 212 | store := newConfigStoreWithError(expectErr) | 215 | store := newConfigStoreWithError(expectErr) |
4969 | 213 | client, err := juju.NewAPIFromStore("noconfig", store, panicAPIOpen) | 216 | client, err := juju.NewAPIFromStore("noconfig", store, panicAPIOpen) |
4970 | @@ -216,6 +219,7 @@ | |||
4971 | 216 | } | 219 | } |
4972 | 217 | 220 | ||
4973 | 218 | func (s *NewAPIClientSuite) TestWithInfoNoAddresses(c *gc.C) { | 221 | func (s *NewAPIClientSuite) TestWithInfoNoAddresses(c *gc.C) { |
4974 | 222 | defer coretesting.MakeEmptyFakeHome(c).Restore() | ||
4975 | 219 | store := newConfigStore("noconfig", &environInfo{ | 223 | store := newConfigStore("noconfig", &environInfo{ |
4976 | 220 | endpoint: configstore.APIEndpoint{ | 224 | endpoint: configstore.APIEndpoint{ |
4977 | 221 | Addresses: []string{}, | 225 | Addresses: []string{}, |
4978 | @@ -228,6 +232,7 @@ | |||
4979 | 228 | } | 232 | } |
4980 | 229 | 233 | ||
4981 | 230 | func (s *NewAPIClientSuite) TestWithInfoAPIOpenError(c *gc.C) { | 234 | func (s *NewAPIClientSuite) TestWithInfoAPIOpenError(c *gc.C) { |
4982 | 235 | defer coretesting.MakeEmptyFakeHome(c).Restore() | ||
4983 | 231 | store := newConfigStore("noconfig", &environInfo{ | 236 | store := newConfigStore("noconfig", &environInfo{ |
4984 | 232 | endpoint: configstore.APIEndpoint{ | 237 | endpoint: configstore.APIEndpoint{ |
4985 | 233 | Addresses: []string{"foo.invalid"}, | 238 | Addresses: []string{"foo.invalid"}, |
4986 | @@ -244,7 +249,7 @@ | |||
4987 | 244 | } | 249 | } |
4988 | 245 | 250 | ||
4989 | 246 | func (s *NewAPIClientSuite) TestWithSlowInfoConnect(c *gc.C) { | 251 | func (s *NewAPIClientSuite) TestWithSlowInfoConnect(c *gc.C) { |
4991 | 247 | coretesting.MakeSampleJujuHome(c) | 252 | defer coretesting.MakeSampleHome(c).Restore() |
4992 | 248 | store := configstore.NewMem() | 253 | store := configstore.NewMem() |
4993 | 249 | bootstrapEnv(c, coretesting.SampleEnvName, store) | 254 | bootstrapEnv(c, coretesting.SampleEnvName, store) |
4994 | 250 | setEndpointAddress(c, store, coretesting.SampleEnvName, "infoapi.invalid") | 255 | setEndpointAddress(c, store, coretesting.SampleEnvName, "infoapi.invalid") |
4995 | @@ -328,7 +333,7 @@ | |||
4996 | 328 | } | 333 | } |
4997 | 329 | 334 | ||
4998 | 330 | func (s *NewAPIClientSuite) TestWithSlowConfigConnect(c *gc.C) { | 335 | func (s *NewAPIClientSuite) TestWithSlowConfigConnect(c *gc.C) { |
5000 | 331 | coretesting.MakeSampleJujuHome(c) | 336 | defer coretesting.MakeSampleHome(c).Restore() |
Reviewers: mp+219703_ code.launchpad. net,
Message:
Please take a look.
Description:
rsyslog: ensure logs accumulate on state machines
Added a WatchForRsyslog Changes watcher and extended the API with
GetRsyslongConfig. Changed the rsyslog worker to use these additions.
https:/ /code.launchpad .net/~wwitzel3/ juju-core/ 009-ha- rsyslog- api/+merge/ 219703
(do not edit description out of merge proposal)
Please review this at https:/ /codereview. appspot. com/94510043/
Affected files (+272, -49 lines): params/ params. go rsyslog/ rsyslog. go rsyslog/ rsyslog_ test.go /rsyslog/ config. go /rsyslog/ rsyslog. go /rsyslog/ rsyslog_ test.go rsyslog/ rsyslog_ test.go rsyslog/ worker. go
A [revision details]
M state/api/
M state/api/
M state/api/
A state/apiserver
M state/apiserver
M state/apiserver
M worker/
M worker/