Example #1
0
func TestParserReturnsMultiStreamsWhenNoStreamsAlreadyExist(t *testing.T) {
	parser := chunk.NewParser(nil)

	stream, err := parser.Stream(1, 2, 3)

	assert.Nil(t, err)
	assert.NotNil(t, stream)
}
Example #2
0
func TestParserReturnsNewSingleChunkStreams(t *testing.T) {
	parser := chunk.NewParser(nil)

	stream, err := parser.Stream(1)

	assert.NotNil(t, stream)
	assert.Nil(t, err)
}
Example #3
0
func TestParserDoesNotReturnMultiStreamsWhenStreamsAlreadyExist(t *testing.T) {
	parser := chunk.NewParser(nil)

	parser.Stream(1) // take out stream ID 1

	multiStream, err := parser.Stream(1, 2)

	assert.Nil(t, multiStream)
	assert.Equal(t, "rtmp/chunk: stream 1 already exists", err.Error())
}
Example #4
0
func TestParserReturnsConsistentChunkStreams(t *testing.T) {
	parser := chunk.NewParser(nil)

	s1, _ := parser.Stream(1)
	s2, _ := parser.Stream(1)

	assert.True(t,
		reflect.ValueOf(s1).Pointer() == reflect.ValueOf(s2).Pointer(),
		"rtmp/chunk: parser should return identical streams, but pointer values differed")
}
Example #5
0
func newStreamWithChunk(streamId uint32, chunks ...*chunk.Chunk) chunk.Stream {
	buf := new(bytes.Buffer)
	for _, c := range chunks {
		chunk.NewWriter(buf, chunk.DefaultReadSize).Write(c)
	}

	parser := chunk.NewParser(chunk.NewReader(
		buf, chunk.DefaultReadSize, chunk.NoopNormalizer,
	))
	go parser.Recv()

	st, _ := parser.Stream(streamId)
	return st
}
Example #6
0
func TestStreamClosesAfterSignalSent(t *testing.T) {
	errs := make(chan error, 2)
	chunks := make(chan *chunk.Chunk)

	reader := &MockReader{}
	reader.On("Recv").Return().Once()
	reader.On("Chunks").Return(chunks)
	reader.On("Errs").Return(errs)
	reader.On("Close").Return().Once()

	p := chunk.NewParser(reader)

	go p.Recv()
	p.Close()

	// reader.AssertExpectations(t)
}
Example #7
0
func TestStreamPropogatesErrors(t *testing.T) {
	errs := make(chan error, 2)
	chunks := make(chan *chunk.Chunk)

	reader := &MockReader{}
	reader.On("Recv").Return().Once()
	reader.On("Chunks").Return(chunks)
	reader.On("Errs").Return(errs)
	reader.On("Close").Return()

	p := chunk.NewParser(reader)
	errs <- errors.New("testing: some error")

	go p.Recv()

	err := <-p.Errs()

	p.Close()

	// reader.AssertExpectations(t)
	assert.Equal(t, "testing: some error", err.Error())
}
Example #8
0
// New instantiates and returns a pointer to a new instance of type Client. The
// client is initialized with the given connection.
func New(conn io.ReadWriter) *Client {
	chunkWriter := chunk.NewWriter(conn, 4096)
	chunks := chunk.NewParser(chunk.NewReader(
		conn, chunk.DefaultReadSize, chunk.NewNormalizer(),
	))

	controlChunks, _ := chunks.Stream(2)
	netChunks, _ := chunks.Stream(3, 4, 5, 8)

	return &Client{
		chunks: chunks,

		controlStream: control.NewStream(
			controlChunks,
			chunkWriter,
			control.NewParser(),
			control.NewChunker(),
		),

		cmdManager: cmd.New(netChunks, chunkWriter),

		Conn: conn,
	}
}
Example #9
0
func TestNewStreamReturnsNewStreams(t *testing.T) {
	p := chunk.NewParser(&MockReader{})

	assert.IsType(t, &chunk.Parser{}, p)
}