/* * Copyright 2012 NGDATA nv * * Licensed 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 org.lilyproject.sep; import java.io.IOException; import com.ngdata.sep.impl.HBaseEventPublisher; import org.apache.hadoop.hbase.client.HTableInterface; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.util.Bytes; import org.junit.Before; import org.junit.Test; import org.lilyproject.util.hbase.LilyHBaseSchema.RecordCf; import org.lilyproject.util.hbase.LilyHBaseSchema.RecordColumn; import static org.mockito.AdditionalMatchers.aryEq; import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; /** * Adapter from the Lily ZooKeeperItf interface and the HBase SEP ZooKeepterItf interface. */ public class LilyHBaseEventPublisherTest { private HTableInterface recordTable; private HBaseEventPublisher eventPublisher; @Before public void setUp() { recordTable = mock(HTableInterface.class); eventPublisher = new LilyHBaseEventPublisher(recordTable); } @Test public void testProcessMessage_RowInRepository() throws IOException { byte[] messageRow = Bytes.toBytes("row-id"); byte[] messagePayload = Bytes.toBytes("payload"); Put expectedPut = new Put(messageRow); expectedPut.add(RecordCf.DATA.bytes, RecordColumn.PAYLOAD.bytes, messagePayload); eventPublisher.publishEvent(messageRow, messagePayload); verify(recordTable).checkAndPut(aryEq(messageRow), aryEq(RecordCf.DATA.bytes), aryEq(RecordColumn.DELETED.bytes), aryEq(Bytes.toBytes(false)), any(Put.class)); } }