packer-cn/packer/rpc/provisioner_test.go

54 lines
1.1 KiB
Go
Raw Normal View History

2013-05-22 18:35:52 -04:00
package rpc
import (
"context"
2013-10-16 23:04:57 -04:00
"reflect"
2013-05-22 18:35:52 -04:00
"testing"
2018-01-22 20:21:10 -05:00
"github.com/hashicorp/packer/packer"
2013-05-22 18:35:52 -04:00
)
func TestProvisionerRPC(t *testing.T) {
topCtx, topCtxCancel := context.WithCancel(context.Background())
2013-05-22 18:35:52 -04:00
// Create the interface to test
p := new(packer.MockProvisioner)
p.ProvFunc = func(ctx context.Context) error {
topCtxCancel()
<-ctx.Done()
return ctx.Err()
}
2013-05-22 18:35:52 -04:00
// Start the server
2013-12-10 14:56:15 -05:00
client, server := testClientServer(t)
defer client.Close()
defer server.Close()
server.RegisterProvisioner(p)
pClient := client.Provisioner()
2013-05-22 18:35:52 -04:00
// Test Prepare
config := 42
pClient.Prepare(config)
2013-10-16 23:04:57 -04:00
if !p.PrepCalled {
t.Fatal("should be called")
}
2014-04-26 16:31:22 -04:00
expected := []interface{}{int64(42)}
if !reflect.DeepEqual(p.PrepConfigs, expected) {
2013-10-16 23:04:57 -04:00
t.Fatalf("bad: %#v", p.PrepConfigs)
}
2013-05-22 18:35:52 -04:00
// Test Provision
ui := &testUi{}
comm := &packer.MockCommunicator{}
2019-12-11 19:29:35 -05:00
if err := pClient.Provision(topCtx, ui, comm, make(map[interface{}]interface{})); err == nil {
t.Fatalf("Provison should have err")
}
2013-10-16 23:04:57 -04:00
if !p.ProvCalled {
t.Fatal("should be called")
}
2013-05-22 18:35:52 -04:00
}
func TestProvisioner_Implements(t *testing.T) {
2013-12-10 16:26:07 -05:00
var _ packer.Provisioner = new(provisioner)
2013-05-22 18:35:52 -04:00
}