2013-05-22 01:10:21 -04:00
|
|
|
package rpc
|
|
|
|
|
|
|
|
import (
|
|
|
|
"cgl.tideland.biz/asserts"
|
|
|
|
"github.com/mitchellh/packer/packer"
|
|
|
|
"net/rpc"
|
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
|
|
|
type testArtifact struct{}
|
|
|
|
|
|
|
|
func (testArtifact) BuilderId() string {
|
|
|
|
return "bid"
|
|
|
|
}
|
|
|
|
|
|
|
|
func (testArtifact) Files() []string {
|
|
|
|
return []string{"a", "b"}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (testArtifact) Id() string {
|
|
|
|
return "id"
|
|
|
|
}
|
|
|
|
|
|
|
|
func (testArtifact) String() string {
|
|
|
|
return "string"
|
|
|
|
}
|
|
|
|
|
2013-06-18 19:01:14 -04:00
|
|
|
func (testArtifact) Destroy() error {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2013-05-22 01:10:21 -04:00
|
|
|
func TestArtifactRPC(t *testing.T) {
|
|
|
|
assert := asserts.NewTestingAsserts(t, true)
|
|
|
|
|
|
|
|
// Create the interface to test
|
|
|
|
a := new(testArtifact)
|
|
|
|
|
|
|
|
// Start the server
|
|
|
|
server := rpc.NewServer()
|
|
|
|
RegisterArtifact(server, a)
|
|
|
|
address := serveSingleConn(server)
|
|
|
|
|
|
|
|
// Create the client over RPC and run some methods to verify it works
|
|
|
|
client, err := rpc.Dial("tcp", address)
|
|
|
|
assert.Nil(err, "should be able to connect")
|
|
|
|
aClient := Artifact(client)
|
|
|
|
|
|
|
|
// Test
|
|
|
|
assert.Equal(aClient.BuilderId(), "bid", "should have correct builder ID")
|
|
|
|
assert.Equal(aClient.Files(), []string{"a", "b"}, "should have correct builder ID")
|
|
|
|
assert.Equal(aClient.Id(), "id", "should have correct builder ID")
|
|
|
|
assert.Equal(aClient.String(), "string", "should have correct builder ID")
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestArtifact_Implements(t *testing.T) {
|
|
|
|
assert := asserts.NewTestingAsserts(t, true)
|
|
|
|
|
|
|
|
var r packer.Artifact
|
|
|
|
a := Artifact(nil)
|
|
|
|
|
|
|
|
assert.Implementor(a, &r, "should be an Artifact")
|
|
|
|
}
|