BUG 2437 - Enable snapshotting based on size of data in the in-memory journal
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / test / java / org / opendaylight / controller / programs / appendentries / Client.java
1 /*
2  * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.controller.programs.appendentries;
10
11 import akka.actor.ActorSelection;
12 import akka.actor.ActorSystem;
13 import akka.actor.Props;
14 import akka.actor.UntypedActor;
15 import com.typesafe.config.ConfigFactory;
16 import java.util.ArrayList;
17 import java.util.List;
18 import org.opendaylight.controller.cluster.datastore.modification.MutableCompositeModification;
19 import org.opendaylight.controller.cluster.datastore.modification.WriteModification;
20 import org.opendaylight.controller.cluster.example.messages.KeyValue;
21 import org.opendaylight.controller.cluster.raft.ReplicatedLogEntry;
22 import org.opendaylight.controller.cluster.raft.messages.AppendEntries;
23 import org.opendaylight.controller.cluster.raft.protobuff.client.messages.CompositeModificationPayload;
24 import org.opendaylight.controller.cluster.raft.protobuff.client.messages.Payload;
25 import org.opendaylight.controller.md.cluster.datastore.model.TestModel;
26 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
27
28 public class Client {
29
30     private static ActorSystem actorSystem;
31
32     public static class ClientActor extends UntypedActor {
33
34         @Override public void onReceive(Object message) throws Exception {
35
36         }
37     }
38
39     public static void main(String[] args){
40         actorSystem = ActorSystem.create("appendentries", ConfigFactory
41             .load().getConfig("ODLCluster"));
42
43         ActorSelection actorSelection = actorSystem.actorSelection(
44             "akka.tcp://appendentries@127.0.0.1:2550/user/server");
45
46         AppendEntries appendEntries = modificationAppendEntries();
47
48         Payload data = appendEntries.getEntries().get(0).getData();
49         if(data instanceof CompositeModificationPayload) {
50             System.out.println(
51                 "Sending : " + ((CompositeModificationPayload) data)
52                     .getModification());
53         } else {
54             System.out.println(
55                 "Sending : " + ((KeyValue) data)
56                     .getKey());
57
58         }
59
60         actorSelection.tell(appendEntries.toSerializable(), null);
61
62
63
64
65         actorSystem.actorOf(Props.create(ClientActor.class), "client");
66     }
67
68     public static AppendEntries modificationAppendEntries() {
69         List<ReplicatedLogEntry> modification = new ArrayList<>();
70
71         modification.add(0, new ReplicatedLogEntry() {
72             @Override public Payload getData() {
73                 WriteModification writeModification =
74                     new WriteModification(TestModel.TEST_PATH, ImmutableNodes
75                         .containerNode(TestModel.TEST_QNAME),
76                         TestModel.createTestContext()
77                     );
78
79                 MutableCompositeModification compositeModification =
80                     new MutableCompositeModification();
81
82                 compositeModification.addModification(writeModification);
83
84                 return new CompositeModificationPayload(
85                     compositeModification.toSerializable());
86             }
87
88             @Override public long getTerm() {
89                 return 1;
90             }
91
92             @Override public long getIndex() {
93                 return 1;
94             }
95
96             @Override
97             public int size() {
98                 return getData().size();
99             }
100         });
101
102         return new AppendEntries(1, "member-1", 0, 100, modification, 1);
103     }
104
105     public static AppendEntries keyValueAppendEntries() {
106         List<ReplicatedLogEntry> modification = new ArrayList<>();
107
108         modification.add(0, new ReplicatedLogEntry() {
109             @Override public Payload getData() {
110                 return new KeyValue("moiz", "test");
111             }
112
113             @Override public long getTerm() {
114                 return 1;
115             }
116
117             @Override public long getIndex() {
118                 return 1;
119             }
120
121             @Override
122             public int size() {
123                 return getData().size();
124             }
125         });
126
127         return new AppendEntries(1, "member-1", 0, 100, modification, 1);
128     }
129 }