diff options
author | Chris <ccbrown112@gmail.com> | 2017-09-11 10:02:02 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-11 10:02:02 -0500 |
commit | 402491b7e52c4d836c1274976cdb387852cfd17b (patch) | |
tree | e8adcbdf0af5370f8af11e3fc1021a328c971a5d /plugin/rpcplugin/io_test.go | |
parent | a69bed712d53e9a7984915fffffc8a2fd1647a7a (diff) | |
download | chat-402491b7e52c4d836c1274976cdb387852cfd17b.tar.gz chat-402491b7e52c4d836c1274976cdb387852cfd17b.tar.bz2 chat-402491b7e52c4d836c1274976cdb387852cfd17b.zip |
PLT-7407: Back-end plugins (#7409)
* tie back-end plugins together
* fix comment typo
* add tests and a bit of polish
* tests and polish
* add test, don't let backend executable paths escape the plugin directory
Diffstat (limited to 'plugin/rpcplugin/io_test.go')
-rw-r--r-- | plugin/rpcplugin/io_test.go | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/plugin/rpcplugin/io_test.go b/plugin/rpcplugin/io_test.go new file mode 100644 index 000000000..cb31b23b3 --- /dev/null +++ b/plugin/rpcplugin/io_test.go @@ -0,0 +1,73 @@ +package rpcplugin + +import ( + "io/ioutil" + "os" + "testing" + "time" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestNewAsyncReadCloser(t *testing.T) { + rf, w, err := os.Pipe() + require.NoError(t, err) + r := NewAsyncReadCloser(rf) + defer r.Close() + + go func() { + w.Write([]byte("foo")) + w.Close() + }() + + foo, err := ioutil.ReadAll(r) + require.NoError(t, err) + assert.Equal(t, "foo", string(foo)) +} + +func TestNewAsyncReadCloser_CloseDuringRead(t *testing.T) { + rf, w, err := os.Pipe() + require.NoError(t, err) + defer w.Close() + + r := NewAsyncReadCloser(rf) + + go func() { + time.Sleep(time.Millisecond * 200) + r.Close() + }() + r.Read(make([]byte, 10)) +} + +func TestNewAsyncWriteCloser(t *testing.T) { + r, wf, err := os.Pipe() + require.NoError(t, err) + w := NewAsyncWriteCloser(wf) + defer w.Close() + + go func() { + foo, err := ioutil.ReadAll(r) + require.NoError(t, err) + assert.Equal(t, "foo", string(foo)) + r.Close() + }() + + n, err := w.Write([]byte("foo")) + require.NoError(t, err) + assert.Equal(t, 3, n) +} + +func TestNewAsyncWriteCloser_CloseDuringWrite(t *testing.T) { + r, wf, err := os.Pipe() + require.NoError(t, err) + defer r.Close() + + w := NewAsyncWriteCloser(wf) + + go func() { + time.Sleep(time.Millisecond * 200) + w.Close() + }() + w.Write(make([]byte, 10)) +} |