Maxwell-Guo commented on code in PR #2284:
URL: https://github.com/apache/cassandra/pull/2284#discussion_r1173251193


##########
test/unit/org/apache/cassandra/db/DirectoriesTest.java:
##########
@@ -696,4 +732,144 @@ private List<Directories.DataDirectoryCandidate> 
getWriteableDirectories(DataDir
         return candidates;
     }
 
+    private int getDiyThreadId()
+    {
+        return myDiyId = diyThreadId.getAndIncrement();
+    }
+
+    private void detachLogger()
+    {
+        logger.detachAppender(listAppender);
+        MDC.remove(this.MDCID);
+    }
+
+    private void tailLogs()
+    {
+        int diyId = getDiyThreadId();
+        MDC.put(this.MDCID, String.valueOf(diyId));
+        logger = (Logger) LoggerFactory.getLogger(Directories.class);
+
+        // create and start a ListAppender
+        listAppender = new ListAppender<>();
+        listAppender.start();
+
+        // add the appender to the logger
+        logger.addAppender(listAppender);
+    }
+
+    private List<ILoggingEvent> filterLogByDiyId(List<ILoggingEvent> log)
+    {
+        ArrayList<ILoggingEvent> filteredLog = new ArrayList<>();
+        for(ILoggingEvent event : log)
+        {
+            int mdcId = 
Integer.parseInt(event.getMDCPropertyMap().get(this.MDCID));
+            if(mdcId == myDiyId){
+                filteredLog.add(event);
+            }
+        }
+        return filteredLog;
+    }
+
+    private void checkFormattedMessage(List<ILoggingEvent> log, Level 
expectedLevel, String expectedMessage, int expectedCount)
+    {
+        int found=0;
+        for(ILoggingEvent e: log)
+        {
+            System.err.println(e.getFormattedMessage());
+            if(e.getFormattedMessage().endsWith(expectedMessage))
+            {
+                if (e.getLevel() == expectedLevel)
+                    found++;
+            }
+        }
+
+        assertEquals(expectedCount, found);
+    }
+
+    @Test
+    public void testHasAvailableDiskSpace()
+    {
+        DataDirectory[] dataDirectories = new DataDirectory[]

Review Comment:
    I saw the ut test case in trunk and Parameterized test is created for 
sstable id for SequenceBasedSSTableId and UUIDBasedSSTableId. 
   
   I just modify the code :
   `    public static final DataDirectory uniformDir = new DataDirectory(new 
File("/uniformDir2"))
       {
           public long getAvailableSpace()
           {
               return 999L;
           }
       };
       public static final DataDirectory nearlyFullDir = new DataDirectory(new 
File("/nearlyFullDir1"))
       {
           public long getAvailableSpace()
           {
               return 11L;
           }
       };
       public static final DataDirectory veryFullDir = new DataDirectory(new 
File("/veryFullDir"))
       {
           public long getAvailableSpace()
           {
               return 4L;
           }
       };
   
    @Parameterized.Parameter
       public DataDirectory directory;
   
       @Parameterized.Parameter(1)
       publicLong value;
   
       @Parameterized.Parameter(2)
       public String message;
   
       @Parameterized.Parameters
       public static Collection<Object[]> idBuilders()
       {
           return Arrays.asList(new Object[]{ uniformDir, 999L, "uniformDir2" },
                                             new Object[]{ nearlyFullDir, 11L, 
"nearlyFullDir1" },
                                             new Object[]{ veryFullDir, 
4L,"veryFullDir" });
       }
   `
   
   so code logic only needs to be there once, and duplicate logic can be 
deleted, then every time we can just verify the realation between directory, 
value, message.
   



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to