[MINOR] Federated ops count in stats

Closes #1022.
diff --git a/src/main/java/org/apache/sysds/runtime/controlprogram/federated/FederatedData.java b/src/main/java/org/apache/sysds/runtime/controlprogram/federated/FederatedData.java
index 2c5f902..5e83dc2 100644
--- a/src/main/java/org/apache/sysds/runtime/controlprogram/federated/FederatedData.java
+++ b/src/main/java/org/apache/sysds/runtime/controlprogram/federated/FederatedData.java
@@ -36,6 +36,7 @@
 import org.apache.sysds.conf.DMLConfig;
 import org.apache.sysds.runtime.DMLRuntimeException;
 import org.apache.sysds.runtime.controlprogram.federated.FederatedRequest.RequestType;
+import org.apache.sysds.utils.Statistics;
 
 import java.net.InetSocketAddress;
 import java.util.concurrent.Future;
diff --git a/src/main/java/org/apache/sysds/runtime/controlprogram/federated/FederatedRequest.java b/src/main/java/org/apache/sysds/runtime/controlprogram/federated/FederatedRequest.java
index 5880851..5618d36 100644
--- a/src/main/java/org/apache/sysds/runtime/controlprogram/federated/FederatedRequest.java
+++ b/src/main/java/org/apache/sysds/runtime/controlprogram/federated/FederatedRequest.java
@@ -25,6 +25,7 @@
 import java.util.List;
 
 import org.apache.sysds.api.DMLScript;
+import org.apache.sysds.utils.Statistics;
 
 public class FederatedRequest implements Serializable {
 	private static final long serialVersionUID = 5946781306963870394L;
@@ -57,6 +58,7 @@
 	}
 	
 	public FederatedRequest(RequestType method, long id, List<Object> data) {
+		Statistics.incFederated(method);
 		_method = method;
 		_id = id;
 		_data = data;
diff --git a/src/main/java/org/apache/sysds/utils/Statistics.java b/src/main/java/org/apache/sysds/utils/Statistics.java
index cab22cd..0a6ec38 100644
--- a/src/main/java/org/apache/sysds/utils/Statistics.java
+++ b/src/main/java/org/apache/sysds/utils/Statistics.java
@@ -37,6 +37,7 @@
 import org.apache.sysds.hops.OptimizerUtils;
 import org.apache.sysds.runtime.controlprogram.caching.CacheStatistics;
 import org.apache.sysds.runtime.controlprogram.context.SparkExecutionContext;
+import org.apache.sysds.runtime.controlprogram.federated.FederatedRequest.RequestType;
 import org.apache.sysds.runtime.instructions.Instruction;
 import org.apache.sysds.runtime.instructions.InstructionUtils;
 import org.apache.sysds.runtime.instructions.cp.FunctionCallCPInstruction;
@@ -135,6 +136,13 @@
 	private static final LongAdder lTotalLix = new LongAdder();
 	private static final LongAdder lTotalLixUIP = new LongAdder();
 	
+	// Federated stats
+	private static final LongAdder federatedReadCount = new LongAdder();
+	private static final LongAdder federatedPutCount = new LongAdder();
+	private static final LongAdder federatedGetCount = new LongAdder();
+	private static final LongAdder federatedExecuteInstructionCount = new LongAdder();
+	private static final LongAdder federatedExecuteUDFCount = new LongAdder();
+
 	private static LongAdder numNativeFailures = new LongAdder();
 	public static LongAdder numNativeLibMatrixMultCalls = new LongAdder();
 	public static LongAdder numNativeConv2dCalls = new LongAdder();
@@ -376,6 +384,28 @@
 		parforMergeTime += time;
 	}
 
+	public static synchronized void incFederated(RequestType rqt){
+		switch (rqt) {
+			case READ_VAR:
+				federatedReadCount.increment();
+				break;
+			case PUT_VAR:
+				federatedPutCount.increment();
+				break;
+			case GET_VAR:
+				federatedGetCount.increment();
+				break;
+			case EXEC_INST:
+				federatedExecuteInstructionCount.increment();
+				break;
+			case EXEC_UDF:
+				federatedExecuteUDFCount.increment();
+				break;
+			default:
+				break;
+		}
+	}
+
 	public static void startCompileTimer() {
 		if( DMLScript.STATISTICS )
 			compileStartTime = System.nanoTime();
@@ -989,6 +1019,15 @@
 				sb.append("ParFor result merge time:\t" + String.format("%.3f", ((double)getParforMergeTime())/1000) + " sec.\n");
 				sb.append("ParFor total update in-place:\t" + lTotalUIPVar + "/" + lTotalLixUIP + "/" + lTotalLix + "\n");
 			}
+			if( federatedReadCount.longValue() > 0){
+				sb.append("Federated (Reads,Puts,Gets) :\t(" + 
+					federatedReadCount.longValue() + "," +
+					federatedPutCount.longValue() + "," +
+					federatedGetCount.longValue() + ")\n");
+				sb.append("Federated Execute (In,UDF)  :\t(" +
+					federatedExecuteInstructionCount.longValue() + "," +
+					federatedExecuteUDFCount.longValue() + ")\n");
+			}
 
 			sb.append("Total JIT compile time:\t\t" + ((double)getJITCompileTime())/1000 + " sec.\n");
 			sb.append("Total JVM GC count:\t\t" + getJVMgcCount() + ".\n");