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]