blob: a6dc642f54a9485e6dba57ec46ba504ff38deff0 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package kafka.message
import junit.framework.Assert._
import kafka.utils.TestUtils._
import org.scalatest.junit.JUnitSuite
import org.junit.Test
trait BaseMessageSetTestCases extends JUnitSuite {
val messages = Array(new Message("abcd".getBytes()), new Message("efgh".getBytes()))
def createMessageSet(messages: Seq[Message]): MessageSet
@Test
def testWrittenEqualsRead {
val messageSet = createMessageSet(messages)
checkEquals(messages.iterator, messageSet.map(m => m.message).iterator)
}
@Test
def testIteratorIsConsistent() {
val m = createMessageSet(messages)
// two iterators over the same set should give the same results
checkEquals(m.iterator, m.iterator)
}
@Test
def testSizeInBytes() {
assertEquals("Empty message set should have 0 bytes.",
0L,
createMessageSet(Array[Message]()).sizeInBytes)
assertEquals("Predicted size should equal actual size.",
MessageSet.messageSetSize(messages).toLong,
createMessageSet(messages).sizeInBytes)
}
@Test
def testWriteTo() {
// test empty message set
testWriteToWithMessageSet(createMessageSet(Array[Message]()))
testWriteToWithMessageSet(createMessageSet(messages))
}
def testWriteToWithMessageSet(set: MessageSet) {
val channel = tempChannel()
val written = set.writeTo(channel, 0, 1024)
assertEquals("Expect to write the number of bytes in the set.", set.sizeInBytes, written)
val newSet = new FileMessageSet(channel, false)
checkEquals(set.iterator, newSet.iterator)
}
}