func (s *initialisationSuite) TestDetectionError(c *gc.C) { scriptResponse := strings.Join([]string{ "edgy", "armv4", "MemTotal: 4096 kB", "processor: 0", }, "\n") // if the script fails for whatever reason, then checkProvisioned // will return an error. stderr will be included in the error message. defer installFakeSSH(c, manual.DetectionScript, []string{scriptResponse, "oh noes"}, 33)() hc, _, err := manual.DetectSeriesAndHardwareCharacteristics("hostname") c.Assert(err, gc.ErrorMatches, "subprocess encountered error code 33 \\(oh noes\\)") // if the script doesn't fail, stderr is simply ignored. defer installFakeSSH(c, manual.DetectionScript, []string{scriptResponse, "non-empty-stderr"}, 0)() hc, _, err = manual.DetectSeriesAndHardwareCharacteristics("hostname") c.Assert(err, gc.IsNil) c.Assert(hc.String(), gc.Equals, "arch=armhf cpu-cores=1 mem=4M") }
func (s *initialisationSuite) TestDetectSeries(c *gc.C) { response := strings.Join([]string{ "edgy", "armv4", "MemTotal: 4096 kB", "processor: 0", }, "\n") defer installFakeSSH(c, manual.DetectionScript, response, 0)() _, series, err := manual.DetectSeriesAndHardwareCharacteristics("whatever") c.Assert(err, gc.IsNil) c.Assert(series, gc.Equals, "edgy") }
func (s *initialisationSuite) TestDetectHardwareCharacteristics(c *gc.C) { tests := []struct { summary string scriptResponse []string expectedHc string }{{ "Single CPU socket, single core, no hyper-threading", []string{"edgy", "armv4", "MemTotal: 4096 kB", "processor: 0"}, "arch=armhf cpu-cores=1 mem=4M", }, { "Single CPU socket, single core, hyper-threading", []string{ "edgy", "armv4", "MemTotal: 4096 kB", "processor: 0", "physical id: 0", "cpu cores: 1", "processor: 1", "physical id: 0", "cpu cores: 1", }, "arch=armhf cpu-cores=1 mem=4M", }, { "Single CPU socket, dual-core, no hyper-threading", []string{ "edgy", "armv4", "MemTotal: 4096 kB", "processor: 0", "physical id: 0", "cpu cores: 2", "processor: 1", "physical id: 0", "cpu cores: 2", }, "arch=armhf cpu-cores=2 mem=4M", }, { "Dual CPU socket, each single-core, hyper-threading", []string{ "edgy", "armv4", "MemTotal: 4096 kB", "processor: 0", "physical id: 0", "cpu cores: 1", "processor: 1", "physical id: 0", "cpu cores: 1", "processor: 2", "physical id: 1", "cpu cores: 1", "processor: 3", "physical id: 1", "cpu cores: 1", }, "arch=armhf cpu-cores=2 mem=4M", }} for i, test := range tests { c.Logf("test %d: %s", i, test.summary) scriptResponse := strings.Join(test.scriptResponse, "\n") defer installFakeSSH(c, manual.DetectionScript, scriptResponse, 0)() hc, _, err := manual.DetectSeriesAndHardwareCharacteristics("hostname") c.Assert(err, gc.IsNil) c.Assert(hc.String(), gc.Equals, test.expectedHc) } }