This is an automated email from the ASF dual-hosted git repository.

xbli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git


The following commit(s) were added to refs/heads/master by this push:
     new 4f113a891c test the checking logic of whether segment preloading is 
enabled for upsert table (#14085)
4f113a891c is described below

commit 4f113a891cb3df9dea8a3215ea41de0f83199718
Author: Xiaobing <61892277+klsi...@users.noreply.github.com>
AuthorDate: Thu Sep 26 10:32:25 2024 -0700

    test the checking logic of whether segment preloading is enabled for upsert 
table (#14085)
---
 .../TableUpsertMetadataManagerFactoryTest.java     | 65 ++++++++++++++++++----
 1 file changed, 53 insertions(+), 12 deletions(-)

diff --git 
a/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/upsert/TableUpsertMetadataManagerFactoryTest.java
 
b/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/upsert/TableUpsertMetadataManagerFactoryTest.java
index 08f9796ff6..20a96b2e17 100644
--- 
a/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/upsert/TableUpsertMetadataManagerFactoryTest.java
+++ 
b/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/upsert/TableUpsertMetadataManagerFactoryTest.java
@@ -20,6 +20,7 @@ package org.apache.pinot.segment.local.upsert;
 
 import com.google.common.collect.Lists;
 import java.io.File;
+import java.util.concurrent.ExecutorService;
 import org.apache.pinot.segment.local.data.manager.TableDataManager;
 import org.apache.pinot.spi.config.table.HashFunction;
 import org.apache.pinot.spi.config.table.TableConfig;
@@ -32,6 +33,8 @@ import org.testng.annotations.Test;
 
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertNotNull;
 import static org.testng.Assert.assertTrue;
 
@@ -44,10 +47,9 @@ public class TableUpsertMetadataManagerFactoryTest {
   public void testCreateForDefaultManagerClass() {
     UpsertConfig upsertConfig = new UpsertConfig(UpsertConfig.Mode.FULL);
     upsertConfig.setHashFunction(HashFunction.NONE);
-    Schema schema =
-        new Schema.SchemaBuilder().setSchemaName(RAW_TABLE_NAME)
-            .addSingleValueDimension("myCol", FieldSpec.DataType.STRING)
-            .setPrimaryKeyColumns(Lists.newArrayList("myCol")).build();
+    Schema schema = new Schema.SchemaBuilder().setSchemaName(RAW_TABLE_NAME)
+        .addSingleValueDimension("myCol", 
FieldSpec.DataType.STRING).setPrimaryKeyColumns(Lists.newArrayList("myCol"))
+        .build();
     TableDataManager tableDataManager = mock(TableDataManager.class);
     when(tableDataManager.getTableDataDir()).thenReturn(new 
File(RAW_TABLE_NAME));
     _tableConfig =
@@ -57,8 +59,8 @@ public class TableUpsertMetadataManagerFactoryTest {
     assertNotNull(tableUpsertMetadataManager);
     assertTrue(tableUpsertMetadataManager instanceof 
ConcurrentMapTableUpsertMetadataManager);
     tableUpsertMetadataManager.init(_tableConfig, schema, tableDataManager);
-    assertTrue(tableUpsertMetadataManager.getOrCreatePartitionManager(0)
-        instanceof ConcurrentMapPartitionUpsertMetadataManager);
+    assertTrue(tableUpsertMetadataManager.getOrCreatePartitionManager(
+        0) instanceof ConcurrentMapPartitionUpsertMetadataManager);
   }
 
   @Test
@@ -66,10 +68,9 @@ public class TableUpsertMetadataManagerFactoryTest {
     UpsertConfig upsertConfig = new UpsertConfig(UpsertConfig.Mode.FULL);
     upsertConfig.setHashFunction(HashFunction.NONE);
     upsertConfig.setEnableDeletedKeysCompactionConsistency(true);
-    Schema schema =
-        new Schema.SchemaBuilder().setSchemaName(RAW_TABLE_NAME)
-            .addSingleValueDimension("myCol", FieldSpec.DataType.STRING)
-            .setPrimaryKeyColumns(Lists.newArrayList("myCol")).build();
+    Schema schema = new Schema.SchemaBuilder().setSchemaName(RAW_TABLE_NAME)
+        .addSingleValueDimension("myCol", 
FieldSpec.DataType.STRING).setPrimaryKeyColumns(Lists.newArrayList("myCol"))
+        .build();
     TableDataManager tableDataManager = mock(TableDataManager.class);
     when(tableDataManager.getTableDataDir()).thenReturn(new 
File(RAW_TABLE_NAME));
     _tableConfig =
@@ -79,7 +80,47 @@ public class TableUpsertMetadataManagerFactoryTest {
     assertNotNull(tableUpsertMetadataManager);
     assertTrue(tableUpsertMetadataManager instanceof 
ConcurrentMapTableUpsertMetadataManager);
     tableUpsertMetadataManager.init(_tableConfig, schema, tableDataManager);
-    assertTrue(tableUpsertMetadataManager.getOrCreatePartitionManager(0)
-        instanceof 
ConcurrentMapPartitionUpsertMetadataManagerForConsistentDeletes);
+    assertTrue(tableUpsertMetadataManager.getOrCreatePartitionManager(
+        0) instanceof 
ConcurrentMapPartitionUpsertMetadataManagerForConsistentDeletes);
+  }
+
+  @Test
+  public void testEnablePreload() {
+    UpsertConfig upsertConfig = new UpsertConfig(UpsertConfig.Mode.FULL);
+    upsertConfig.setHashFunction(HashFunction.NONE);
+    upsertConfig.setEnablePreload(true);
+    upsertConfig.setEnableSnapshot(true);
+    Schema schema = new Schema.SchemaBuilder().setSchemaName(RAW_TABLE_NAME)
+        .addSingleValueDimension("myCol", 
FieldSpec.DataType.STRING).setPrimaryKeyColumns(Lists.newArrayList("myCol"))
+        .build();
+    _tableConfig =
+        new 
TableConfigBuilder(TableType.REALTIME).setTableName(RAW_TABLE_NAME).setUpsertConfig(upsertConfig).build();
+    TableUpsertMetadataManager tableUpsertMetadataManager =
+        TableUpsertMetadataManagerFactory.create(_tableConfig, null);
+    assertNotNull(tableUpsertMetadataManager);
+
+    // Preloading is not enabled even if enablePreload and enableSnapshot 
flags are true, as no threads for preloading.
+    TableDataManager tableDataManager = mock(TableDataManager.class);
+    when(tableDataManager.getTableDataDir()).thenReturn(new 
File(RAW_TABLE_NAME));
+    when(tableDataManager.getSegmentPreloadExecutor()).thenReturn(null);
+    tableUpsertMetadataManager.init(_tableConfig, schema, tableDataManager);
+    assertFalse(tableUpsertMetadataManager.isEnablePreload());
+
+    // Preloading is enabled if there are threads for preloading and 
enablePreload and enableSnapshot flags are true.
+    tableDataManager = mock(TableDataManager.class);
+    when(tableDataManager.getTableDataDir()).thenReturn(new 
File(RAW_TABLE_NAME));
+    
when(tableDataManager.getSegmentPreloadExecutor()).thenReturn(mock(ExecutorService.class));
+    for (boolean[] flags : new boolean[][]{
+        {true, false}, {false, true}, {false, false}, {true, true}
+    }) {
+      upsertConfig.setEnableSnapshot(flags[0]);
+      upsertConfig.setEnablePreload(flags[1]);
+      _tableConfig =
+          new 
TableConfigBuilder(TableType.REALTIME).setTableName(RAW_TABLE_NAME).setUpsertConfig(upsertConfig).build();
+      tableUpsertMetadataManager = 
TableUpsertMetadataManagerFactory.create(_tableConfig, null);
+      tableUpsertMetadataManager.init(_tableConfig, schema, tableDataManager);
+      assertEquals(tableUpsertMetadataManager.isEnablePreload(), flags[0] && 
flags[1],
+          String.format("enableSnapshot: %b, enablePreload: %b", flags[0], 
flags[1]));
+    }
   }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to