@@ -213,6 +213,65 @@ public void testPreparedStatementsExecuted()
213213 assertGreaterThan (cfs .metric .coordinatorWriteLatency .getMeanRate (), 0 );
214214 }
215215
216+ @ Test
217+ public void testRowsMutatedCounter ()
218+ {
219+ ColumnFamilyStore cfs = recreateTable ();
220+ assertEquals (0 , cfs .metric .rowsMutated .getCount ());
221+
222+ // Each INSERT touches exactly one row
223+ session .execute (String .format ("INSERT INTO %s.%s (id, val1, val2) VALUES (1, 'a', 'b')" , KEYSPACE , TABLE ));
224+ assertEquals (1 , cfs .metric .rowsMutated .getCount ());
225+
226+ session .execute (String .format ("INSERT INTO %s.%s (id, val1, val2) VALUES (2, 'c', 'd')" , KEYSPACE , TABLE ));
227+ assertEquals (2 , cfs .metric .rowsMutated .getCount ());
228+
229+ // Batch of 3 rows — counter should jump by 3
230+ executeBatch (false , 3 , 1 );
231+ assertEquals (5 , cfs .metric .rowsMutated .getCount ());
232+
233+ assertRowsContains (cluster , session .execute ("SELECT * FROM system_metrics.table_group" ),
234+ row ("org.apache.cassandra.metrics.Table.RowsMutated.junit.tablemetricstest" ,
235+ "junit.tablemetricstest" ,
236+ "counter" ,
237+ String .valueOf (cfs .metric .rowsMutated .getCount ())));
238+ assertRowsContains (cluster , session .execute ("SELECT * FROM system_metrics.column_family_group" ),
239+ row ("org.apache.cassandra.metrics.ColumnFamily.RowsMutated.junit.tablemetricstest" ,
240+ "junit.tablemetricstest" ,
241+ "counter" ,
242+ String .valueOf (cfs .metric .rowsMutated .getCount ())));
243+ }
244+
245+ @ Test
246+ public void testRowsReadCounter ()
247+ {
248+ ColumnFamilyStore cfs = recreateTable ();
249+ assertEquals (0 , cfs .metric .rowsRead .getCount ());
250+
251+ // Seed some rows
252+ for (int i = 0 ; i < 5 ; i ++)
253+ session .execute (String .format ("INSERT INTO %s.%s (id, val1, val2) VALUES (%d, 'v%d', 'x')" , KEYSPACE , TABLE , i , i ));
254+
255+ // Full-table scan should touch all 5 rows
256+ session .execute (String .format ("SELECT * FROM %s.%s" , KEYSPACE , TABLE ));
257+ assertEquals (5 , cfs .metric .rowsRead .getCount ());
258+
259+ // Single-partition read touches 1 row
260+ session .execute (String .format ("SELECT * FROM %s.%s WHERE id = 0" , KEYSPACE , TABLE ));
261+ assertEquals (6 , cfs .metric .rowsRead .getCount ());
262+
263+ assertRowsContains (cluster , session .execute ("SELECT * FROM system_metrics.table_group" ),
264+ row ("org.apache.cassandra.metrics.Table.RowsRead.junit.tablemetricstest" ,
265+ "junit.tablemetricstest" ,
266+ "counter" ,
267+ String .valueOf (cfs .metric .rowsRead .getCount ())));
268+ assertRowsContains (cluster , session .execute ("SELECT * FROM system_metrics.column_family_group" ),
269+ row ("org.apache.cassandra.metrics.ColumnFamily.RowsRead.junit.tablemetricstest" ,
270+ "junit.tablemetricstest" ,
271+ "counter" ,
272+ String .valueOf (cfs .metric .rowsRead .getCount ())));
273+ }
274+
216275 @ Test
217276 public void testLoggedPartitionsPerBatch ()
218277 {
0 commit comments