packer-cn/packer/rpc/provisioner_test.go

59 lines
1.1 KiB
Go
Raw Normal View History

2013-05-22 18:35:52 -04:00
package rpc
import (
"github.com/mitchellh/packer/packer"
"net/rpc"
2013-10-16 23:04:57 -04:00
"reflect"
2013-05-22 18:35:52 -04:00
"testing"
)
func TestProvisionerRPC(t *testing.T) {
// Create the interface to test
p := new(packer.MockProvisioner)
2013-05-22 18:35:52 -04:00
// Start the server
server := rpc.NewServer()
RegisterProvisioner(server, p)
address := serveSingleConn(server)
// Create the client over RPC and run some methods to verify it works
client, err := rpc.Dial("tcp", address)
2013-10-16 23:04:57 -04:00
if err != nil {
t.Fatalf("err: %s", err)
}
2013-05-22 18:35:52 -04:00
// Test Prepare
config := 42
pClient := Provisioner(client)
pClient.Prepare(config)
2013-10-16 23:04:57 -04:00
if !p.PrepCalled {
t.Fatal("should be called")
}
if !reflect.DeepEqual(p.PrepConfigs, []interface{}{42}) {
t.Fatalf("bad: %#v", p.PrepConfigs)
}
2013-05-22 18:35:52 -04:00
// Test Provision
ui := &testUi{}
comm := &packer.MockCommunicator{}
2013-05-22 18:35:52 -04:00
pClient.Provision(ui, comm)
2013-10-16 23:04:57 -04:00
if !p.ProvCalled {
t.Fatal("should be called")
}
2013-05-22 18:35:52 -04:00
p.ProvUi.Say("foo")
2013-10-16 23:04:57 -04:00
if !ui.sayCalled {
t.Fatal("should be called")
}
// Test Cancel
pClient.Cancel()
if !p.CancelCalled {
t.Fatal("cancel should be called")
}
2013-05-22 18:35:52 -04:00
}
func TestProvisioner_Implements(t *testing.T) {
2013-10-16 23:04:57 -04:00
var _ packer.Provisioner = Provisioner(nil)
2013-05-22 18:35:52 -04:00
}