|
1 | 1 | package redis.clients.jedis.modules.timeseries;
|
2 | 2 |
|
3 |
| -import static org.junit.Assert.assertEquals; |
4 |
| -import static org.junit.Assert.assertNotEquals; |
5 |
| -import static org.junit.Assert.assertNotNull; |
6 |
| -import static org.junit.Assert.assertNull; |
7 |
| -import static org.junit.Assert.assertTrue; |
8 |
| -import static org.junit.Assert.fail; |
| 3 | +import static org.junit.Assert.*; |
9 | 4 |
|
10 | 5 | import java.util.*;
|
11 | 6 | import org.junit.BeforeClass;
|
@@ -533,6 +528,71 @@ public void mrangeFilterBy() {
|
533 | 528 | assertEquals(Arrays.asList(rawValues[0]), range.get(0).getValue());
|
534 | 529 | }
|
535 | 530 |
|
| 531 | + @Test |
| 532 | + public void mrangeFilterByRoundRobin() { |
| 533 | + TsMRangeRoundRobin rr; |
| 534 | + List<TSKeyedElements> range; |
| 535 | + |
| 536 | + Map<String, String> labels = Collections.singletonMap("label", "multi"); |
| 537 | + client.tsCreate("ts1", TSCreateParams.createParams().labels(labels)); |
| 538 | + client.tsCreate("ts2", TSCreateParams.createParams().labels(labels)); |
| 539 | + String filter = "label=multi"; |
| 540 | + |
| 541 | + TSElement[] rawValues = new TSElement[]{ |
| 542 | + new TSElement(1000L, 1.0), |
| 543 | + new TSElement(2000L, 0.9), |
| 544 | + new TSElement(3200L, 1.1), |
| 545 | + new TSElement(4500L, -1.1) |
| 546 | + }; |
| 547 | + |
| 548 | + client.tsAdd("ts1", rawValues[0].getTimestamp(), rawValues[0].getValue()); |
| 549 | + client.tsAdd("ts2", rawValues[1].getTimestamp(), rawValues[1].getValue()); |
| 550 | + client.tsAdd("ts2", rawValues[2].getTimestamp(), rawValues[2].getValue()); |
| 551 | + client.tsAdd("ts1", rawValues[3].getTimestamp(), rawValues[3].getValue()); |
| 552 | + |
| 553 | + // MRANGE |
| 554 | + rr = client.tsMRangeRoundRobin(TSMRangeParams.multiRangeParams(0L, 5000L) |
| 555 | + .filterByTS(1000L, 2000L).filter(filter)); |
| 556 | + assertFalse(rr.isRoundRobinCompleted()); |
| 557 | + range = rr.get(); |
| 558 | + assertEquals("ts1", range.get(0).getKey()); |
| 559 | + assertEquals(Arrays.asList(rawValues[0]), range.get(0).getValue()); |
| 560 | + assertEquals("ts2", range.get(1).getKey()); |
| 561 | + assertEquals(Arrays.asList(rawValues[1]), range.get(1).getValue()); |
| 562 | + assertTrue(rr.isRoundRobinCompleted()); |
| 563 | + |
| 564 | + rr = client.tsMRangeRoundRobin(TSMRangeParams.multiRangeParams(0L, 5000L) |
| 565 | + .filterByValues(1.0, 1.2).filter(filter)); |
| 566 | + assertFalse(rr.isRoundRobinCompleted()); |
| 567 | + range = rr.get(); |
| 568 | + assertEquals("ts1", range.get(0).getKey()); |
| 569 | + assertEquals(Arrays.asList(rawValues[0]), range.get(0).getValue()); |
| 570 | + assertEquals("ts2", range.get(1).getKey()); |
| 571 | + assertEquals(Arrays.asList(rawValues[2]), range.get(1).getValue()); |
| 572 | + assertTrue(rr.isRoundRobinCompleted()); |
| 573 | + |
| 574 | + // MREVRANGE |
| 575 | + rr = client.tsMRevRangeRoundRobin(TSMRangeParams.multiRangeParams(0L, 5000L) |
| 576 | + .filterByTS(1000L, 2000L).filter(filter)); |
| 577 | + assertFalse(rr.isRoundRobinCompleted()); |
| 578 | + range = rr.get(); |
| 579 | + assertEquals("ts1", range.get(0).getKey()); |
| 580 | + assertEquals(Arrays.asList(rawValues[0]), range.get(0).getValue()); |
| 581 | + assertEquals("ts2", range.get(1).getKey()); |
| 582 | + assertEquals(Arrays.asList(rawValues[1]), range.get(1).getValue()); |
| 583 | + assertTrue(rr.isRoundRobinCompleted()); |
| 584 | + |
| 585 | + rr = client.tsMRevRangeRoundRobin(TSMRangeParams.multiRangeParams(0L, 5000L) |
| 586 | + .filterByValues(1.0, 1.2).filter(filter)); |
| 587 | + assertFalse(rr.isRoundRobinCompleted()); |
| 588 | + range = rr.get(); |
| 589 | + assertEquals("ts1", range.get(0).getKey()); |
| 590 | + assertEquals(Arrays.asList(rawValues[0]), range.get(0).getValue()); |
| 591 | + assertEquals("ts2", range.get(1).getKey()); |
| 592 | + assertEquals(Arrays.asList(rawValues[2]), range.get(1).getValue()); |
| 593 | + assertTrue(rr.isRoundRobinCompleted()); |
| 594 | + } |
| 595 | + |
536 | 596 | @Test
|
537 | 597 | public void groupByReduce() {
|
538 | 598 | client.tsCreate("ts1", TSCreateParams.createParams().labels(convertMap("metric", "cpu", "metric_name", "system")));
|
@@ -624,6 +684,47 @@ public void testMGet() {
|
624 | 684 | assertNull(ranges3.get(1).getValue());
|
625 | 685 | }
|
626 | 686 |
|
| 687 | + @Test |
| 688 | + public void mgetRoundRobin() { |
| 689 | + TsMGetRoundRobin rr; |
| 690 | + Map<String, String> labels = new HashMap<>(); |
| 691 | + labels.put("l1", "v1"); |
| 692 | + labels.put("l2", "v2"); |
| 693 | + assertEquals("OK", client.tsCreate("seriesMGet1", TSCreateParams.createParams() |
| 694 | + .retention(100 * 1000 /*100sec retentionTime*/).labels(labels))); |
| 695 | + assertEquals("OK", client.tsCreate("seriesMGet2", TSCreateParams.createParams() |
| 696 | + .retention(100 * 1000 /*100sec retentionTime*/).labels(labels))); |
| 697 | + |
| 698 | + // Test for empty result |
| 699 | + rr = client.tsMGetRoundRobin(TSMGetParams.multiGetParams().withLabels(false), "l1=v2"); |
| 700 | + assertFalse(rr.isRoundRobinCompleted()); |
| 701 | + List<TSKeyValue<TSElement>> ranges1 = rr.get(); |
| 702 | + assertEquals(0, ranges1.size()); |
| 703 | + assertTrue(rr.isRoundRobinCompleted()); |
| 704 | + |
| 705 | + // Test for empty ranges |
| 706 | + rr = client.tsMGetRoundRobin(TSMGetParams.multiGetParams().withLabels(true), "l1=v1"); |
| 707 | + assertFalse(rr.isRoundRobinCompleted()); |
| 708 | + List<TSKeyValue<TSElement>> ranges2 = rr.get(); |
| 709 | + assertEquals(2, ranges2.size()); |
| 710 | + assertEquals(labels, ranges2.get(0).getLabels()); |
| 711 | + assertEquals(labels, ranges2.get(1).getLabels()); |
| 712 | + assertNull(ranges2.get(0).getValue()); |
| 713 | + assertTrue(rr.isRoundRobinCompleted()); |
| 714 | + |
| 715 | + // Test for returned result on MGet |
| 716 | + client.tsAdd("seriesMGet1", 1500, 1.3); |
| 717 | + rr = client.tsMGetRoundRobin(TSMGetParams.multiGetParams().withLabels(false), "l1=v1"); |
| 718 | + assertFalse(rr.isRoundRobinCompleted()); |
| 719 | + List<TSKeyValue<TSElement>> ranges3 = rr.get(); |
| 720 | + assertEquals(2, ranges3.size()); |
| 721 | + assertEquals(Collections.emptyMap(), ranges3.get(0).getLabels()); |
| 722 | + assertEquals(Collections.emptyMap(), ranges3.get(1).getLabels()); |
| 723 | + assertEquals(new TSElement(1500, 1.3), ranges3.get(0).getValue()); |
| 724 | + assertNull(ranges3.get(1).getValue()); |
| 725 | + assertTrue(rr.isRoundRobinCompleted()); |
| 726 | + } |
| 727 | + |
627 | 728 | @Test
|
628 | 729 | public void testQueryIndex() {
|
629 | 730 |
|
|
0 commit comments