Skip to content

Commit

Permalink
[apache#5746] feat(CLI): Support table format output for Audit command
Browse files Browse the repository at this point in the history
Support table format output for Audit command.
  • Loading branch information
Abyss-lord committed Feb 24, 2025
1 parent fb3d900 commit e8ac483
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -39,17 +39,10 @@ public void handle() {}
* @param audit from a class that implements the Auditable interface.
*/
public void displayAuditInfo(Audit audit) {
String auditInfo =
"creator,create_time,modified,modified_time"
+ System.lineSeparator()
+ audit.creator()
+ ","
+ audit.createTime()
+ ","
+ audit.lastModifier()
+ ","
+ audit.lastModifiedTime();
if (audit == null) {
return;
}

printResults(auditInfo);
printResults(audit);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,6 @@ public void handle() {
exitWithError(exp.getMessage());
}

if (result != null) {
displayAuditInfo(result.auditInfo());
}
displayAuditInfo(result.auditInfo());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,6 @@ public void handle() {
exitWithError(exp.getMessage());
}

if (result != null) {
displayAuditInfo(result.auditInfo());
}
displayAuditInfo(result.auditInfo());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import org.apache.gravitino.Audit;
import org.apache.gravitino.Catalog;
import org.apache.gravitino.Metalake;
import org.apache.gravitino.Schema;
Expand Down Expand Up @@ -85,6 +86,8 @@ public static void output(Object entity, CommandContext context) {
new TableDetailsTableFormat(context).output((Table) entity);
} else if (entity instanceof Table[]) {
new TableListTableFormat(context).output((Table[]) entity);
} else if (entity instanceof Audit) {
new AuditTableFormat(context).output((Audit) entity);
} else {
throw new IllegalArgumentException("Unsupported object type");
}
Expand Down Expand Up @@ -643,4 +646,30 @@ public String getOutput(Table[] tables) {
return getTableFormat(column);
}
}

/**
* Formats a single {@link Audit} instance into a four-column table display. Displays audit
* details, including creator, create time, modified, and modify time.
*/
static final class AuditTableFormat extends TableFormat<Audit> {
public AuditTableFormat(CommandContext context) {
super(context);
}

/** {@inheritDoc} */
@Override
public String getOutput(Audit audit) {
Column columnCreator = new Column(context, "creator");
Column columnCreateTime = new Column(context, "create time");
Column columnModified = new Column(context, "modified");
Column columnModifyTime = new Column(context, "modify time");

columnCreator.addCell(audit.creator());
columnCreateTime.addCell(audit.createTime());
columnModified.addCell(audit.lastModifier());
columnModifyTime.addCell(audit.lastModifiedTime());

return getTableFormat(columnCreator, columnCreateTime, columnModified, columnModifyTime);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.nio.charset.StandardCharsets;
import java.time.Instant;
import org.apache.gravitino.Audit;
import org.apache.gravitino.Catalog;
import org.apache.gravitino.Metalake;
import org.apache.gravitino.Schema;
Expand Down Expand Up @@ -373,6 +375,21 @@ void testListTableWithTableFormat() {
output);
}

@Test
void testAuditWithTableFormat() {
CommandContext mockContext = getMockContext();
Audit mockAudit = getMockAudit();
TableFormat.output(mockAudit, mockContext);
String output = new String(outContent.toByteArray(), StandardCharsets.UTF_8).trim();
Assertions.assertEquals(
"+-----------+--------------------------+-----------+--------------------------+\n"
+ "| Creator | Create time | Modified | Modify time |\n"
+ "+-----------+--------------------------+-----------+--------------------------+\n"
+ "| demo_user | 2021-01-20T02:51:51.111Z | demo_user | 2021-01-20T02:51:51.111Z |\n"
+ "+-----------+--------------------------+-----------+--------------------------+",
output);
}

@Test
void testOutputWithUnsupportType() {
CommandContext mockContext = getMockContext();
Expand Down Expand Up @@ -461,4 +478,14 @@ private org.apache.gravitino.rel.Column getMockColumn(

return mockColumn;
}

private Audit getMockAudit() {
Audit mockAudit = mock(Audit.class);
when(mockAudit.creator()).thenReturn("demo_user");
when(mockAudit.createTime()).thenReturn(Instant.ofEpochMilli(1611111111111L));
when(mockAudit.lastModifier()).thenReturn("demo_user");
when(mockAudit.lastModifiedTime()).thenReturn(Instant.ofEpochMilli(1611111111111L));

return mockAudit;
}
}

0 comments on commit e8ac483

Please sign in to comment.