blob: 9427dfa3c3ff800bdccae84b66dc8674401ecec1 [file] [log] [blame]
Ashlesh Gawande465d1492019-01-10 15:12:01 -06001PSync examples
2==============
3
4By default, examples in ``examples/`` folder are not built. To enable them, use
5``--with-examples`` configure option. For example:
6
7.. code-block:: bash
8
9 ./waf configure --with-examples
10 ./waf
11
12
13Example binary can be found under ``build/examples``\ :
14
15
16* Full sync : ``psync-full-sync``
17* Partial sync : ``psync-producer`` and ``psync-consumer``
18
19If the library is installed to the system using ``./waf install`` then the examples
20are also installed and can be executed directly.
21
22Partial Sync Example
23--------------------
24
25Partial sync example of PSync has two parts: producer and consumer.
26These can be run on a machine after starting NFD:
27
28Producer
29^^^^^^^^
30
31* Enable the logs for producer:
32
33.. code-block:: bash
34
35 export NDN_LOG=examples.PartialSyncProducerApp=INFO
36
37
38* Start the producer that will listen on /sync and publish 1 update for /a-0 ... /a-9 each.
39
40.. code-block:: bash
41
42 psync-producer /sync /a 10 1
43
44
45* Sample output:
46
47.. code-block:: bash
48
49 1546280442.096296 INFO: [examples.PartialSyncProducerApp] Publish: /a-1/1
50 1546280456.053138 INFO: [examples.PartialSyncProducerApp] Publish: /a-6/1
51 1546280458.210415 INFO: [examples.PartialSyncProducerApp] Publish: /a-8/1
52 1546280469.954134 INFO: [examples.PartialSyncProducerApp] Publish: /a-5/1
53 1546280472.487425 INFO: [examples.PartialSyncProducerApp] Publish: /a-2/1
54 1546280473.466515 INFO: [examples.PartialSyncProducerApp] Publish: /a-7/1
55 1546280481.882258 INFO: [examples.PartialSyncProducerApp] Publish: /a-0/1
56 1546280484.201229 INFO: [examples.PartialSyncProducerApp] Publish: /a-4/1
57 1546280489.348968 INFO: [examples.PartialSyncProducerApp] Publish: /a-9/1
58 1546280491.420391 INFO: [examples.PartialSyncProducerApp] Publish: /a-3/1
59
60Consumer
61^^^^^^^^
62
63* In a new terminal, enable the logs for consumer:
64
65.. code-block:: bash
66
67 export NDN_LOG=examples.PartialSyncConsumerApp=INFO
68
69
70* Run the consumer to subscribe to 5 random prefixes from the publisher on /sync
71
72.. code-block:: bash
73
74 psync-consumer /sync 5
75
76
77* Sample output from the consumer shows that it received updates only
78 for the subscribed prefixes:
79
80.. code-block:: bash
81
82 1546280436.502769 INFO: [examples.PartialSyncConsumerApp] Subscribing to: /a-7
83 1546280436.502888 INFO: [examples.PartialSyncConsumerApp] Subscribing to: /a-9
84 1546280436.502911 INFO: [examples.PartialSyncConsumerApp] Subscribing to: /a-8
85 1546280436.502934 INFO: [examples.PartialSyncConsumerApp] Subscribing to: /a-4
86 1546280436.502956 INFO: [examples.PartialSyncConsumerApp] Subscribing to: /a-5
87 1546280458.211188 INFO: [examples.PartialSyncConsumerApp] Update: /a-8/1
88 1546280469.954886 INFO: [examples.PartialSyncConsumerApp] Update: /a-5/1
89 1546280473.467116 INFO: [examples.PartialSyncConsumerApp] Update: /a-7/1
90 1546280484.256181 INFO: [examples.PartialSyncConsumerApp] Update: /a-4/1
91 1546280489.349793 INFO: [examples.PartialSyncConsumerApp] Update: /a-9/1
92
93Full Sync Example
94-----------------
95
96To demonstrate full sync mode of PSync, ``psync-full-sync``
97can be run on a machine after starting NFD:
98
99
100* Enable the logs for full sync:
101
102.. code-block:: bash
103
104 export NDN_LOG=examples.FullSyncApp=INFO
105
106
107* Run the full sync example with sync prefix /sync, user prefix /a,
108 and publish three updates for each user prefix: /a-0 and /a-1. This will simulate node a.
109
110.. code-block:: bash
111
112 psync-full-sync /sync /a 2 3
113
114
115* Repeat for another user prefix, to simulate node b:
116
117.. code-block:: bash
118
119 psync-full-sync /sync /b 2 3
120
121We should see that node a and node b have received each other's updates.
122
123
124* Sample output from node a shows that it received all updates
125 from node b successfully:
126
127.. code-block:: bash
128
129 1546282730.759387 INFO: [examples.FullSyncApp] Update /b-1/1
130 1546282741.143225 INFO: [examples.FullSyncApp] Publish: /a-1/1
131 1546282749.375854 INFO: [examples.FullSyncApp] Publish: /a-0/1
132 1546282750.263246 INFO: [examples.FullSyncApp] Update /b-0/1
133 1546282765.875118 INFO: [examples.FullSyncApp] Update /b-1/2
134 1546282783.777807 INFO: [examples.FullSyncApp] Publish: /a-0/2
135 1546282794.565507 INFO: [examples.FullSyncApp] Publish: /a-0/3
136 1546282794.896895 INFO: [examples.FullSyncApp] Publish: /a-1/2
137 1546282803.839416 INFO: [examples.FullSyncApp] Update /b-0/2
138 1546282804.785867 INFO: [examples.FullSyncApp] Update /b-1/3
139 1546282845.273772 INFO: [examples.FullSyncApp] Publish: /a-1/3
140 1546282855.102790 INFO: [examples.FullSyncApp] Update /b-0/3
141
142
143* Sample output from node b:
144
145.. code-block:: bash
146
147 1546282730.758296 INFO: [examples.FullSyncApp] Publish: /b-1/1
148 1546282741.144027 INFO: [examples.FullSyncApp] Update /a-1/1
149 1546282749.376543 INFO: [examples.FullSyncApp] Update /a-0/1
150 1546282750.262244 INFO: [examples.FullSyncApp] Publish: /b-0/1
151 1546282765.296005 INFO: [examples.FullSyncApp] Publish: /b-1/2
152 1546282783.778769 INFO: [examples.FullSyncApp] Update /a-0/2
153 1546282794.566485 INFO: [examples.FullSyncApp] Update /a-0/3
154 1546282795.374339 INFO: [examples.FullSyncApp] Update /a-1/2
155 1546282803.838394 INFO: [examples.FullSyncApp] Publish: /b-0/2
156 1546282804.033214 INFO: [examples.FullSyncApp] Publish: /b-1/3
157 1546282845.274680 INFO: [examples.FullSyncApp] Update /a-1/3
158 1546282855.101780 INFO: [examples.FullSyncApp] Publish: /b-0/3