|
3 | 3 | require_relative "../test_helper" |
4 | 4 |
|
5 | 5 | describe ElastomerClient::Client::Ccr do |
6 | | - before do |
| 6 | + before :each do |
7 | 7 | skip "Cannot test Ccr API without a replica cluster" unless $replica_client.available? |
8 | 8 |
|
9 | 9 | @leader_index = $client.index("leader_index") |
|
27 | 27 | @leader_index.create(default_index_settings) |
28 | 28 | wait_for_index(@leader_index.name, "green") |
29 | 29 |
|
30 | | - @leader_index.docs.index(document_wrapper("book", { _id: 1, title: "Book 1" })) |
31 | | - @leader_index.refresh |
32 | | - |
33 | 30 | begin |
34 | 31 | ccr.delete_auto_follow("follower_pattern") |
35 | 32 | rescue StandardError |
36 | 33 | puts "No auto-follow pattern to delete" |
37 | 34 | end |
38 | 35 | end |
39 | 36 |
|
40 | | - after do |
| 37 | + after :each do |
41 | 38 | @leader_index.delete if @leader_index.exists? |
42 | 39 | @follower_index.delete if @follower_index.exists? |
43 | 40 | @auto_followed_index.delete if @auto_followed_index.exists? |
|
50 | 47 | end |
51 | 48 | end |
52 | 49 |
|
53 | | - it "successfully follows a leader index" do |
| 50 | + def follow_index(follower_index_name, leader_index_name) |
54 | 51 | ccr = $replica_client.ccr |
| 52 | + response = ccr.follow(follower_index_name, { leader_index: leader_index_name, remote_cluster: "leader" }) |
| 53 | + wait_for_index(follower_index_name, "green") |
| 54 | + response |
| 55 | + end |
| 56 | + |
| 57 | + def pause_follow(follower_index_name) |
| 58 | + ccr = $replica_client.ccr |
| 59 | + response = ccr.pause_follow(follower_index_name) |
| 60 | + wait_for_index(follower_index_name, "green") |
| 61 | + response |
| 62 | + end |
| 63 | + |
| 64 | + def unfollow_index(follower_index_name) |
| 65 | + ccr = $replica_client.ccr |
| 66 | + response = ccr.unfollow(follower_index_name) |
| 67 | + wait_for_index(follower_index_name, "green") |
| 68 | + response |
| 69 | + end |
| 70 | + |
| 71 | + def create_document(index, type, document) |
| 72 | + response = index.docs.index(document_wrapper(type, document)) |
| 73 | + index.refresh |
| 74 | + response |
| 75 | + end |
| 76 | + |
| 77 | + it "successfully follows a leader index" do |
| 78 | + create_document(@leader_index, "book", { _id: 1, title: "Book 1" }) |
| 79 | + |
| 80 | + follow_index(@follower_index, @leader_index) |
55 | 81 |
|
56 | | - ccr.follow(@follower_index.name, { leader_index: @leader_index.name, remote_cluster: "leader" }) |
57 | | - wait_for_index(@follower_index.name, "green") |
58 | 82 | doc = @follower_index.docs.get(id: 1, type: "book") |
59 | 83 |
|
60 | 84 | assert_equal "Book 1", doc["_source"]["title"] |
61 | 85 | end |
62 | 86 |
|
| 87 | + it "successfully pauses a follower index" do |
| 88 | + follow_index(@follower_index, @leader_index) |
| 89 | + |
| 90 | + response = pause_follow(@follower_index) |
| 91 | + |
| 92 | + assert response["acknowledged"] |
| 93 | + |
| 94 | + create_document(@leader_index, "book", { _id: 2, title: "Book 2" }) |
| 95 | + |
| 96 | + doc = @follower_index.docs.get(id: 2, type: "book") |
| 97 | + |
| 98 | + refute doc["found"] |
| 99 | + end |
| 100 | + |
| 101 | + it "successfully unfollow a leader index" do |
| 102 | + follow_index(@follower_index, @leader_index) |
| 103 | + |
| 104 | + pause_follow(@follower_index) |
| 105 | + |
| 106 | + @follower_index.close |
| 107 | + |
| 108 | + response = unfollow_index(@follower_index) |
| 109 | + |
| 110 | + assert response["acknowledged"] |
| 111 | + |
| 112 | + @follower_index.open |
| 113 | + |
| 114 | + wait_for_index(@follower_index.name, "green") |
| 115 | + |
| 116 | + create_document(@leader_index, "book", { _id: 2, title: "Book 2" }) |
| 117 | + |
| 118 | + doc = @follower_index.docs.get(id: 2, type: "book") |
| 119 | + |
| 120 | + refute doc["found"] |
| 121 | + end |
| 122 | + |
63 | 123 | it "successfully implements an auto-follow policy" do |
64 | 124 | ccr = $replica_client.ccr |
65 | 125 |
|
|
0 commit comments