diff --git a/_proto/hapi/release/test_run.proto b/_proto/hapi/release/test_run.proto
index a441e729fcbd304643c72a2020d869a561f49185..60734ae0384a68fd7793efb0de5ae268cb68536e 100644
--- a/_proto/hapi/release/test_run.proto
+++ b/_proto/hapi/release/test_run.proto
@@ -26,6 +26,7 @@ message TestRun {
         UNKNOWN = 0;
         SUCCESS = 1;
         FAILURE = 2;
+        RUNNING = 3;
     }
 
     string name = 1;
diff --git a/_proto/hapi/services/tiller.proto b/_proto/hapi/services/tiller.proto
index f16d68238989c908c9fb79b11e0369ab9013bacb..f29c364c0a8d167d32075c91938489bcc661a8c5 100644
--- a/_proto/hapi/services/tiller.proto
+++ b/_proto/hapi/services/tiller.proto
@@ -20,6 +20,7 @@ import "hapi/chart/chart.proto";
 import "hapi/chart/config.proto";
 import "hapi/release/release.proto";
 import "hapi/release/info.proto";
+import "hapi/release/test_run.proto";
 import "hapi/release/status.proto";
 import "hapi/version/version.proto";
 
@@ -327,4 +328,6 @@ message TestReleaseRequest {
 // TestReleaseResponse represents a message from executing a test
 message TestReleaseResponse {
 	string msg = 1;
+	hapi.release.TestRun.Status status = 2;
+
 }
diff --git a/cmd/helm/helm_test.go b/cmd/helm/helm_test.go
index 016b79d6b13f702c8cadbf2d10b5c1f1ea52cb17..a50b63dbae15178f88e7d9f35c68b4e32357da07 100644
--- a/cmd/helm/helm_test.go
+++ b/cmd/helm/helm_test.go
@@ -24,6 +24,7 @@ import (
 	"math/rand"
 	"os"
 	"regexp"
+	"sync"
 	"testing"
 
 	"github.com/golang/protobuf/ptypes/timestamp"
@@ -122,8 +123,9 @@ func releaseMock(opts *releaseOptions) *release.Release {
 }
 
 type fakeReleaseClient struct {
-	rels []*release.Release
-	err  error
+	rels      []*release.Release
+	responses map[string]release.TestRun_Status
+	err       error
 }
 
 var _ helm.Interface = &fakeReleaseClient{}
@@ -198,7 +200,27 @@ func (c *fakeReleaseClient) ReleaseHistory(rlsName string, opts ...helm.HistoryO
 }
 
 func (c *fakeReleaseClient) RunReleaseTest(rlsName string, opts ...helm.ReleaseTestOption) (<-chan *rls.TestReleaseResponse, <-chan error) {
-	return nil, nil
+
+	results := make(chan *rls.TestReleaseResponse, len(c.responses))
+	errc := make(chan error, 1)
+
+	go func() {
+		var wg sync.WaitGroup
+		for m, s := range c.responses {
+			wg.Add(1)
+
+			go func(msg string, status release.TestRun_Status) {
+				defer wg.Done()
+				results <- &rls.TestReleaseResponse{Msg: msg, Status: status}
+			}(m, s)
+		}
+
+		wg.Wait()
+		close(results)
+		close(errc)
+	}()
+
+	return results, errc
 }
 
 func (c *fakeReleaseClient) Option(opt ...helm.Option) helm.Interface {
diff --git a/cmd/helm/release_testing.go b/cmd/helm/release_testing.go
index 76a8f40e3c7765cc2b0a180a6ca8380e032d8dc4..a196f7809c27ec6381b6056991096fd78aeca50d 100644
--- a/cmd/helm/release_testing.go
+++ b/cmd/helm/release_testing.go
@@ -23,6 +23,7 @@ import (
 	"github.com/spf13/cobra"
 
 	"k8s.io/helm/pkg/helm"
+	"k8s.io/helm/pkg/proto/hapi/release"
 )
 
 const releaseTestDesc = `
@@ -75,16 +76,35 @@ func (t *releaseTestCmd) run() (err error) {
 		helm.ReleaseTestTimeout(t.timeout),
 		helm.ReleaseTestCleanup(t.cleanup),
 	)
+	testErr := &testErr{}
 
 	for {
 		select {
 		case err := <-errc:
+			if prettyError(err) == nil && testErr.failed > 0 {
+				return testErr.Error()
+			}
 			return prettyError(err)
 		case res, ok := <-c:
 			if !ok {
 				break
 			}
+
+			if res.Status == release.TestRun_FAILURE {
+				testErr.failed++
+			}
+
 			fmt.Fprintf(t.out, res.Msg+"\n")
+
 		}
 	}
+
+}
+
+type testErr struct {
+	failed int
+}
+
+func (err *testErr) Error() error {
+	return fmt.Errorf("%v test(s) failed", err.failed)
 }
diff --git a/cmd/helm/release_testing_test.go b/cmd/helm/release_testing_test.go
new file mode 100644
index 0000000000000000000000000000000000000000..2c7a5867ac6e33672863283c3f13e6d68033e50f
--- /dev/null
+++ b/cmd/helm/release_testing_test.go
@@ -0,0 +1,105 @@
+/*
+Copyright 2016 The Kubernetes Authors All rights reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package main
+
+import (
+	"bytes"
+	"testing"
+
+	"k8s.io/helm/pkg/proto/hapi/release"
+)
+
+func TestReleaseTesting(t *testing.T) {
+	tests := []struct {
+		name      string
+		args      []string
+		flags     []string
+		responses map[string]release.TestRun_Status
+		fail      bool
+	}{
+		{
+			name:      "basic test",
+			args:      []string{"example-release"},
+			flags:     []string{},
+			responses: map[string]release.TestRun_Status{"PASSED: green lights everywhere": release.TestRun_SUCCESS},
+			fail:      false,
+		},
+		{
+			name:      "test failure",
+			args:      []string{"example-fail"},
+			flags:     []string{},
+			responses: map[string]release.TestRun_Status{"FAILURE: red lights everywhere": release.TestRun_FAILURE},
+			fail:      true,
+		},
+		{
+			name:      "test unknown",
+			args:      []string{"example-unknown"},
+			flags:     []string{},
+			responses: map[string]release.TestRun_Status{"UNKNOWN: yellow lights everywhere": release.TestRun_UNKNOWN},
+			fail:      false,
+		},
+		{
+			name:      "test error",
+			args:      []string{"example-error"},
+			flags:     []string{},
+			responses: map[string]release.TestRun_Status{"ERROR: yellow lights everywhere": release.TestRun_FAILURE},
+			fail:      true,
+		},
+		{
+			name:      "test running",
+			args:      []string{"example-running"},
+			flags:     []string{},
+			responses: map[string]release.TestRun_Status{"RUNNING: things are happpeningggg": release.TestRun_RUNNING},
+			fail:      false,
+		},
+		{
+			name:  "multiple tests example",
+			args:  []string{"example-suite"},
+			flags: []string{},
+			responses: map[string]release.TestRun_Status{
+				"RUNNING: things are happpeningggg":           release.TestRun_RUNNING,
+				"PASSED: party time":                          release.TestRun_SUCCESS,
+				"RUNNING: things are happening again":         release.TestRun_RUNNING,
+				"FAILURE: good thing u checked :)":            release.TestRun_FAILURE,
+				"RUNNING: things are happpeningggg yet again": release.TestRun_RUNNING,
+				"PASSED: feel free to party again":            release.TestRun_SUCCESS},
+			fail: true,
+		},
+	}
+
+	for _, tt := range tests {
+		c := &fakeReleaseClient{responses: tt.responses}
+
+		buf := bytes.NewBuffer(nil)
+		cmd := newReleaseTestCmd(c, buf)
+		cmd.ParseFlags(tt.flags)
+
+		err := cmd.RunE(cmd, tt.args)
+		if err == nil && tt.fail {
+			t.Errorf("%q did not fail but should have failed", tt.name)
+		}
+
+		if err != nil {
+			if tt.fail {
+				continue
+			} else {
+				t.Errorf("%q reported error: %s", tt.name, err)
+			}
+		}
+
+	}
+}
diff --git a/pkg/proto/hapi/chart/chart.pb.go b/pkg/proto/hapi/chart/chart.pb.go
index dbb188e9100a9d46233861e2078d3f44e162d14c..c3afc3f443649ca71c0ad4644ee84bf5dfc812d9 100644
--- a/pkg/proto/hapi/chart/chart.pb.go
+++ b/pkg/proto/hapi/chart/chart.pb.go
@@ -101,7 +101,7 @@ func init() { proto.RegisterFile("hapi/chart/chart.proto", fileDescriptor0) }
 
 var fileDescriptor0 = []byte{
 	// 242 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x90, 0xb1, 0x4e, 0xc3, 0x30,
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x6c, 0x90, 0xb1, 0x4e, 0xc3, 0x30,
 	0x10, 0x86, 0x15, 0x4a, 0x0a, 0x1c, 0x2c, 0x58, 0x08, 0x4c, 0xa7, 0x8a, 0x09, 0x75, 0x70, 0x50,
 	0x11, 0x0f, 0x00, 0xcc, 0x2c, 0x16, 0x13, 0xdb, 0xb5, 0xb9, 0xa4, 0x91, 0x52, 0x3b, 0xaa, 0x5d,
 	0xa4, 0xbe, 0x3b, 0x03, 0xea, 0xd9, 0xa6, 0x09, 0xea, 0x12, 0x29, 0xf7, 0x7d, 0xff, 0xe5, 0xbf,
diff --git a/pkg/proto/hapi/chart/config.pb.go b/pkg/proto/hapi/chart/config.pb.go
index 4a8b36d8908df86ac1c91873ee0aaa24d160a45d..8ce01968dd7c5820c320d2b4a2d7d5ea6f4e3280 100644
--- a/pkg/proto/hapi/chart/config.pb.go
+++ b/pkg/proto/hapi/chart/config.pb.go
@@ -64,7 +64,7 @@ func init() { proto.RegisterFile("hapi/chart/config.proto", fileDescriptor1) }
 
 var fileDescriptor1 = []byte{
 	// 182 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0xcf, 0x48, 0x2c, 0xc8,
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0x12, 0xcf, 0x48, 0x2c, 0xc8,
 	0xd4, 0x4f, 0xce, 0x48, 0x2c, 0x2a, 0xd1, 0x4f, 0xce, 0xcf, 0x4b, 0xcb, 0x4c, 0xd7, 0x2b, 0x28,
 	0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x02, 0x49, 0xe8, 0x81, 0x25, 0x94, 0x16, 0x30, 0x72, 0xb1, 0x39,
 	0x83, 0x25, 0x85, 0x04, 0xb8, 0x98, 0x8b, 0x12, 0xcb, 0x25, 0x18, 0x15, 0x18, 0x35, 0x38, 0x83,
diff --git a/pkg/proto/hapi/chart/metadata.pb.go b/pkg/proto/hapi/chart/metadata.pb.go
index 82abb04ff27f64dc3cbc2d1039fd85cf481b73b1..24b3da70f8f625271c6505599b66d18ee0417471 100644
--- a/pkg/proto/hapi/chart/metadata.pb.go
+++ b/pkg/proto/hapi/chart/metadata.pb.go
@@ -218,7 +218,7 @@ func init() { proto.RegisterFile("hapi/chart/metadata.proto", fileDescriptor2) }
 
 var fileDescriptor2 = []byte{
 	// 354 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x92, 0x5f, 0x4b, 0xe3, 0x40,
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x6c, 0x92, 0x5f, 0x4b, 0xe3, 0x40,
 	0x14, 0xc5, 0x37, 0x9b, 0xe6, 0xdf, 0xcd, 0x76, 0xb7, 0x0c, 0x4b, 0x99, 0x5d, 0x44, 0x42, 0xf1,
 	0x21, 0x4f, 0x29, 0x28, 0x88, 0xcf, 0x82, 0xf8, 0xa0, 0x6d, 0x25, 0xf8, 0x07, 0x7c, 0x1b, 0x93,
 	0x4b, 0x3b, 0xd8, 0xcc, 0x84, 0xc9, 0xa8, 0xf8, 0x7d, 0xfd, 0x20, 0x32, 0x93, 0xa4, 0x8d, 0xe0,
diff --git a/pkg/proto/hapi/chart/template.pb.go b/pkg/proto/hapi/chart/template.pb.go
index 416269d18a47bc3eb26cfc73b475e72408eda55b..862efa37289aa9d10daa057f0ae68e99d16fdcb1 100644
--- a/pkg/proto/hapi/chart/template.pb.go
+++ b/pkg/proto/hapi/chart/template.pb.go
@@ -51,7 +51,7 @@ func init() { proto.RegisterFile("hapi/chart/template.proto", fileDescriptor3) }
 
 var fileDescriptor3 = []byte{
 	// 107 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0xcc, 0x48, 0x2c, 0xc8,
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0x92, 0xcc, 0x48, 0x2c, 0xc8,
 	0xd4, 0x4f, 0xce, 0x48, 0x2c, 0x2a, 0xd1, 0x2f, 0x49, 0xcd, 0x2d, 0xc8, 0x49, 0x2c, 0x49, 0xd5,
 	0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x02, 0x49, 0xe9, 0x81, 0xa5, 0x94, 0x8c, 0xb8, 0x38,
 	0x42, 0xa0, 0xb2, 0x42, 0x42, 0x5c, 0x2c, 0x79, 0x89, 0xb9, 0xa9, 0x12, 0x8c, 0x0a, 0x8c, 0x1a,
diff --git a/pkg/proto/hapi/release/hook.pb.go b/pkg/proto/hapi/release/hook.pb.go
index 1724842e3240c9b1bfe33a4613769c6d5400b65b..787fb449724cf9a0f20d911566b8fecacc8181e9 100644
--- a/pkg/proto/hapi/release/hook.pb.go
+++ b/pkg/proto/hapi/release/hook.pb.go
@@ -167,7 +167,7 @@ func init() { proto.RegisterFile("hapi/release/hook.proto", fileDescriptor0) }
 
 var fileDescriptor0 = []byte{
 	// 371 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x90, 0xdf, 0x8e, 0x93, 0x40,
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x64, 0x90, 0xdf, 0x8e, 0x93, 0x40,
 	0x14, 0x87, 0x65, 0x5b, 0xa0, 0x3d, 0x5d, 0xd7, 0x71, 0x62, 0x74, 0xd2, 0x1b, 0xc9, 0x5e, 0x71,
 	0x35, 0x98, 0x35, 0x3e, 0x00, 0xdb, 0x1d, 0x75, 0xb3, 0x84, 0x36, 0x03, 0xc4, 0xc4, 0x1b, 0xc2,
 	0xc6, 0x69, 0x21, 0x2d, 0x0c, 0x29, 0x53, 0x7d, 0x33, 0x9f, 0xc4, 0x07, 0x32, 0x33, 0xfc, 0x89,
diff --git a/pkg/proto/hapi/release/info.pb.go b/pkg/proto/hapi/release/info.pb.go
index 9485ad0583f1299b765f800f18510a9da14df29d..fd57fecf9c1058eec7941222b9a5e0acf5941bda 100644
--- a/pkg/proto/hapi/release/info.pb.go
+++ b/pkg/proto/hapi/release/info.pb.go
@@ -73,7 +73,7 @@ func init() { proto.RegisterFile("hapi/release/info.proto", fileDescriptor1) }
 
 var fileDescriptor1 = []byte{
 	// 235 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x8f, 0x31, 0x4f, 0xc3, 0x30,
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x84, 0x8f, 0x31, 0x4f, 0xc3, 0x30,
 	0x10, 0x85, 0x95, 0x52, 0x5a, 0xd5, 0x6d, 0x19, 0x2c, 0x24, 0x42, 0x16, 0x22, 0xa6, 0x0e, 0xc8,
 	0x91, 0x80, 0x1d, 0x81, 0xba, 0xb0, 0x06, 0x26, 0x16, 0xe4, 0xe2, 0x73, 0xb1, 0xe4, 0xe6, 0x2c,
 	0xfb, 0x3a, 0xf0, 0x2f, 0xf8, 0xc9, 0xa8, 0xb6, 0x83, 0xd2, 0xa9, 0xab, 0xbf, 0xf7, 0x3e, 0xbf,
diff --git a/pkg/proto/hapi/release/release.pb.go b/pkg/proto/hapi/release/release.pb.go
index 47b321b509b48a951a3b047ab9367872faf0e340..69c7ea1b73a0bd4b9a139f625d4bab7f53999126 100644
--- a/pkg/proto/hapi/release/release.pb.go
+++ b/pkg/proto/hapi/release/release.pb.go
@@ -106,7 +106,7 @@ func init() { proto.RegisterFile("hapi/release/release.proto", fileDescriptor2)
 
 var fileDescriptor2 = []byte{
 	// 256 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x90, 0xbf, 0x4e, 0xc3, 0x40,
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x64, 0x90, 0xbf, 0x4e, 0xc3, 0x40,
 	0x0c, 0xc6, 0x95, 0x36, 0x7f, 0x1a, 0xc3, 0x82, 0x07, 0xb0, 0x22, 0x86, 0x88, 0x01, 0x22, 0x86,
 	0x54, 0x82, 0x37, 0x80, 0x05, 0xd6, 0x1b, 0xd9, 0x8e, 0xe8, 0x42, 0x4e, 0xa5, 0xe7, 0x28, 0x17,
 	0xf1, 0x2c, 0x3c, 0x2e, 0xba, 0x3f, 0x85, 0x94, 0x2e, 0x4e, 0xec, 0xdf, 0xa7, 0xcf, 0xdf, 0x19,
diff --git a/pkg/proto/hapi/release/status.pb.go b/pkg/proto/hapi/release/status.pb.go
index 0098207a7a613b23455b4248ee29ac1fe9b4ab3e..f6f6c26056d2d53aeba861858a36c7af2e0089d9 100644
--- a/pkg/proto/hapi/release/status.pb.go
+++ b/pkg/proto/hapi/release/status.pb.go
@@ -106,7 +106,7 @@ func init() { proto.RegisterFile("hapi/release/status.proto", fileDescriptor3) }
 
 var fileDescriptor3 = []byte{
 	// 291 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x54, 0x90, 0xdf, 0x6a, 0xc2, 0x30,
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x54, 0x90, 0xdf, 0x6a, 0xc2, 0x30,
 	0x14, 0xc6, 0x57, 0xad, 0x3a, 0x8f, 0x22, 0x21, 0x1b, 0xac, 0xca, 0x06, 0xc5, 0xab, 0xde, 0xac,
 	0x05, 0xf7, 0x04, 0xdb, 0x12, 0x87, 0xac, 0x54, 0x69, 0x2b, 0xfb, 0x73, 0x53, 0xaa, 0x9e, 0x39,
 	0xa1, 0x34, 0xd2, 0x24, 0x17, 0x7b, 0x88, 0xbd, 0xf3, 0x68, 0x2b, 0x74, 0x5e, 0x7e, 0xf9, 0xfd,
diff --git a/pkg/proto/hapi/release/test_run.pb.go b/pkg/proto/hapi/release/test_run.pb.go
index 79fce4ab43153f8a2ecd16c67ae7122ef323bf39..ba935ee261fc0b65bd26d71bc11f2aef1b1938f8 100644
--- a/pkg/proto/hapi/release/test_run.pb.go
+++ b/pkg/proto/hapi/release/test_run.pb.go
@@ -20,17 +20,20 @@ const (
 	TestRun_UNKNOWN TestRun_Status = 0
 	TestRun_SUCCESS TestRun_Status = 1
 	TestRun_FAILURE TestRun_Status = 2
+	TestRun_RUNNING TestRun_Status = 3
 )
 
 var TestRun_Status_name = map[int32]string{
 	0: "UNKNOWN",
 	1: "SUCCESS",
 	2: "FAILURE",
+	3: "RUNNING",
 }
 var TestRun_Status_value = map[string]int32{
 	"UNKNOWN": 0,
 	"SUCCESS": 1,
 	"FAILURE": 2,
+	"RUNNING": 3,
 }
 
 func (x TestRun_Status) String() string {
@@ -94,22 +97,23 @@ func init() {
 func init() { proto.RegisterFile("hapi/release/test_run.proto", fileDescriptor4) }
 
 var fileDescriptor4 = []byte{
-	// 265 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x8f, 0x41, 0x4b, 0xfb, 0x40,
-	0x14, 0xc4, 0xff, 0xc9, 0xbf, 0x26, 0x64, 0x53, 0x24, 0xec, 0x29, 0x54, 0xc1, 0xd0, 0x53, 0x4e,
-	0xbb, 0x50, 0xbd, 0x78, 0xf0, 0x10, 0x4b, 0x05, 0x51, 0x22, 0x6c, 0x1a, 0x04, 0x2f, 0x65, 0xab,
-	0xaf, 0x35, 0x90, 0x64, 0x43, 0xf6, 0xe5, 0x8b, 0xf8, 0x89, 0x65, 0x93, 0xad, 0x78, 0xf3, 0xf6,
-	0x86, 0xf9, 0xcd, 0x30, 0x8f, 0x5c, 0x7c, 0xca, 0xae, 0xe2, 0x3d, 0xd4, 0x20, 0x35, 0x70, 0x04,
-	0x8d, 0xbb, 0x7e, 0x68, 0x59, 0xd7, 0x2b, 0x54, 0x74, 0x6e, 0x4c, 0x66, 0xcd, 0xc5, 0xd5, 0x51,
-	0xa9, 0x63, 0x0d, 0x7c, 0xf4, 0xf6, 0xc3, 0x81, 0x63, 0xd5, 0x80, 0x46, 0xd9, 0x74, 0x13, 0xbe,
-	0xfc, 0x72, 0x89, 0xbf, 0x05, 0x8d, 0x62, 0x68, 0x29, 0x25, 0xb3, 0x56, 0x36, 0x10, 0x3b, 0x89,
-	0x93, 0x06, 0x62, 0xbc, 0xe9, 0x0d, 0xf1, 0x34, 0x4a, 0x1c, 0x74, 0xec, 0x26, 0x4e, 0x7a, 0xbe,
-	0xba, 0x64, 0xbf, 0xfb, 0x99, 0x8d, 0xb2, 0x62, 0x64, 0x84, 0x65, 0x4d, 0x53, 0xd5, 0x1e, 0x54,
-	0xfc, 0x7f, 0x6a, 0x32, 0x37, 0xbd, 0x25, 0x44, 0xa3, 0xec, 0x11, 0x3e, 0x76, 0x12, 0xe3, 0x59,
-	0xe2, 0xa4, 0xe1, 0x6a, 0xc1, 0xa6, 0x7d, 0xec, 0xb4, 0x8f, 0x6d, 0x4f, 0xfb, 0x44, 0x60, 0xe9,
-	0x0c, 0xe9, 0x1d, 0x99, 0xbf, 0xab, 0xa6, 0xab, 0xc1, 0x86, 0xcf, 0xfe, 0x0c, 0x87, 0x3f, 0x7c,
-	0x86, 0x4b, 0x4e, 0xbc, 0x69, 0x1f, 0x0d, 0x89, 0x5f, 0xe6, 0x4f, 0xf9, 0xcb, 0x6b, 0x1e, 0xfd,
-	0x33, 0xa2, 0x28, 0xd7, 0xeb, 0x4d, 0x51, 0x44, 0x8e, 0x11, 0x0f, 0xd9, 0xe3, 0x73, 0x29, 0x36,
-	0x91, 0x7b, 0x1f, 0xbc, 0xf9, 0xf6, 0xc1, 0xbd, 0x37, 0x96, 0x5f, 0x7f, 0x07, 0x00, 0x00, 0xff,
-	0xff, 0x8d, 0xb9, 0xce, 0x57, 0x74, 0x01, 0x00, 0x00,
+	// 274 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x84, 0x8f, 0xc1, 0x4b, 0xfb, 0x30,
+	0x1c, 0xc5, 0x7f, 0xe9, 0xf6, 0x6b, 0x69, 0x3a, 0xa4, 0xe4, 0x54, 0xa6, 0x60, 0xd9, 0xa9, 0xa7,
+	0x14, 0xa6, 0x17, 0x41, 0x0f, 0x75, 0x4c, 0x19, 0x4a, 0x84, 0x74, 0x45, 0xf0, 0x32, 0x32, 0xcd,
+	0x66, 0xa1, 0x6d, 0x4a, 0xf3, 0xed, 0xdf, 0xe3, 0xbf, 0x2a, 0x69, 0x33, 0xf1, 0xe6, 0xed, 0xfb,
+	0x78, 0x9f, 0xf7, 0xf2, 0x82, 0xcf, 0x3f, 0x45, 0x5b, 0xa6, 0x9d, 0xac, 0xa4, 0xd0, 0x32, 0x05,
+	0xa9, 0x61, 0xd7, 0xf5, 0x0d, 0x6d, 0x3b, 0x05, 0x8a, 0xcc, 0x8c, 0x49, 0xad, 0x39, 0xbf, 0x3c,
+	0x2a, 0x75, 0xac, 0x64, 0x3a, 0x78, 0xfb, 0xfe, 0x90, 0x42, 0x59, 0x4b, 0x0d, 0xa2, 0x6e, 0x47,
+	0x7c, 0xf1, 0xe5, 0x60, 0x6f, 0x2b, 0x35, 0xf0, 0xbe, 0x21, 0x04, 0x4f, 0x1b, 0x51, 0xcb, 0x08,
+	0xc5, 0x28, 0xf1, 0xf9, 0x70, 0x93, 0x6b, 0xec, 0x6a, 0x10, 0xd0, 0xeb, 0xc8, 0x89, 0x51, 0x72,
+	0xb6, 0xbc, 0xa0, 0xbf, 0xfb, 0xa9, 0x8d, 0xd2, 0x7c, 0x60, 0xb8, 0x65, 0x4d, 0x53, 0xd9, 0x1c,
+	0x54, 0x34, 0x19, 0x9b, 0xcc, 0x4d, 0x6e, 0x30, 0xd6, 0x20, 0x3a, 0x90, 0x1f, 0x3b, 0x01, 0xd1,
+	0x34, 0x46, 0x49, 0xb0, 0x9c, 0xd3, 0x71, 0x1f, 0x3d, 0xed, 0xa3, 0xdb, 0xd3, 0x3e, 0xee, 0x5b,
+	0x3a, 0x03, 0x72, 0x87, 0x67, 0xef, 0xaa, 0x6e, 0x2b, 0x69, 0xc3, 0xff, 0xff, 0x0c, 0x07, 0x3f,
+	0x7c, 0x06, 0x8b, 0x5b, 0xec, 0x8e, 0xfb, 0x48, 0x80, 0xbd, 0x82, 0x3d, 0xb1, 0x97, 0x57, 0x16,
+	0xfe, 0x33, 0x22, 0x2f, 0x56, 0xab, 0x75, 0x9e, 0x87, 0xc8, 0x88, 0x87, 0x6c, 0xf3, 0x5c, 0xf0,
+	0x75, 0xe8, 0x18, 0xc1, 0x0b, 0xc6, 0x36, 0xec, 0x31, 0x9c, 0xdc, 0xfb, 0x6f, 0x9e, 0xfd, 0xed,
+	0xde, 0x1d, 0x5e, 0xba, 0xfa, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x31, 0x86, 0x46, 0xdb, 0x81, 0x01,
+	0x00, 0x00,
 }
diff --git a/pkg/proto/hapi/release/test_suite.pb.go b/pkg/proto/hapi/release/test_suite.pb.go
index f168bf1d2b0710e7cec8af980ad92a10a613180c..27fe45ac524dbfd35d4ffc5bb6f6d929b93c95ac 100644
--- a/pkg/proto/hapi/release/test_suite.pb.go
+++ b/pkg/proto/hapi/release/test_suite.pb.go
@@ -58,7 +58,7 @@ func init() { proto.RegisterFile("hapi/release/test_suite.proto", fileDescriptor
 
 var fileDescriptor5 = []byte{
 	// 207 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x8f, 0xc1, 0x4a, 0x86, 0x40,
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x84, 0x8f, 0xc1, 0x4a, 0x86, 0x40,
 	0x14, 0x85, 0x31, 0x21, 0x71, 0x74, 0x35, 0x10, 0x88, 0x11, 0x49, 0x2b, 0x57, 0x33, 0x60, 0xab,
 	0x16, 0x2d, 0xec, 0x11, 0xcc, 0x55, 0x1b, 0x19, 0xeb, 0x66, 0xc2, 0xe8, 0x0c, 0x73, 0xef, 0xbc,
 	0x5a, 0xcf, 0x17, 0xea, 0x18, 0x41, 0x8b, 0x7f, 0xfd, 0x7d, 0xe7, 0x9c, 0x7b, 0xd9, 0xdd, 0x97,
diff --git a/pkg/proto/hapi/services/tiller.pb.go b/pkg/proto/hapi/services/tiller.pb.go
index d3f8676fc9717e369d1fd42131403c4264437ec2..21d8a7b424d6dd421f5a13dc5f88e3ce8648abda 100644
--- a/pkg/proto/hapi/services/tiller.pb.go
+++ b/pkg/proto/hapi/services/tiller.pb.go
@@ -40,6 +40,7 @@ import hapi_chart3 "k8s.io/helm/pkg/proto/hapi/chart"
 import hapi_chart "k8s.io/helm/pkg/proto/hapi/chart"
 import hapi_release5 "k8s.io/helm/pkg/proto/hapi/release"
 import hapi_release4 "k8s.io/helm/pkg/proto/hapi/release"
+import hapi_release1 "k8s.io/helm/pkg/proto/hapi/release"
 import hapi_release3 "k8s.io/helm/pkg/proto/hapi/release"
 import hapi_version "k8s.io/helm/pkg/proto/hapi/version"
 
@@ -848,7 +849,8 @@ func (m *TestReleaseRequest) GetCleanup() bool {
 
 // TestReleaseResponse represents a message from executing a test
 type TestReleaseResponse struct {
-	Msg string `protobuf:"bytes,1,opt,name=msg" json:"msg,omitempty"`
+	Msg    string                       `protobuf:"bytes,1,opt,name=msg" json:"msg,omitempty"`
+	Status hapi_release1.TestRun_Status `protobuf:"varint,2,opt,name=status,enum=hapi.release.TestRun_Status" json:"status,omitempty"`
 }
 
 func (m *TestReleaseResponse) Reset()                    { *m = TestReleaseResponse{} }
@@ -863,6 +865,13 @@ func (m *TestReleaseResponse) GetMsg() string {
 	return ""
 }
 
+func (m *TestReleaseResponse) GetStatus() hapi_release1.TestRun_Status {
+	if m != nil {
+		return m.Status
+	}
+	return hapi_release1.TestRun_UNKNOWN
+}
+
 func init() {
 	proto.RegisterType((*ListReleasesRequest)(nil), "hapi.services.tiller.ListReleasesRequest")
 	proto.RegisterType((*ListSort)(nil), "hapi.services.tiller.ListSort")
@@ -1342,79 +1351,81 @@ var _ReleaseService_serviceDesc = grpc.ServiceDesc{
 func init() { proto.RegisterFile("hapi/services/tiller.proto", fileDescriptor0) }
 
 var fileDescriptor0 = []byte{
-	// 1170 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0xdb, 0x6e, 0xe3, 0x44,
-	0x18, 0xae, 0xe3, 0x1c, 0xff, 0x1e, 0x48, 0xa7, 0x27, 0xd7, 0x02, 0x54, 0x8c, 0xa0, 0xd9, 0x85,
-	0x4d, 0x21, 0x5c, 0x21, 0x21, 0xa4, 0x6e, 0x37, 0x6a, 0x0b, 0xa5, 0x2b, 0x39, 0xdb, 0x45, 0x42,
-	0x88, 0xc8, 0x4d, 0x26, 0xad, 0x59, 0xc7, 0x13, 0x3c, 0xe3, 0xb2, 0xbd, 0xe5, 0x8e, 0x47, 0xe1,
-	0x2d, 0x78, 0x01, 0x78, 0x01, 0x5e, 0x06, 0x79, 0x0e, 0x6e, 0xc6, 0xb5, 0x5b, 0x6f, 0x6e, 0x62,
-	0xcf, 0xfc, 0xe7, 0xef, 0xff, 0xfd, 0xcd, 0x04, 0xec, 0x6b, 0x6f, 0xe6, 0x1f, 0x50, 0x1c, 0xdd,
-	0xf8, 0x23, 0x4c, 0x0f, 0x98, 0x1f, 0x04, 0x38, 0xea, 0xce, 0x22, 0xc2, 0x08, 0xda, 0x4c, 0x64,
-	0x5d, 0x25, 0xeb, 0x0a, 0x99, 0xbd, 0xcd, 0x2d, 0x46, 0xd7, 0x5e, 0xc4, 0xc4, 0xaf, 0xd0, 0xb6,
-	0x77, 0xe6, 0xf7, 0x49, 0x38, 0xf1, 0xaf, 0xa4, 0x40, 0x84, 0x88, 0x70, 0x80, 0x3d, 0x8a, 0xd5,
-	0x53, 0x33, 0x52, 0x32, 0x3f, 0x9c, 0x10, 0x29, 0xd8, 0xd5, 0x04, 0x94, 0x79, 0x2c, 0xa6, 0x9a,
-	0xbf, 0x1b, 0x1c, 0x51, 0x9f, 0x84, 0xea, 0x29, 0x64, 0xce, 0xdf, 0x15, 0xd8, 0x38, 0xf3, 0x29,
-	0x73, 0x85, 0x21, 0x75, 0xf1, 0x6f, 0x31, 0xa6, 0x0c, 0x6d, 0x42, 0x2d, 0xf0, 0xa7, 0x3e, 0xb3,
-	0x8c, 0x3d, 0xa3, 0x63, 0xba, 0x62, 0x81, 0xb6, 0xa1, 0x4e, 0x26, 0x13, 0x8a, 0x99, 0x55, 0xd9,
-	0x33, 0x3a, 0x2d, 0x57, 0xae, 0xd0, 0xb7, 0xd0, 0xa0, 0x24, 0x62, 0xc3, 0xcb, 0x5b, 0xcb, 0xdc,
-	0x33, 0x3a, 0x6b, 0xbd, 0x4f, 0xba, 0x79, 0x50, 0x74, 0x93, 0x48, 0x03, 0x12, 0xb1, 0x6e, 0xf2,
-	0xf3, 0xfc, 0xd6, 0xad, 0x53, 0xfe, 0x4c, 0xfc, 0x4e, 0xfc, 0x80, 0xe1, 0xc8, 0xaa, 0x0a, 0xbf,
-	0x62, 0x85, 0x8e, 0x01, 0xb8, 0x5f, 0x12, 0x8d, 0x71, 0x64, 0xd5, 0xb8, 0xeb, 0x4e, 0x09, 0xd7,
-	0x2f, 0x13, 0x7d, 0xb7, 0x45, 0xd5, 0x2b, 0xfa, 0x06, 0x56, 0x04, 0x24, 0xc3, 0x11, 0x19, 0x63,
-	0x6a, 0xd5, 0xf7, 0xcc, 0xce, 0x5a, 0x6f, 0x57, 0xb8, 0x52, 0x08, 0x0f, 0x04, 0x68, 0x47, 0x64,
-	0x8c, 0xdd, 0x65, 0xa1, 0x9e, 0xbc, 0x53, 0xf4, 0x3e, 0xb4, 0x42, 0x6f, 0x8a, 0xe9, 0xcc, 0x1b,
-	0x61, 0xab, 0xc1, 0x33, 0xbc, 0xdb, 0x70, 0x7e, 0x81, 0xa6, 0x0a, 0xee, 0xf4, 0xa0, 0x2e, 0x4a,
-	0x43, 0xcb, 0xd0, 0xb8, 0x38, 0xff, 0xfe, 0xfc, 0xe5, 0x8f, 0xe7, 0xed, 0x25, 0xd4, 0x84, 0xea,
-	0xf9, 0xe1, 0x0f, 0xfd, 0xb6, 0x81, 0xd6, 0x61, 0xf5, 0xec, 0x70, 0xf0, 0x6a, 0xe8, 0xf6, 0xcf,
-	0xfa, 0x87, 0x83, 0xfe, 0x8b, 0x76, 0xc5, 0xf9, 0x10, 0x5a, 0x69, 0xce, 0xa8, 0x01, 0xe6, 0xe1,
-	0xe0, 0x48, 0x98, 0xbc, 0xe8, 0x0f, 0x8e, 0xda, 0x86, 0xf3, 0xa7, 0x01, 0x9b, 0x7a, 0x8b, 0xe8,
-	0x8c, 0x84, 0x14, 0x27, 0x3d, 0x1a, 0x91, 0x38, 0x4c, 0x7b, 0xc4, 0x17, 0x08, 0x41, 0x35, 0xc4,
-	0x6f, 0x55, 0x87, 0xf8, 0x7b, 0xa2, 0xc9, 0x08, 0xf3, 0x02, 0xde, 0x1d, 0xd3, 0x15, 0x0b, 0xf4,
-	0x25, 0x34, 0x65, 0xe9, 0xd4, 0xaa, 0xee, 0x99, 0x9d, 0xe5, 0xde, 0x96, 0x0e, 0x88, 0x8c, 0xe8,
-	0xa6, 0x6a, 0xce, 0x31, 0xec, 0x1c, 0x63, 0x95, 0x89, 0xc0, 0x4b, 0x4d, 0x4c, 0x12, 0xd7, 0x9b,
-	0x62, 0x9e, 0x4c, 0x12, 0xd7, 0x9b, 0x62, 0x64, 0x41, 0x43, 0x8e, 0x1b, 0x4f, 0xa7, 0xe6, 0xaa,
-	0xa5, 0xc3, 0xc0, 0xba, 0xef, 0x48, 0xd6, 0x95, 0xe7, 0xe9, 0x53, 0xa8, 0x26, 0xc3, 0xce, 0xdd,
-	0x2c, 0xf7, 0x90, 0x9e, 0xe7, 0x69, 0x38, 0x21, 0x2e, 0x97, 0xeb, 0xad, 0x32, 0xb3, 0xad, 0x3a,
-	0x99, 0x8f, 0x7a, 0x44, 0x42, 0x86, 0x43, 0xb6, 0x58, 0xfe, 0x67, 0xb0, 0x9b, 0xe3, 0x49, 0x16,
-	0x70, 0x00, 0x0d, 0x99, 0x1a, 0xf7, 0x56, 0x88, 0xab, 0xd2, 0x72, 0xfe, 0xa9, 0xc0, 0xe6, 0xc5,
-	0x6c, 0xec, 0x31, 0xac, 0x44, 0x0f, 0x24, 0xb5, 0x0f, 0x35, 0x4e, 0x1a, 0x12, 0x8b, 0x75, 0xe1,
-	0x5b, 0x30, 0xcb, 0x51, 0xf2, 0xeb, 0x0a, 0x39, 0x7a, 0x0a, 0xf5, 0x1b, 0x2f, 0x88, 0x31, 0xe5,
-	0x40, 0xa4, 0xa8, 0x49, 0x4d, 0xce, 0x38, 0xae, 0xd4, 0x40, 0x3b, 0xd0, 0x18, 0x47, 0xb7, 0xc3,
-	0x28, 0x0e, 0xf9, 0x27, 0xd8, 0x74, 0xeb, 0xe3, 0xe8, 0xd6, 0x8d, 0x43, 0xf4, 0x31, 0xac, 0x8e,
-	0x7d, 0xea, 0x5d, 0x06, 0x78, 0x78, 0x4d, 0xc8, 0x1b, 0xca, 0xbf, 0xc2, 0xa6, 0xbb, 0x22, 0x37,
-	0x4f, 0x92, 0x3d, 0x64, 0x27, 0x93, 0x34, 0x8a, 0xb0, 0xc7, 0xb0, 0x55, 0xe7, 0xf2, 0x74, 0x9d,
-	0x60, 0xc8, 0xfc, 0x29, 0x26, 0x31, 0xe3, 0x9f, 0x8e, 0xe9, 0xaa, 0x25, 0xfa, 0x08, 0x56, 0x22,
-	0x4c, 0x31, 0x1b, 0xca, 0x2c, 0x9b, 0xdc, 0x72, 0x99, 0xef, 0xbd, 0x16, 0x69, 0x21, 0xa8, 0xfe,
-	0xee, 0xf9, 0xcc, 0x6a, 0x71, 0x11, 0x7f, 0x17, 0x66, 0x31, 0xc5, 0xca, 0x0c, 0x94, 0x59, 0x4c,
-	0xb1, 0x30, 0x73, 0x4e, 0x60, 0x2b, 0x03, 0xe7, 0xa2, 0x9d, 0xf9, 0xd7, 0x80, 0x6d, 0x97, 0x04,
-	0xc1, 0xa5, 0x37, 0x7a, 0x53, 0xa2, 0x37, 0x73, 0x30, 0x56, 0x1e, 0x86, 0xd1, 0xcc, 0x81, 0x71,
-	0x6e, 0xdc, 0xaa, 0xda, 0xb8, 0x69, 0x00, 0xd7, 0x8a, 0x01, 0xae, 0xeb, 0x00, 0x2b, 0xf4, 0x1a,
-	0x77, 0xe8, 0x39, 0xdf, 0xc1, 0xce, 0xbd, 0x7a, 0x16, 0x05, 0xe7, 0xaf, 0x0a, 0x6c, 0x9d, 0x86,
-	0x94, 0x79, 0x41, 0x90, 0xc1, 0x26, 0x9d, 0x51, 0xa3, 0xf4, 0x8c, 0x56, 0xde, 0x65, 0x46, 0x4d,
-	0x0d, 0x5c, 0xd5, 0x89, 0xea, 0x5c, 0x27, 0x4a, 0xcd, 0xad, 0xc6, 0x16, 0xf5, 0x0c, 0x5b, 0xa0,
-	0x0f, 0x00, 0xc4, 0xa0, 0x71, 0xe7, 0x02, 0xc4, 0x16, 0xdf, 0x39, 0x97, 0xe4, 0xa0, 0x70, 0x6f,
-	0xe6, 0xe3, 0x3e, 0x37, 0xb5, 0xce, 0x29, 0x6c, 0x67, 0xa1, 0x5a, 0x14, 0xf6, 0x3f, 0x0c, 0xd8,
-	0xb9, 0x08, 0xfd, 0x5c, 0xe0, 0xf3, 0x86, 0xf2, 0x1e, 0x14, 0x95, 0x1c, 0x28, 0x36, 0xa1, 0x36,
-	0x8b, 0xa3, 0x2b, 0x2c, 0xa1, 0x15, 0x8b, 0xf9, 0x1a, 0xab, 0x5a, 0x8d, 0xce, 0x10, 0xac, 0xfb,
-	0x39, 0x2c, 0x58, 0x51, 0x92, 0x75, 0xca, 0xee, 0x2d, 0xc1, 0xe4, 0xce, 0x06, 0xac, 0x1f, 0x63,
-	0xf6, 0x5a, 0x7c, 0x00, 0xb2, 0x3c, 0xa7, 0x0f, 0x68, 0x7e, 0xf3, 0x2e, 0x9e, 0xdc, 0xd2, 0xe3,
-	0xa9, 0xab, 0x8e, 0xd2, 0x57, 0x5a, 0xce, 0xd7, 0xdc, 0xf7, 0x89, 0x4f, 0x19, 0x89, 0x6e, 0x1f,
-	0x82, 0xae, 0x0d, 0xe6, 0xd4, 0x7b, 0x2b, 0xc9, 0x3f, 0x79, 0x75, 0x8e, 0x79, 0x06, 0xa9, 0xa9,
-	0xcc, 0x60, 0xfe, 0x28, 0x35, 0xca, 0x1d, 0xa5, 0x3f, 0x03, 0x7a, 0x85, 0xd3, 0x53, 0xfd, 0x91,
-	0x53, 0x48, 0x35, 0xa1, 0xa2, 0x0f, 0x9a, 0x05, 0x8d, 0x51, 0x80, 0xbd, 0x30, 0x9e, 0xc9, 0xb6,
-	0xa9, 0xa5, 0xb3, 0x0f, 0x1b, 0x9a, 0x77, 0x99, 0x67, 0x52, 0x0f, 0xbd, 0x92, 0xde, 0x93, 0xd7,
-	0xde, 0x7f, 0x4d, 0x58, 0x53, 0xc7, 0xb0, 0xb8, 0x52, 0x21, 0x1f, 0x56, 0xe6, 0xef, 0x1b, 0xe8,
-	0x49, 0xf1, 0x8d, 0x2b, 0x73, 0x6d, 0xb4, 0x9f, 0x96, 0x51, 0x15, 0xb9, 0x38, 0x4b, 0x5f, 0x18,
-	0x88, 0x42, 0x3b, 0x7b, 0x0d, 0x40, 0xcf, 0xf2, 0x7d, 0x14, 0xdc, 0x3b, 0xec, 0x6e, 0x59, 0x75,
-	0x15, 0x16, 0xdd, 0xf0, 0xee, 0xeb, 0x67, 0x37, 0x7a, 0xd4, 0x8d, 0x7e, 0x5d, 0xb0, 0x0f, 0x4a,
-	0xeb, 0xa7, 0x71, 0x7f, 0x85, 0x55, 0xed, 0x54, 0x42, 0x05, 0x68, 0xe5, 0xdd, 0x04, 0xec, 0xcf,
-	0x4a, 0xe9, 0xa6, 0xb1, 0xa6, 0xb0, 0xa6, 0xd3, 0x0d, 0x2a, 0x70, 0x90, 0xcb, 0xdf, 0xf6, 0xe7,
-	0xe5, 0x94, 0xd3, 0x70, 0x14, 0xda, 0x59, 0x36, 0x28, 0xea, 0x63, 0x01, 0x73, 0x15, 0xf5, 0xb1,
-	0x88, 0x64, 0x9c, 0x25, 0xe4, 0x01, 0xdc, 0x91, 0x01, 0xda, 0x2f, 0x6c, 0x88, 0xce, 0x21, 0x76,
-	0xe7, 0x71, 0xc5, 0x34, 0xc4, 0x0c, 0xde, 0xcb, 0x9c, 0x96, 0xa8, 0x00, 0x9a, 0xfc, 0x4b, 0x82,
-	0xfd, 0xac, 0xa4, 0x76, 0xa6, 0x28, 0xc9, 0x2f, 0x0f, 0x14, 0xa5, 0x93, 0xd7, 0x03, 0x45, 0x65,
-	0xa8, 0xca, 0x59, 0x42, 0x3e, 0xac, 0xb9, 0x71, 0x28, 0x43, 0x27, 0x2c, 0x81, 0x0a, 0xac, 0xef,
-	0xf3, 0x93, 0xfd, 0xa4, 0x84, 0xe6, 0xdd, 0xf7, 0xfd, 0x1c, 0x7e, 0x6a, 0x2a, 0xd5, 0xcb, 0x3a,
-	0xff, 0xc7, 0xf9, 0xd5, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0x30, 0x80, 0xed, 0x18, 0x42, 0x0f,
-	0x00, 0x00,
+	// 1203 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x9c, 0x57, 0xdd, 0x6e, 0xe3, 0xc4,
+	0x17, 0xaf, 0xf3, 0xe1, 0x24, 0xa7, 0x6d, 0xfe, 0xe9, 0xf4, 0xcb, 0xf5, 0x7f, 0x41, 0xc5, 0x08,
+	0x36, 0xbb, 0xb0, 0x29, 0x04, 0x6e, 0x90, 0x10, 0x52, 0xb7, 0x1b, 0xb5, 0x85, 0xd2, 0x95, 0x9c,
+	0xed, 0x22, 0x21, 0x20, 0x72, 0x93, 0x49, 0x6b, 0xd6, 0xb1, 0x83, 0x67, 0x5c, 0xb6, 0xb7, 0xdc,
+	0xf1, 0x28, 0xbc, 0x05, 0x2f, 0x00, 0x2f, 0xc0, 0xcb, 0xa0, 0xf9, 0x72, 0x33, 0xae, 0xdd, 0x9a,
+	0xde, 0xc4, 0x33, 0x73, 0xbe, 0x7f, 0xe7, 0xcc, 0x99, 0x13, 0xb0, 0x2f, 0xbd, 0xb9, 0xbf, 0x47,
+	0x70, 0x7c, 0xe5, 0x8f, 0x31, 0xd9, 0xa3, 0x7e, 0x10, 0xe0, 0xb8, 0x37, 0x8f, 0x23, 0x1a, 0xa1,
+	0x0d, 0x46, 0xeb, 0x29, 0x5a, 0x4f, 0xd0, 0xec, 0x2d, 0x2e, 0x31, 0xbe, 0xf4, 0x62, 0x2a, 0x7e,
+	0x05, 0xb7, 0xbd, 0xbd, 0x78, 0x1e, 0x85, 0x53, 0xff, 0x42, 0x12, 0x84, 0x89, 0x18, 0x07, 0xd8,
+	0x23, 0x58, 0x7d, 0x35, 0x21, 0x45, 0xf3, 0xc3, 0x69, 0x24, 0x09, 0xff, 0xd7, 0x08, 0x14, 0x13,
+	0x3a, 0x8a, 0x93, 0x50, 0x12, 0x77, 0x34, 0x22, 0xa1, 0x1e, 0x4d, 0x88, 0x66, 0xec, 0x0a, 0xc7,
+	0xc4, 0x8f, 0x42, 0xf5, 0x15, 0x34, 0xe7, 0xcf, 0x0a, 0xac, 0x9f, 0xf8, 0x84, 0xba, 0x42, 0x90,
+	0xb8, 0xf8, 0x97, 0x04, 0x13, 0x8a, 0x36, 0xa0, 0x1e, 0xf8, 0x33, 0x9f, 0x5a, 0xc6, 0xae, 0xd1,
+	0xad, 0xba, 0x62, 0x83, 0xb6, 0xc0, 0x8c, 0xa6, 0x53, 0x82, 0xa9, 0x55, 0xd9, 0x35, 0xba, 0x2d,
+	0x57, 0xee, 0xd0, 0x57, 0xd0, 0x20, 0x51, 0x4c, 0x47, 0xe7, 0xd7, 0x56, 0x75, 0xd7, 0xe8, 0xb6,
+	0xfb, 0x1f, 0xf4, 0xf2, 0x70, 0xea, 0x31, 0x4b, 0xc3, 0x28, 0xa6, 0x3d, 0xf6, 0xf3, 0xfc, 0xda,
+	0x35, 0x09, 0xff, 0x32, 0xbd, 0x53, 0x3f, 0xa0, 0x38, 0xb6, 0x6a, 0x42, 0xaf, 0xd8, 0xa1, 0x43,
+	0x00, 0xae, 0x37, 0x8a, 0x27, 0x38, 0xb6, 0xea, 0x5c, 0x75, 0xb7, 0x84, 0xea, 0x97, 0x8c, 0xdf,
+	0x6d, 0x11, 0xb5, 0x44, 0x5f, 0xc2, 0x8a, 0x80, 0x64, 0x34, 0x8e, 0x26, 0x98, 0x58, 0xe6, 0x6e,
+	0xb5, 0xdb, 0xee, 0xef, 0x08, 0x55, 0x0a, 0xfe, 0xa1, 0x00, 0xed, 0x20, 0x9a, 0x60, 0x77, 0x59,
+	0xb0, 0xb3, 0x35, 0x41, 0x8f, 0xa0, 0x15, 0x7a, 0x33, 0x4c, 0xe6, 0xde, 0x18, 0x5b, 0x0d, 0xee,
+	0xe1, 0xcd, 0x81, 0xf3, 0x13, 0x34, 0x95, 0x71, 0xa7, 0x0f, 0xa6, 0x08, 0x0d, 0x2d, 0x43, 0xe3,
+	0xec, 0xf4, 0x9b, 0xd3, 0x97, 0xdf, 0x9d, 0x76, 0x96, 0x50, 0x13, 0x6a, 0xa7, 0xfb, 0xdf, 0x0e,
+	0x3a, 0x06, 0x5a, 0x83, 0xd5, 0x93, 0xfd, 0xe1, 0xab, 0x91, 0x3b, 0x38, 0x19, 0xec, 0x0f, 0x07,
+	0x2f, 0x3a, 0x15, 0xe7, 0x5d, 0x68, 0xa5, 0x3e, 0xa3, 0x06, 0x54, 0xf7, 0x87, 0x07, 0x42, 0xe4,
+	0xc5, 0x60, 0x78, 0xd0, 0x31, 0x9c, 0xdf, 0x0d, 0xd8, 0xd0, 0x53, 0x44, 0xe6, 0x51, 0x48, 0x30,
+	0xcb, 0xd1, 0x38, 0x4a, 0xc2, 0x34, 0x47, 0x7c, 0x83, 0x10, 0xd4, 0x42, 0xfc, 0x56, 0x65, 0x88,
+	0xaf, 0x19, 0x27, 0x8d, 0xa8, 0x17, 0xf0, 0xec, 0x54, 0x5d, 0xb1, 0x41, 0x9f, 0x42, 0x53, 0x86,
+	0x4e, 0xac, 0xda, 0x6e, 0xb5, 0xbb, 0xdc, 0xdf, 0xd4, 0x01, 0x91, 0x16, 0xdd, 0x94, 0xcd, 0x39,
+	0x84, 0xed, 0x43, 0xac, 0x3c, 0x11, 0x78, 0xa9, 0x8a, 0x61, 0x76, 0xbd, 0x19, 0xe6, 0xce, 0x30,
+	0xbb, 0xde, 0x0c, 0x23, 0x0b, 0x1a, 0xb2, 0xdc, 0xb8, 0x3b, 0x75, 0x57, 0x6d, 0x1d, 0x0a, 0xd6,
+	0x6d, 0x45, 0x32, 0xae, 0x3c, 0x4d, 0x1f, 0x42, 0x8d, 0xdd, 0x04, 0xae, 0x66, 0xb9, 0x8f, 0x74,
+	0x3f, 0x8f, 0xc3, 0x69, 0xe4, 0x72, 0xba, 0x9e, 0xaa, 0x6a, 0x36, 0x55, 0x47, 0x8b, 0x56, 0x0f,
+	0xa2, 0x90, 0xe2, 0x90, 0x3e, 0xcc, 0xff, 0x13, 0xd8, 0xc9, 0xd1, 0x24, 0x03, 0xd8, 0x83, 0x86,
+	0x74, 0x8d, 0x6b, 0x2b, 0xc4, 0x55, 0x71, 0x39, 0x7f, 0x55, 0x60, 0xe3, 0x6c, 0x3e, 0xf1, 0x28,
+	0x56, 0xa4, 0x3b, 0x9c, 0x7a, 0x0c, 0x75, 0xde, 0x51, 0x24, 0x16, 0x6b, 0x42, 0xb7, 0x68, 0x3b,
+	0x07, 0xec, 0xd7, 0x15, 0x74, 0xf4, 0x14, 0xcc, 0x2b, 0x2f, 0x48, 0x30, 0xe1, 0x40, 0xa4, 0xa8,
+	0x49, 0x4e, 0xde, 0x8e, 0x5c, 0xc9, 0x81, 0xb6, 0xa1, 0x31, 0x89, 0xaf, 0x59, 0x3f, 0xe1, 0x57,
+	0xb0, 0xe9, 0x9a, 0x93, 0xf8, 0xda, 0x4d, 0x42, 0xf4, 0x3e, 0xac, 0x4e, 0x7c, 0xe2, 0x9d, 0x07,
+	0x78, 0x74, 0x19, 0x45, 0x6f, 0x08, 0xbf, 0x85, 0x4d, 0x77, 0x45, 0x1e, 0x1e, 0xb1, 0x33, 0x64,
+	0xb3, 0x4a, 0x1a, 0xc7, 0xd8, 0xa3, 0xd8, 0x32, 0x39, 0x3d, 0xdd, 0x33, 0x0c, 0xa9, 0x3f, 0xc3,
+	0x51, 0x42, 0xf9, 0xd5, 0xa9, 0xba, 0x6a, 0x8b, 0xde, 0x83, 0x95, 0x18, 0x13, 0x4c, 0x47, 0xd2,
+	0xcb, 0x26, 0x97, 0x5c, 0xe6, 0x67, 0xaf, 0x85, 0x5b, 0x08, 0x6a, 0xbf, 0x7a, 0x3e, 0xb5, 0x5a,
+	0x9c, 0xc4, 0xd7, 0x42, 0x2c, 0x21, 0x58, 0x89, 0x81, 0x12, 0x4b, 0x08, 0x16, 0x62, 0xce, 0x11,
+	0x6c, 0x66, 0xe0, 0x7c, 0x68, 0x66, 0xfe, 0x36, 0x60, 0xcb, 0x8d, 0x82, 0xe0, 0xdc, 0x1b, 0xbf,
+	0x29, 0x91, 0x9b, 0x05, 0x18, 0x2b, 0x77, 0xc3, 0x58, 0xcd, 0x81, 0x71, 0xa1, 0xdc, 0x6a, 0x5a,
+	0xb9, 0x69, 0x00, 0xd7, 0x8b, 0x01, 0x36, 0x75, 0x80, 0x15, 0x7a, 0x8d, 0x1b, 0xf4, 0x9c, 0xaf,
+	0x61, 0xfb, 0x56, 0x3c, 0x0f, 0x05, 0xe7, 0x8f, 0x0a, 0x6c, 0x1e, 0x87, 0x84, 0x7a, 0x41, 0x90,
+	0xc1, 0x26, 0xad, 0x51, 0xa3, 0x74, 0x8d, 0x56, 0xfe, 0x4b, 0x8d, 0x56, 0x35, 0x70, 0x55, 0x26,
+	0x6a, 0x0b, 0x99, 0x28, 0x55, 0xb7, 0x5a, 0xb7, 0x30, 0x33, 0xdd, 0x02, 0xbd, 0x03, 0x20, 0x0a,
+	0x8d, 0x2b, 0x17, 0x20, 0xb6, 0xf8, 0xc9, 0xa9, 0x6c, 0x0e, 0x0a, 0xf7, 0x66, 0x3e, 0xee, 0x0b,
+	0x55, 0xeb, 0x1c, 0xc3, 0x56, 0x16, 0xaa, 0x87, 0xc2, 0xfe, 0x9b, 0x01, 0xdb, 0x67, 0xa1, 0x9f,
+	0x0b, 0x7c, 0x5e, 0x51, 0xde, 0x82, 0xa2, 0x92, 0x03, 0xc5, 0x06, 0xd4, 0xe7, 0x49, 0x7c, 0x81,
+	0x25, 0xb4, 0x62, 0xb3, 0x18, 0x63, 0x4d, 0x8b, 0xd1, 0x19, 0x81, 0x75, 0xdb, 0x87, 0x07, 0x46,
+	0xc4, 0xbc, 0x4e, 0xbb, 0x7b, 0x4b, 0x74, 0x72, 0x67, 0x1d, 0xd6, 0x0e, 0x31, 0x7d, 0x2d, 0x2e,
+	0x80, 0x0c, 0xcf, 0x19, 0x00, 0x5a, 0x3c, 0xbc, 0xb1, 0x27, 0x8f, 0x74, 0x7b, 0x6a, 0xd4, 0x51,
+	0xfc, 0x8a, 0xcb, 0xf9, 0x82, 0xeb, 0x3e, 0xf2, 0x09, 0x8d, 0xe2, 0xeb, 0xbb, 0xa0, 0xeb, 0x40,
+	0x75, 0xe6, 0xbd, 0x95, 0xcd, 0x9f, 0x2d, 0x9d, 0x43, 0xee, 0x41, 0x2a, 0x2a, 0x3d, 0x58, 0x7c,
+	0x4a, 0x8d, 0x72, 0x4f, 0xe9, 0x0f, 0x80, 0x5e, 0xe1, 0xf4, 0x55, 0xbf, 0xe7, 0x15, 0x52, 0x49,
+	0xa8, 0xe8, 0x85, 0x66, 0x41, 0x63, 0x1c, 0x60, 0x2f, 0x4c, 0xe6, 0x32, 0x6d, 0x6a, 0xeb, 0xfc,
+	0x08, 0xeb, 0x9a, 0x76, 0xe9, 0x27, 0x8b, 0x87, 0x5c, 0x48, 0xed, 0x6c, 0x89, 0x3e, 0x07, 0x53,
+	0x8c, 0x3a, 0x5c, 0x77, 0xbb, 0xff, 0x48, 0xf7, 0x9b, 0x2b, 0x49, 0x42, 0x39, 0x1b, 0xb9, 0x92,
+	0xb7, 0xff, 0x4f, 0x13, 0xda, 0xea, 0xf1, 0x16, 0x83, 0x18, 0xf2, 0x61, 0x65, 0x71, 0x4a, 0x41,
+	0x4f, 0x8a, 0xe7, 0xb4, 0xcc, 0xb0, 0x69, 0x3f, 0x2d, 0xc3, 0x2a, 0x22, 0x70, 0x96, 0x3e, 0x31,
+	0x10, 0x81, 0x4e, 0x76, 0x78, 0x40, 0xcf, 0xf2, 0x75, 0x14, 0x4c, 0x2b, 0x76, 0xaf, 0x2c, 0xbb,
+	0x32, 0x8b, 0xae, 0x78, 0xcd, 0xe8, 0x2f, 0x3e, 0xba, 0x57, 0x8d, 0x3e, 0x64, 0xd8, 0x7b, 0xa5,
+	0xf9, 0x53, 0xbb, 0x3f, 0xc3, 0xaa, 0xf6, 0x96, 0xa1, 0x02, 0xb4, 0xf2, 0xe6, 0x07, 0xfb, 0xa3,
+	0x52, 0xbc, 0xa9, 0xad, 0x19, 0xb4, 0xf5, 0x26, 0x85, 0x0a, 0x14, 0xe4, 0x76, 0x7d, 0xfb, 0xe3,
+	0x72, 0xcc, 0xa9, 0x39, 0x02, 0x9d, 0x6c, 0x0f, 0x29, 0xca, 0x63, 0x41, 0xbf, 0x2b, 0xca, 0x63,
+	0x51, 0x6b, 0x72, 0x96, 0x90, 0x07, 0x70, 0xd3, 0x42, 0xd0, 0xe3, 0xc2, 0x84, 0xe8, 0x9d, 0xc7,
+	0xee, 0xde, 0xcf, 0x98, 0x9a, 0x98, 0xc3, 0xff, 0x32, 0x6f, 0x2c, 0x2a, 0x80, 0x26, 0x7f, 0xb4,
+	0xb0, 0x9f, 0x95, 0xe4, 0xce, 0x04, 0x25, 0xbb, 0xd2, 0x1d, 0x41, 0xe9, 0x2d, 0xef, 0x8e, 0xa0,
+	0x32, 0x0d, 0xce, 0x59, 0x42, 0x3e, 0xb4, 0xdd, 0x24, 0x94, 0xa6, 0x59, 0x5b, 0x40, 0x05, 0xd2,
+	0xb7, 0xbb, 0x9a, 0xfd, 0xa4, 0x04, 0xe7, 0xcd, 0xfd, 0x7e, 0x0e, 0xdf, 0x37, 0x15, 0xeb, 0xb9,
+	0xc9, 0xff, 0xa7, 0x7e, 0xf6, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe2, 0xe3, 0x43, 0xc0, 0x95,
+	0x0f, 0x00, 0x00,
 }
diff --git a/pkg/proto/hapi/version/version.pb.go b/pkg/proto/hapi/version/version.pb.go
index e3d8a709655aba2ea570683830c399ef9fe1538a..b8a7115614b49646f493986e43f2a6f2cf61321f 100644
--- a/pkg/proto/hapi/version/version.pb.go
+++ b/pkg/proto/hapi/version/version.pb.go
@@ -69,7 +69,7 @@ func init() { proto.RegisterFile("hapi/version/version.proto", fileDescriptor0)
 
 var fileDescriptor0 = []byte{
 	// 151 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0xca, 0x48, 0x2c, 0xc8,
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0x92, 0xca, 0x48, 0x2c, 0xc8,
 	0xd4, 0x2f, 0x4b, 0x2d, 0x2a, 0xce, 0xcc, 0xcf, 0x83, 0xd1, 0x7a, 0x05, 0x45, 0xf9, 0x25, 0xf9,
 	0x42, 0x3c, 0x20, 0x39, 0x3d, 0xa8, 0x98, 0x52, 0x3a, 0x17, 0x7b, 0x18, 0x84, 0x29, 0x24, 0xce,
 	0xc5, 0x5e, 0x9c, 0x9a, 0x1b, 0x5f, 0x96, 0x5a, 0x24, 0xc1, 0xa8, 0xc0, 0xa8, 0xc1, 0x19, 0xc4,
diff --git a/pkg/releasetesting/environment.go b/pkg/releasetesting/environment.go
index a567213331e97e2c40db2b2416646d9b188e9d4c..51c1aa95a10b84bf385a9a969f6b944013f1d0b8 100644
--- a/pkg/releasetesting/environment.go
+++ b/pkg/releasetesting/environment.go
@@ -83,31 +83,31 @@ func (env *Environment) streamResult(r *release.TestRun) error {
 
 func (env *Environment) streamRunning(name string) error {
 	msg := "RUNNING: " + name
-	return env.streamMessage(msg)
+	return env.streamMessage(msg, release.TestRun_RUNNING)
 }
 
 func (env *Environment) streamError(info string) error {
 	msg := "ERROR: " + info
-	return env.streamMessage(msg)
+	return env.streamMessage(msg, release.TestRun_FAILURE)
 }
 
 func (env *Environment) streamFailed(name string) error {
 	msg := fmt.Sprintf("FAILED: %s, run `kubectl logs %s --namespace %s` for more info", name, name, env.Namespace)
-	return env.streamMessage(msg)
+	return env.streamMessage(msg, release.TestRun_FAILURE)
 }
 
 func (env *Environment) streamSuccess(name string) error {
 	msg := fmt.Sprintf("PASSED: %s", name)
-	return env.streamMessage(msg)
+	return env.streamMessage(msg, release.TestRun_SUCCESS)
 }
 
 func (env *Environment) streamUnknown(name, info string) error {
 	msg := fmt.Sprintf("UNKNOWN: %s: %s", name, info)
-	return env.streamMessage(msg)
+	return env.streamMessage(msg, release.TestRun_UNKNOWN)
 }
 
-func (env *Environment) streamMessage(msg string) error {
-	resp := &services.TestReleaseResponse{Msg: msg}
+func (env *Environment) streamMessage(msg string, status release.TestRun_Status) error {
+	resp := &services.TestReleaseResponse{Msg: msg, Status: status}
 	return env.Stream.Send(resp)
 }
 
diff --git a/pkg/releasetesting/environment_test.go b/pkg/releasetesting/environment_test.go
index deb8617f620bc7c7f9643ba6ebe1c0cf02fcd0eb..5d8e58f85287b149f1a4efa9a57fb944d181abdc 100644
--- a/pkg/releasetesting/environment_test.go
+++ b/pkg/releasetesting/environment_test.go
@@ -24,6 +24,7 @@ import (
 	"testing"
 
 	"k8s.io/helm/pkg/proto/hapi/release"
+	"k8s.io/helm/pkg/proto/hapi/services"
 	tillerEnv "k8s.io/helm/pkg/tiller/environment"
 )
 
@@ -88,6 +89,29 @@ func TestDeleteTestPodsFailingDelete(t *testing.T) {
 	}
 }
 
+func TestStreamMessage(t *testing.T) {
+	mockTestEnv := newMockTestingEnvironment()
+
+	expectedMessage := "testing streamMessage"
+	expectedStatus := release.TestRun_SUCCESS
+	err := mockTestEnv.streamMessage(expectedMessage, expectedStatus)
+	if err != nil {
+		t.Errorf("Expected no errors, got 1: %s", err)
+	}
+
+	stream := mockTestEnv.Stream.(*mockStream)
+	if len(stream.messages) != 1 {
+		t.Errorf("Expected 1 message, got: %v", len(stream.messages))
+	}
+
+	if stream.messages[0].Msg != expectedMessage {
+		t.Errorf("Expected message: %s, got: %s", expectedMessage, stream.messages[0])
+	}
+	if stream.messages[0].Status != expectedStatus {
+		t.Errorf("Expected status: %v, got: %v", expectedStatus, stream.messages[0].Status)
+	}
+}
+
 type MockTestingEnvironment struct {
 	*Environment
 }
@@ -110,7 +134,10 @@ func (mte MockTestingEnvironment) streamError(info string) error         { retur
 func (mte MockTestingEnvironment) streamFailed(name string) error        { return nil }
 func (mte MockTestingEnvironment) streamSuccess(name string) error       { return nil }
 func (mte MockTestingEnvironment) streamUnknown(name, info string) error { return nil }
-func (mte MockTestingEnvironment) streamMessage(msg string) error        { return nil }
+func (mte MockTestingEnvironment) streamMessage(msg string, status release.TestRun_Status) error {
+	mte.Stream.Send(&services.TestReleaseResponse{Msg: msg, Status: status})
+	return nil
+}
 
 type getFailingKubeClient struct {
 	tillerEnv.PrintingKubeClient
diff --git a/pkg/releasetesting/test_suite.go b/pkg/releasetesting/test_suite.go
index f4362dc5b3b6f88e20ae84929f1b7bc258f4df10..e5e8db51e1f25bf4375363e87721e63cddfe523b 100644
--- a/pkg/releasetesting/test_suite.go
+++ b/pkg/releasetesting/test_suite.go
@@ -65,7 +65,8 @@ func (ts *TestSuite) Run(env *Environment) error {
 	ts.StartedAt = timeconv.Now()
 
 	if len(ts.TestManifests) == 0 {
-		env.streamMessage("No Tests Found")
+		// TODO: make this better, adding test run status on test suite is weird
+		env.streamMessage("No Tests Found", release.TestRun_UNKNOWN)
 	}
 
 	for _, testManifest := range ts.TestManifests {
@@ -78,6 +79,7 @@ func (ts *TestSuite) Run(env *Environment) error {
 		if err := env.streamRunning(test.result.Name); err != nil {
 			return err
 		}
+		test.result.Status = release.TestRun_RUNNING
 
 		resourceCreated := true
 		if err := env.createTestPod(test); err != nil {
@@ -93,7 +95,7 @@ func (ts *TestSuite) Run(env *Environment) error {
 			status, err = env.getTestPodStatus(test)
 			if err != nil {
 				resourceCleanExit = false
-				if streamErr := env.streamUnknown(test.result.Name, test.result.Info); streamErr != nil {
+				if streamErr := env.streamError(test.result.Info); streamErr != nil {
 					return streamErr
 				}
 			}
diff --git a/pkg/tiller/release_server.go b/pkg/tiller/release_server.go
index adc4ddf3ca538f07165ecdb2503ce87d229e1503..33d3423ae1448629846f8d0621680e296692d706 100644
--- a/pkg/tiller/release_server.go
+++ b/pkg/tiller/release_server.go
@@ -1141,5 +1141,9 @@ func (s *ReleaseServer) RunReleaseTest(req *services.TestReleaseRequest, stream
 		testEnv.DeleteTestPods(tSuite.TestManifests)
 	}
 
-	return s.env.Releases.Update(rel)
+	if err := s.env.Releases.Update(rel); err != nil {
+		log.Printf("test: Failed to store updated release: %s", err)
+	}
+
+	return nil
 }