Total score = 20 points (Content of the Readme file = 2 points, Testcases = 18 points) Testcases: After each operation, you need to show(print) each node with its corresponding files. - Test 1 (2 points) initilization: node 0 join one node: nodes 0, 1 join one more node: nodes 0, 1, 2 - Test 2 (2 points) node 1 publishes file 8 node 0: file 8, (8+1)%3 node 1: node 2: file 8, 8%3 - Test 3 (1 point) node 0 publishes file 7 node 0: file 8 node 1: file 7 node 2: file 8, file 7 - Test 4 (3 points) add one more node node 0: file 8, file 7 node 1: file 8 node 2: node 3: file 7 - Test 5 (2 points) node 2 retrieves file 8 show the content of the file at node 2 show form which node the files was retrieved - Test 6 (4 points) node 1 leaves (some nodes get new IDs after this operation) node 0: file 8 node 1: file 7 node 2: file 8, file 7 - Test 7 (2 points) - node 1 retrieves file 8. show the content of the file as it arrives. - the node that sends the file (0 or 2) should sleep for a while during the transfer. - when this node is sleeping (the server thread), the client on that node requests to leave the network (have the "sleep" call commented out in your code) - expected result: the node wakes up, finishes the transfer, and only after that leaves the network - Test 8 (2 points) - add one node (nodes 0, 1, 2), and similar to test 7, include a sleep call in one of the replication operations. - during the sleep time, try to add one more node - then, node 1 tries to leave the network - expected result: the nodes trying to join/leave receive a "try again" message