|
19 | 19 |
|
20 | 20 | package org.apache.iotdb.db.audit; |
21 | 21 |
|
| 22 | +import org.apache.iotdb.commons.conf.CommonConfig; |
| 23 | +import org.apache.iotdb.commons.conf.CommonDescriptor; |
| 24 | +import org.apache.iotdb.commons.consensus.DataRegionId; |
22 | 25 | import org.apache.iotdb.commons.queryengine.plan.planner.plan.node.PlanNode; |
23 | 26 | import org.apache.iotdb.commons.request.IConsensusRequest; |
24 | 27 | import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertNode; |
25 | 28 | import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.ObjectNode; |
| 29 | +import org.apache.iotdb.db.storageengine.StorageEngine; |
| 30 | +import org.apache.iotdb.db.storageengine.dataregion.DataRegion; |
26 | 31 |
|
| 32 | +import org.junit.After; |
| 33 | +import org.junit.Before; |
27 | 34 | import org.junit.Test; |
| 35 | +import org.junit.runner.RunWith; |
| 36 | +import org.powermock.api.mockito.PowerMockito; |
| 37 | +import org.powermock.core.classloader.annotations.PowerMockIgnore; |
| 38 | +import org.powermock.core.classloader.annotations.PrepareForTest; |
| 39 | +import org.powermock.modules.junit4.PowerMockRunner; |
28 | 40 |
|
29 | 41 | import java.util.Collections; |
30 | 42 |
|
|
35 | 47 | import static org.mockito.Mockito.verify; |
36 | 48 | import static org.mockito.Mockito.when; |
37 | 49 |
|
| 50 | +@PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*"}) |
| 51 | +@RunWith(PowerMockRunner.class) |
| 52 | +@PrepareForTest(StorageEngine.class) |
38 | 53 | public class DataNodeUserDataTransferAuditorTest { |
39 | 54 |
|
| 55 | + private final CommonConfig commonConfig = CommonDescriptor.getInstance().getConfig(); |
| 56 | + private boolean auditLogEnabled; |
| 57 | + |
| 58 | + @Before |
| 59 | + public void setUp() { |
| 60 | + auditLogEnabled = commonConfig.isEnableAuditLog(); |
| 61 | + } |
| 62 | + |
| 63 | + @After |
| 64 | + public void tearDown() { |
| 65 | + commonConfig.setEnableAuditLog(auditLogEnabled); |
| 66 | + } |
| 67 | + |
40 | 68 | @Test |
41 | 69 | public void testAuditDatabaseIsExcludedFromGroupTransferAudit() { |
42 | 70 | assertFalse(DataNodeUserDataTransferAuditor.containsUserData("__audit")); |
43 | 71 | assertFalse(DataNodeUserDataTransferAuditor.containsUserData("root.__audit")); |
44 | 72 | assertTrue(DataNodeUserDataTransferAuditor.containsUserData("root.sg")); |
45 | 73 | } |
46 | 74 |
|
| 75 | + @Test |
| 76 | + public void testIoTConsensusV2AuditGateExcludesAuditDatabase() { |
| 77 | + final StorageEngine storageEngine = mock(StorageEngine.class); |
| 78 | + final DataRegion auditDataRegion = mock(DataRegion.class); |
| 79 | + final DataRegion userDataRegion = mock(DataRegion.class); |
| 80 | + final DataRegionId auditDataRegionId = new DataRegionId(1); |
| 81 | + final DataRegionId userDataRegionId = new DataRegionId(2); |
| 82 | + PowerMockito.mockStatic(StorageEngine.class); |
| 83 | + PowerMockito.when(StorageEngine.getInstance()).thenReturn(storageEngine); |
| 84 | + when(storageEngine.getDataRegion(auditDataRegionId)).thenReturn(auditDataRegion); |
| 85 | + when(storageEngine.getDataRegion(userDataRegionId)).thenReturn(userDataRegion); |
| 86 | + when(auditDataRegion.getDatabaseName()).thenReturn("root.__audit"); |
| 87 | + when(userDataRegion.getDatabaseName()).thenReturn("root.sg"); |
| 88 | + |
| 89 | + commonConfig.setEnableAuditLog(true); |
| 90 | + |
| 91 | + assertFalse(DataNodeUserDataTransferAuditor.isEnabledFor(auditDataRegionId)); |
| 92 | + assertTrue(DataNodeUserDataTransferAuditor.isEnabledFor(userDataRegionId)); |
| 93 | + } |
| 94 | + |
| 95 | + @Test |
| 96 | + public void testIoTConsensusV2AuditGateShortCircuitsWhenDisabled() { |
| 97 | + final StorageEngine storageEngine = mock(StorageEngine.class); |
| 98 | + PowerMockito.mockStatic(StorageEngine.class); |
| 99 | + PowerMockito.when(StorageEngine.getInstance()).thenReturn(storageEngine); |
| 100 | + commonConfig.setEnableAuditLog(false); |
| 101 | + |
| 102 | + assertFalse(DataNodeUserDataTransferAuditor.isEnabledFor(new DataRegionId(1))); |
| 103 | + |
| 104 | + verify(storageEngine, never()).getDataRegion(new DataRegionId(1)); |
| 105 | + } |
| 106 | + |
47 | 107 | @Test |
48 | 108 | public void testAuditDatabaseIsExcludedFromConsensusTransferAudit() { |
49 | 109 | final InsertNode insertNode = mock(InsertNode.class); |
|
0 commit comments