Advertisement
Guest User

Untitled

a guest
Jan 18th, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.77 KB | None | 0 0
  1. package com.catalina.platform.api.repositories.hbase;
  2.  
  3. import static org.fest.assertions.api.Assertions.*;
  4. import static org.mockito.Mockito.*;
  5.  
  6. import java.io.IOException;
  7. import java.util.ArrayList;
  8. import java.util.Scanner;
  9. import java.util.UUID;
  10.  
  11. import com.catalina.platform.hadoop.hbase.HBaseClient;
  12. import org.hbase.async.GetRequest;
  13. import org.hbase.async.KeyValue;
  14. import org.hbase.async.PutRequest;
  15. import org.joda.time.DateTime;
  16. import org.junit.Before;
  17. import org.junit.Test;
  18. import org.junit.runner.RunWith;
  19. import org.mockito.InjectMocks;
  20. import org.mockito.Mock;
  21. import org.mockito.MockitoAnnotations;
  22. import org.mockito.runners.MockitoJUnitRunner;
  23. import org.powermock.core.classloader.annotations.PowerMockIgnore;
  24. import org.powermock.core.classloader.annotations.PrepareForTest;
  25. import org.powermock.modules.junit4.PowerMockRunner;
  26.  
  27. import com.catalina.platform.DateFunctions;
  28. import com.catalina.platform._;
  29. import com.catalina.platform.api.barcodes.BarcodeLease;
  30. import com.catalina.platform.api.barcodes.BarcodeLeases;
  31. import com.catalina.platform.api.models.advertiser.BarcodeType;
  32. import com.catalina.platform.api.models.advertiser.Promotion;
  33. import com.catalina.platform.api.models.publisher.Experience;
  34. import com.stumbleupon.async.Deferred;
  35.  
  36. @RunWith(MockitoJUnitRunner.class)
  37. public class HbaseBarcodeReservationRepositoryTest {
  38.  
  39. @Mock
  40. private HBaseClient client;
  41. @InjectMocks
  42. private HbaseBarcodeReservationRepository repo;
  43. private Promotion promotion;
  44.  
  45. @Before
  46. public void init() throws IOException {
  47. //client = mock(HBaseClient.class);
  48.  
  49. //Deferred<Object> table_check = new Deferred<>();
  50. //when(client.ensureTableExists("barcodes")).thenReturn(table_check);
  51. //table_check.callback(true);
  52.  
  53. repo = new HbaseBarcodeReservationRepository("barcodes");
  54.  
  55. promotion = new Promotion(Experience.newBuilder().withId("foo").build());
  56. promotion.id = UUID.randomUUID().toString();
  57. promotion.start_date = DateFunctions.toISO8601(DateTime.now().withTimeAtStartOfDay());
  58. promotion.stop_date = DateFunctions.toISO8601(DateTime.now().withTimeAtStartOfDay().plusDays(7));
  59. MockitoAnnotations.initMocks(this);
  60. }
  61.  
  62. @Test
  63. public void we_can_claim_a_barcode() {
  64. BarcodeLeases v = new BarcodeLeases("USA", BarcodeType.EAN13, "1234123412");
  65.  
  66. when(client.get("barcodes","1234123412", "c")).thenReturn(_.toJson(v).getBytes());
  67. //when(hbase_client.get(TABLE_NAME, "689:helvetica", AbstractHbaseRepository.Schema.COLUMN_FAMILY)).thenReturn(hbase.serialize(sample_font));
  68.  
  69. //ArrayList<KeyValue> rows = new ArrayList<>();
  70. //rows.add(new KeyValue("doesntmatter".getBytes(), "c".getBytes(), "doc".getBytes(), _.toJson(v).getBytes()));
  71. //dfd.callback(rows);
  72.  
  73. Boolean success = this.repo.tryLease(BarcodeType.EAN13, "1234123412", promotion, 14);
  74.  
  75. assertThat(success).isTrue();
  76.  
  77. //verify(this.client, times(1)).put(any(PutRequest.class));
  78. }
  79.  
  80.  
  81. @Test
  82. public void when_barcode_already_claimed_we_cant_claim_it_for_ourselves() {
  83.  
  84. BarcodeLeases v = new BarcodeLeases("USA", BarcodeType.EAN13, "1234123412");
  85. BarcodeLease e = new BarcodeLease();
  86. e.promotion_id = "some other promotion";
  87. e.expire_date = DateFunctions.toISO8601(DateTime.now().plusDays(7));
  88. v.leases.add(e);
  89.  
  90.  
  91. when(client.get("barcodes","1234123412", "c")).thenReturn(repo.serialize(v));
  92.  
  93.  
  94. Boolean success = this.repo.tryLease(BarcodeType.EAN13, "1234123412", promotion, 14);
  95.  
  96. assertThat(success).isFalse();
  97.  
  98. //verify(this.client, times(0)).put(any(PutRequest.class));
  99. }
  100.  
  101. @Test
  102. public void when_we_are_the_one_with_an_active_lease_we_can_lease_again() {
  103.  
  104. BarcodeLeases v = new BarcodeLeases("USA", BarcodeType.EAN13, "1234123412");
  105. BarcodeLease e = new BarcodeLease();
  106. e.promotion_id = promotion.id;
  107. e.expire_date = DateFunctions.toISO8601(DateTime.now().plusDays(7));
  108. v.leases.add(e);
  109.  
  110.  
  111. when(client.get("barcodes","1234123412", AbstractHbaseRepository.Schema.COLUMN_FAMILY)).thenReturn(_.toJson(v).getBytes());
  112.  
  113.  
  114. Boolean success = this.repo.tryLease(BarcodeType.EAN13, "1234123412", promotion, 14);
  115.  
  116. assertThat(success).isTrue();
  117.  
  118. //verify(this.client, times(1)).put(any(PutRequest.class));
  119. }
  120.  
  121. @Test
  122. public void we_can_get_the_active_lease() {
  123.  
  124. BarcodeLeases v = new BarcodeLeases("USA", BarcodeType.EAN13, "1234123412");
  125. BarcodeLease e = new BarcodeLease();
  126. e.promotion_id = promotion.id;
  127. e.expire_date = DateFunctions.toISO8601(DateTime.now().plusDays(7));
  128. v.leases.add(e);
  129.  
  130.  
  131. when(client.get("barcodes","1234123412", "c")).thenReturn(_.toJson(v).getBytes());
  132.  
  133.  
  134. BarcodeLease value = this.repo.getLeaseIfPresent(BarcodeType.EAN13, "1234123412");
  135.  
  136. assertThat(value).isNotNull();
  137. }
  138.  
  139. @Test
  140. public void we_can_release_leases() {
  141. BarcodeLeases v = new BarcodeLeases("USA", BarcodeType.EAN13, "1234123412");
  142. BarcodeLease e = new BarcodeLease();
  143. e.promotion_id = promotion.id;
  144. e.expire_date = DateFunctions.toISO8601(DateTime.now().plusDays(7));
  145. v.leases.add(e);
  146.  
  147. Deferred<ArrayList<KeyValue>> dfd = new Deferred<>();
  148. when(client.get("barcodes","1234123412", AbstractHbaseRepository.Schema.COLUMN_FAMILY)).thenReturn(_.toJson(v).getBytes());
  149.  
  150.  
  151. this.repo.release(BarcodeType.EAN13, "1234123412", promotion);
  152.  
  153. verify(this.client, times(1)).put("barcodes","1234123412", AbstractHbaseRepository.Schema.COLUMN_FAMILY, AbstractHbaseRepository.Schema.Qualifier, _.toJson(v).getBytes());
  154. }
  155. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement