==> Synchronizing chroot copy [/home/alhp/workspace/chroot/root] -> [build_9f7e739b-5a34-492a-9bcf-e4b3778dedfd]...done ==> Making package: seaweedfs 4.23-1.1 (Tue May 5 14:09:24 2026) ==> Retrieving sources... -> Downloading seaweedfs-4.23.tar.gz... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 3.44M 0 3.44M 0 0 2.54M 0 00:01 3.19M 100 10.87M 0 10.87M 0 0 4.62M 0 00:02 5.22M 100 18.66M 0 18.66M 0 0 5.56M 0 00:03 6.05M 100 26.56M 0 26.56M 0 0 6.09M 0 00:04 6.50M 100 34.62M 0 34.62M 0 0 6.45M 0 00:05 6.80M 100 42.25M 0 42.25M 0 0 6.62M 0 00:06 7.71M 100 50.33M 0 50.33M 0 0 6.81M 0 00:07 7.84M 100 58.49M 0 58.49M 0 0 6.97M 0 00:08 7.92M 100 66.23M 0 66.23M 0 0 7.05M 0 00:09 7.89M 100 74.36M 0 74.36M 0 0 7.15M 0 00:10 7.90M 100 79.40M 0 79.40M 0 0 7.23M 0 00:10 7.90M 100 79.40M 0 79.40M 0 0 7.23M 0 00:10 7.90M 100 79.40M 0 79.40M 0 0 7.23M 0 00:10 7.90M ==> Validating source files with sha256sums... seaweedfs-4.23.tar.gz ... Passed ==> Making package: seaweedfs 4.23-1.1 (Tue May 5 12:09:38 2026) ==> Checking runtime dependencies... ==> Installing missing dependencies... resolving dependencies... looking for conflicting packages... Package (1) New Version Net Change extra/mailcap 2.1.54-2 0.11 MiB Total Installed Size: 0.11 MiB :: Proceed with installation? [Y/n] checking keyring... checking package integrity... loading package files... checking for file conflicts... :: Processing package changes... installing mailcap... :: Running post-transaction hooks... (1/1) Arming ConditionNeedsUpdate... ==> Checking buildtime dependencies... ==> Installing missing dependencies... resolving dependencies... looking for conflicting packages... Package (1) New Version Net Change extra/go 2:1.26.2-1 215.45 MiB Total Installed Size: 215.45 MiB :: Proceed with installation? [Y/n] checking keyring... checking package integrity... loading package files... checking for file conflicts... :: Processing package changes... installing go... :: Running post-transaction hooks... (1/1) Arming ConditionNeedsUpdate... ==> Retrieving sources... -> Found seaweedfs-4.23.tar.gz ==> WARNING: Skipping all source file integrity checks. ==> Extracting sources... -> Extracting seaweedfs-4.23.tar.gz with bsdtar ==> Starting prepare()... ==> Starting build()... ==> Starting check()... ? github.com/seaweedfs/seaweedfs/weed [no test files] ? github.com/seaweedfs/seaweedfs/weed/admin [no test files] === RUN TestApplyDefaults_WithEmbeddedStruct --- PASS: TestApplyDefaults_WithEmbeddedStruct (0.00s) === RUN TestApplyDefaults_PartiallySet --- PASS: TestApplyDefaults_PartiallySet (0.00s) === RUN TestApplyDefaults_NonPointer --- PASS: TestApplyDefaults_NonPointer (0.00s) === RUN TestApplyDefaults_NonStruct --- PASS: TestApplyDefaults_NonStruct (0.00s) === RUN TestApplyDefaults_EmptySchema --- PASS: TestApplyDefaults_EmptySchema (0.00s) === RUN TestApplyDefaults_MissingSchemaField --- PASS: TestApplyDefaults_MissingSchemaField (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/admin/config 0.007s === RUN TestCleanMaintenanceScript === RUN TestCleanMaintenanceScript/empty === RUN TestCleanMaintenanceScript/only_lock_unlock === RUN TestCleanMaintenanceScript/strips_lock_and_unlock === RUN TestCleanMaintenanceScript/case_insensitive_lock === RUN TestCleanMaintenanceScript/preserves_comments_removal === RUN TestCleanMaintenanceScript/no_lock_unlock_present === RUN TestCleanMaintenanceScript/windows_line_endings === RUN TestCleanMaintenanceScript/lock_with_inline_comment === RUN TestCleanMaintenanceScript/command_with_inline_comment_preserved === RUN TestCleanMaintenanceScript/only_inline_comment_after_stripping === RUN TestCleanMaintenanceScript/typical_master_default --- PASS: TestCleanMaintenanceScript (0.00s) --- PASS: TestCleanMaintenanceScript/empty (0.00s) --- PASS: TestCleanMaintenanceScript/only_lock_unlock (0.00s) --- PASS: TestCleanMaintenanceScript/strips_lock_and_unlock (0.00s) --- PASS: TestCleanMaintenanceScript/case_insensitive_lock (0.00s) --- PASS: TestCleanMaintenanceScript/preserves_comments_removal (0.00s) --- PASS: TestCleanMaintenanceScript/no_lock_unlock_present (0.00s) --- PASS: TestCleanMaintenanceScript/windows_line_endings (0.00s) --- PASS: TestCleanMaintenanceScript/lock_with_inline_comment (0.00s) --- PASS: TestCleanMaintenanceScript/command_with_inline_comment_preserved (0.00s) --- PASS: TestCleanMaintenanceScript/only_inline_comment_after_stripping (0.00s) --- PASS: TestCleanMaintenanceScript/typical_master_default (0.00s) === RUN TestCollectCollectionStatsECUnevenShards --- PASS: TestCollectCollectionStatsECUnevenShards (0.00s) === RUN TestCollectCollectionStatsECEmptyCollection --- PASS: TestCollectCollectionStatsECEmptyCollection (0.00s) === RUN TestCollectCollectionStatsECFileAndDeleteCountAggregation --- PASS: TestCollectCollectionStatsECFileAndDeleteCountAggregation (0.00s) === RUN TestCollectCollectionStatsECFileCountMaxDedupe --- PASS: TestCollectCollectionStatsECFileCountMaxDedupe (0.00s) === RUN TestGenerateBreadcrumbs === RUN TestGenerateBreadcrumbs/root_path === RUN TestGenerateBreadcrumbs/simple_path === RUN TestGenerateBreadcrumbs/nested_path === RUN TestGenerateBreadcrumbs/bucket_path === RUN TestGenerateBreadcrumbs/bucket_nested_path === RUN TestGenerateBreadcrumbs/path_with_trailing_slash --- PASS: TestGenerateBreadcrumbs (0.00s) --- PASS: TestGenerateBreadcrumbs/root_path (0.00s) --- PASS: TestGenerateBreadcrumbs/simple_path (0.00s) --- PASS: TestGenerateBreadcrumbs/nested_path (0.00s) --- PASS: TestGenerateBreadcrumbs/bucket_path (0.00s) --- PASS: TestGenerateBreadcrumbs/bucket_nested_path (0.00s) --- PASS: TestGenerateBreadcrumbs/path_with_trailing_slash (0.00s) === RUN TestPathHandlingWithForwardSlashes === RUN TestPathHandlingWithForwardSlashes/root === RUN TestPathHandlingWithForwardSlashes/single_level === RUN TestPathHandlingWithForwardSlashes/multiple_levels === RUN TestPathHandlingWithForwardSlashes/bucket_path --- PASS: TestPathHandlingWithForwardSlashes (0.00s) --- PASS: TestPathHandlingWithForwardSlashes/root (0.00s) --- PASS: TestPathHandlingWithForwardSlashes/single_level (0.00s) --- PASS: TestPathHandlingWithForwardSlashes/multiple_levels (0.00s) --- PASS: TestPathHandlingWithForwardSlashes/bucket_path (0.00s) === RUN TestParentPathCalculationLogic === RUN TestParentPathCalculationLogic/root_path === RUN TestParentPathCalculationLogic/single_level === RUN TestParentPathCalculationLogic/two_levels === RUN TestParentPathCalculationLogic/deep_nesting === RUN TestParentPathCalculationLogic/bucket_root === RUN TestParentPathCalculationLogic/bucket_directory --- PASS: TestParentPathCalculationLogic (0.00s) --- PASS: TestParentPathCalculationLogic/root_path (0.00s) --- PASS: TestParentPathCalculationLogic/single_level (0.00s) --- PASS: TestParentPathCalculationLogic/two_levels (0.00s) --- PASS: TestParentPathCalculationLogic/deep_nesting (0.00s) --- PASS: TestParentPathCalculationLogic/bucket_root (0.00s) --- PASS: TestParentPathCalculationLogic/bucket_directory (0.00s) === RUN TestFileExtensionHandlingLogic === RUN TestFileExtensionHandlingLogic/file.txt === RUN TestFileExtensionHandlingLogic/file.log === RUN TestFileExtensionHandlingLogic/archive.tar.gz === RUN TestFileExtensionHandlingLogic/image.jpg === RUN TestFileExtensionHandlingLogic/document.pdf === RUN TestFileExtensionHandlingLogic/data.json === RUN TestFileExtensionHandlingLogic/noextension === RUN TestFileExtensionHandlingLogic/.hidden === RUN TestFileExtensionHandlingLogic/file.TXT === RUN TestFileExtensionHandlingLogic/file.JPG --- PASS: TestFileExtensionHandlingLogic (0.00s) --- PASS: TestFileExtensionHandlingLogic/file.txt (0.00s) --- PASS: TestFileExtensionHandlingLogic/file.log (0.00s) --- PASS: TestFileExtensionHandlingLogic/archive.tar.gz (0.00s) --- PASS: TestFileExtensionHandlingLogic/image.jpg (0.00s) --- PASS: TestFileExtensionHandlingLogic/document.pdf (0.00s) --- PASS: TestFileExtensionHandlingLogic/data.json (0.00s) --- PASS: TestFileExtensionHandlingLogic/noextension (0.00s) --- PASS: TestFileExtensionHandlingLogic/.hidden (0.00s) --- PASS: TestFileExtensionHandlingLogic/file.TXT (0.00s) --- PASS: TestFileExtensionHandlingLogic/file.JPG (0.00s) === RUN TestBucketPathDetectionLogic === RUN TestBucketPathDetectionLogic/root_is_not_a_bucket_path === RUN TestBucketPathDetectionLogic/buckets_root === RUN TestBucketPathDetectionLogic/single_bucket === RUN TestBucketPathDetectionLogic/bucket_with_nested_path === RUN TestBucketPathDetectionLogic/non-bucket_path --- PASS: TestBucketPathDetectionLogic (0.00s) --- PASS: TestBucketPathDetectionLogic/root_is_not_a_bucket_path (0.00s) --- PASS: TestBucketPathDetectionLogic/buckets_root (0.00s) --- PASS: TestBucketPathDetectionLogic/single_bucket (0.00s) --- PASS: TestBucketPathDetectionLogic/bucket_with_nested_path (0.00s) --- PASS: TestBucketPathDetectionLogic/non-bucket_path (0.00s) === RUN TestPathJoinHandlesEdgeCases === RUN TestPathJoinHandlesEdgeCases/root_directory === RUN TestPathJoinHandlesEdgeCases/simple_directory === RUN TestPathJoinHandlesEdgeCases/nested_directory === RUN TestPathJoinHandlesEdgeCases/handles_trailing_slash === RUN TestPathJoinHandlesEdgeCases/handles_empty_name --- PASS: TestPathJoinHandlesEdgeCases (0.00s) --- PASS: TestPathJoinHandlesEdgeCases/root_directory (0.00s) --- PASS: TestPathJoinHandlesEdgeCases/simple_directory (0.00s) --- PASS: TestPathJoinHandlesEdgeCases/nested_directory (0.00s) --- PASS: TestPathJoinHandlesEdgeCases/handles_trailing_slash (0.00s) --- PASS: TestPathJoinHandlesEdgeCases/handles_empty_name (0.00s) === RUN TestWindowsPathNormalizationBehavior === RUN TestWindowsPathNormalizationBehavior/backslash_separator === RUN TestWindowsPathNormalizationBehavior/mixed_separators === RUN TestWindowsPathNormalizationBehavior/already_normalized === RUN TestWindowsPathNormalizationBehavior/simple_backslash_path === RUN TestWindowsPathNormalizationBehavior/deep_nested_path --- PASS: TestWindowsPathNormalizationBehavior (0.00s) --- PASS: TestWindowsPathNormalizationBehavior/backslash_separator (0.00s) --- PASS: TestWindowsPathNormalizationBehavior/mixed_separators (0.00s) --- PASS: TestWindowsPathNormalizationBehavior/already_normalized (0.00s) --- PASS: TestWindowsPathNormalizationBehavior/simple_backslash_path (0.00s) --- PASS: TestWindowsPathNormalizationBehavior/deep_nested_path (0.00s) === RUN TestBreadcrumbPathFormatting === RUN TestBreadcrumbPathFormatting/breadcrumbs_for_/ === RUN TestBreadcrumbPathFormatting/breadcrumbs_for_/folder === RUN TestBreadcrumbPathFormatting/breadcrumbs_for_/folder/subfolder === RUN TestBreadcrumbPathFormatting/breadcrumbs_for_/buckets/mybucket === RUN TestBreadcrumbPathFormatting/breadcrumbs_for_/buckets/mybucket/data --- PASS: TestBreadcrumbPathFormatting (0.00s) --- PASS: TestBreadcrumbPathFormatting/breadcrumbs_for_/ (0.00s) --- PASS: TestBreadcrumbPathFormatting/breadcrumbs_for_/folder (0.00s) --- PASS: TestBreadcrumbPathFormatting/breadcrumbs_for_/folder/subfolder (0.00s) --- PASS: TestBreadcrumbPathFormatting/breadcrumbs_for_/buckets/mybucket (0.00s) --- PASS: TestBreadcrumbPathFormatting/breadcrumbs_for_/buckets/mybucket/data (0.00s) === RUN TestDirectoryNavigation === RUN TestDirectoryNavigation/navigate_from_root === RUN TestDirectoryNavigation/navigate_from_single_folder === RUN TestDirectoryNavigation/navigate_from_nested_folder === RUN TestDirectoryNavigation/navigate_bucket_contents --- PASS: TestDirectoryNavigation (0.00s) --- PASS: TestDirectoryNavigation/navigate_from_root (0.00s) --- PASS: TestDirectoryNavigation/navigate_from_single_folder (0.00s) --- PASS: TestDirectoryNavigation/navigate_from_nested_folder (0.00s) --- PASS: TestDirectoryNavigation/navigate_bucket_contents (0.00s) === RUN TestResolveEntryMimePrefersStoredMime --- PASS: TestResolveEntryMimePrefersStoredMime (0.00s) === RUN TestResolveEntryMimePrefersStoredMimeMalformedParameter --- PASS: TestResolveEntryMimePrefersStoredMimeMalformedParameter (0.00s) === RUN TestResolveEntryMimeFallsBackToFilename --- PASS: TestResolveEntryMimeFallsBackToFilename (0.00s) === RUN TestResolveEntryMimeReturnsDirectoryMime --- PASS: TestResolveEntryMimeReturnsDirectoryMime (0.00s) === RUN TestResolveEntryMimeWhitespaceMimeFallsBackToFilename --- PASS: TestResolveEntryMimeWhitespaceMimeFallsBackToFilename (0.00s) === RUN TestExpirePluginJobAPI === RUN TestExpirePluginJobAPI/empty_job_id === RUN TestExpirePluginJobAPI/invalid_json === RUN TestExpirePluginJobAPI/job_not_found === RUN TestExpirePluginJobAPI/successful_expire === RUN TestExpirePluginJobAPI/non-active_job --- PASS: TestExpirePluginJobAPI (0.00s) --- PASS: TestExpirePluginJobAPI/empty_job_id (0.00s) --- PASS: TestExpirePluginJobAPI/invalid_json (0.00s) --- PASS: TestExpirePluginJobAPI/job_not_found (0.00s) --- PASS: TestExpirePluginJobAPI/successful_expire (0.00s) --- PASS: TestExpirePluginJobAPI/non-active_job (0.00s) === RUN TestApplyDescriptorDefaultsToPersistedConfigBackfillsAdminDefaults === PAUSE TestApplyDescriptorDefaultsToPersistedConfigBackfillsAdminDefaults === RUN TestApplyDescriptorDefaultsToPersistedConfigReplacesBlankAdminScript === PAUSE TestApplyDescriptorDefaultsToPersistedConfigReplacesBlankAdminScript === RUN TestFilterTrackedJobsByLane === PAUSE TestFilterTrackedJobsByLane === RUN TestFilterActivitiesByLane === PAUSE TestFilterActivitiesByLane === RUN TestFilerAddressFunctionInterface user_management_test.go:46: FilerEtcStore correctly implements SetFilerAddressFunc interface --- PASS: TestFilerAddressFunctionInterface (0.00s) === RUN TestGenerateAccessKey --- PASS: TestGenerateAccessKey (0.00s) === RUN TestGenerateSecretKey --- PASS: TestGenerateSecretKey (0.00s) === RUN TestGenerateAccountId --- PASS: TestGenerateAccountId (0.00s) === RUN TestVacuumMonitorStateTransitions === PAUSE TestVacuumMonitorStateTransitions === RUN TestSyncVacuumState === PAUSE TestSyncVacuumState === CONT TestApplyDescriptorDefaultsToPersistedConfigBackfillsAdminDefaults === CONT TestFilterActivitiesByLane === CONT TestFilterTrackedJobsByLane --- PASS: TestFilterTrackedJobsByLane (0.00s) === CONT TestApplyDescriptorDefaultsToPersistedConfigReplacesBlankAdminScript --- PASS: TestFilterActivitiesByLane (0.00s) === CONT TestSyncVacuumState === RUN TestSyncVacuumState/no_change_when_state_matches === RUN TestSyncVacuumState/worker_connects_triggers_disable === CONT TestVacuumMonitorStateTransitions I0505 12:12:47.969880 admin_server.go:308 Vacuum plugin worker connected, disabling master automatic vacuum --- PASS: TestApplyDescriptorDefaultsToPersistedConfigBackfillsAdminDefaults (0.00s) --- PASS: TestApplyDescriptorDefaultsToPersistedConfigReplacesBlankAdminScript (0.00s) === RUN TestSyncVacuumState/worker_disconnects_triggers_enable I0505 12:12:47.970335 admin_server.go:317 Vacuum plugin worker disconnected, re-enabling master automatic vacuum --- PASS: TestSyncVacuumState (0.00s) --- PASS: TestSyncVacuumState/no_change_when_state_matches (0.00s) --- PASS: TestSyncVacuumState/worker_connects_triggers_disable (0.00s) --- PASS: TestSyncVacuumState/worker_disconnects_triggers_enable (0.00s) --- PASS: TestVacuumMonitorStateTransitions (0.01s) PASS ok github.com/seaweedfs/seaweedfs/weed/admin/dash 0.043s === RUN TestSetupRoutes_RegistersPluginSchedulerStatesAPI_NoAuth --- PASS: TestSetupRoutes_RegistersPluginSchedulerStatesAPI_NoAuth (0.00s) === RUN TestSetupRoutes_RegistersPluginSchedulerStatesAPI_WithAuth --- PASS: TestSetupRoutes_RegistersPluginSchedulerStatesAPI_WithAuth (0.00s) === RUN TestSetupRoutes_RegistersPluginPages_NoAuth --- PASS: TestSetupRoutes_RegistersPluginPages_NoAuth (0.00s) === RUN TestSetupRoutes_RegistersPluginPages_WithAuth --- PASS: TestSetupRoutes_RegistersPluginPages_WithAuth (0.00s) === RUN TestValidateAndCleanFilePath_AllowsControlChars --- PASS: TestValidateAndCleanFilePath_AllowsControlChars (0.00s) === RUN TestValidateAndCleanFilePath_RejectsEmpty --- PASS: TestValidateAndCleanFilePath_RejectsEmpty (0.00s) === RUN TestFilerFileURL_EscapesControlChars --- PASS: TestFilerFileURL_EscapesControlChars (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/admin/handlers 0.034s ? github.com/seaweedfs/seaweedfs/weed/admin/internal/httputil [no test files] === RUN TestMaintenanceManager_ErrorHandling E0505 12:12:47.956694 maintenance_manager.go:391 Maintenance scan failed: dial tcp [::1]:19333: connect: connection refused (will retry with backoff) E0505 12:12:47.959392 maintenance_manager.go:393 Maintenance scan still failing after 2 attempts: dial tcp [::1]:19333: connect: connection refused (backoff: 2s) E0505 12:12:47.959412 maintenance_manager.go:393 Maintenance scan still failing after 3 attempts: dial tcp [::1]:19333: connect: connection refused (backoff: 4s) E0505 12:12:47.959416 maintenance_manager.go:393 Maintenance scan still failing after 6 attempts: dial tcp [::1]:19333: connect: connection refused (backoff: 32s) E0505 12:12:47.959419 maintenance_manager.go:393 Maintenance scan still failing after 9 attempts: dial tcp [::1]:19333: connect: connection refused (backoff: 4m16s) E0505 12:12:47.959422 maintenance_manager.go:393 Maintenance scan still failing after 10 attempts: dial tcp [::1]:19333: connect: connection refused (backoff: 5m0s) --- PASS: TestMaintenanceManager_ErrorHandling (0.00s) === RUN TestIsConnectionError --- PASS: TestIsConnectionError (0.00s) === RUN TestMaintenanceManager_GetErrorState E0505 12:12:47.959558 maintenance_manager.go:397 Maintenance scan failed: test error E0505 12:12:47.959563 maintenance_manager.go:397 Maintenance scan failed: test error --- PASS: TestMaintenanceManager_GetErrorState (0.00s) === RUN TestMaintenanceManager_LogThrottling E0505 12:12:47.959593 maintenance_manager.go:397 Maintenance scan failed: test error E0505 12:12:47.959597 maintenance_manager.go:397 Maintenance scan failed: test error E0505 12:12:47.959603 maintenance_manager.go:397 Maintenance scan failed: test error E0505 12:12:47.959606 maintenance_manager.go:397 Maintenance scan failed: test error E0505 12:12:47.959609 maintenance_manager.go:397 Maintenance scan failed: test error E0505 12:12:47.959612 maintenance_manager.go:397 Maintenance scan failed: test error E0505 12:12:47.959615 maintenance_manager.go:397 Maintenance scan failed: test error --- PASS: TestMaintenanceManager_LogThrottling (0.00s) === RUN TestCanScheduleTaskNow_FallbackLogic --- PASS: TestCanScheduleTaskNow_FallbackLogic (0.00s) === RUN TestCanScheduleTaskNow_FallbackWithRunningTasks --- PASS: TestCanScheduleTaskNow_FallbackWithRunningTasks (0.00s) === RUN TestCanScheduleTaskNow_DifferentTaskTypes --- PASS: TestCanScheduleTaskNow_DifferentTaskTypes (0.00s) === RUN TestCanScheduleTaskNow_WithIntegration --- PASS: TestCanScheduleTaskNow_WithIntegration (0.00s) === RUN TestGetRunningTaskCount --- PASS: TestGetRunningTaskCount (0.00s) === RUN TestCanExecuteTaskType --- PASS: TestCanExecuteTaskType (0.00s) === RUN TestGetMaxConcurrentForTaskType_DefaultBehavior --- PASS: TestGetMaxConcurrentForTaskType_DefaultBehavior (0.00s) === RUN TestCanScheduleTaskNow_NilTask --- PASS: TestCanScheduleTaskNow_NilTask (0.00s) === RUN TestCanScheduleTaskNow_EmptyTaskType --- PASS: TestCanScheduleTaskNow_EmptyTaskType (0.00s) === RUN TestCanScheduleTaskNow_WithPolicy --- PASS: TestCanScheduleTaskNow_WithPolicy (0.00s) === RUN TestMaintenanceQueue_TaskIDPreservation I0505 12:12:47.959813 maintenance_queue.go:154 Task queued: ec_task_123 (erasure_coding) volume 100 on server1, priority 1, reason: I0505 12:12:47.959826 maintenance_queue.go:154 Task queued: manual_id_456 (vacuum) volume 0 on , priority 0, reason: --- PASS: TestMaintenanceQueue_TaskIDPreservation (0.00s) === RUN TestMaintenanceQueue_ActiveTopologySync I0505 12:12:47.959889 maintenance_queue.go:154 Task queued: sync_test_123 (balance) volume 100 on server1, priority 0, reason: I0505 12:12:47.959929 maintenance_queue.go:452 Task assigned: sync_test_123 (balance) → worker worker1 (volume 100, server server1) I0505 12:12:47.959947 maintenance_queue.go:557 Task completed: sync_test_123 (balance) worker worker1, duration 43.412µs, volume 100 --- PASS: TestMaintenanceQueue_ActiveTopologySync (0.00s) === RUN TestMaintenanceQueue_StaleWorkerCapacityRelease I0505 12:12:47.959990 maintenance_queue.go:154 Task queued: stale_test_123 (balance) volume 100 on server1, priority 0, reason: I0505 12:12:47.960013 maintenance_queue.go:452 Task assigned: stale_test_123 (balance) → worker worker1 (volume 100, server server1) W0505 12:12:47.960021 maintenance_queue.go:905 Removed stale maintenance worker worker1 --- PASS: TestMaintenanceQueue_StaleWorkerCapacityRelease (0.00s) === RUN TestMaintenanceManager_CancelTaskCapacityRelease I0505 12:12:47.960055 maintenance_queue.go:154 Task queued: cancel_test_123 (balance) volume 100 on server1, priority 0, reason: --- PASS: TestMaintenanceManager_CancelTaskCapacityRelease (0.00s) === RUN TestMaintenanceQueue_LoadTasksStartsEmpty I0505 12:12:47.960081 maintenance_queue.go:45 Task queue initialized (previous tasks will be re-detected by scanner) --- PASS: TestMaintenanceQueue_LoadTasksStartsEmpty (0.00s) === RUN TestMaintenanceQueue_RetryCapacitySync I0505 12:12:47.960131 maintenance_queue.go:154 Task queued: retry_test_123 (balance) volume 100 on server1, priority 0, reason: I0505 12:12:47.960150 maintenance_queue.go:452 Task assigned: retry_test_123 (balance) → worker worker1 (volume 100, server server1) W0505 12:12:47.960163 maintenance_queue.go:530 Task failed, scheduling retry: retry_test_123 (balance) attempt 1/3, worker worker1, duration 19.296µs, error: simulated failure --- PASS: TestMaintenanceQueue_RetryCapacitySync (0.00s) === RUN TestMaintenanceQueue_AssignTaskRollback I0505 12:12:47.960204 maintenance_queue.go:154 Task queued: rollback_test_123 (balance) volume 100 on server1, priority 0, reason: W0505 12:12:47.960213 maintenance_queue.go:419 Failed to update ActiveTopology for task assignment rollback_test_123: pending task rollback_test_123 not found. Rolling back assignment. --- PASS: TestMaintenanceQueue_AssignTaskRollback (0.00s) === RUN TestGetNextTask_SkipsVolumeConflictsAcrossTypes I0505 12:12:47.960239 maintenance_queue.go:154 Task queued: t1 (balance) volume 100 on server1, priority 2, reason: I0505 12:12:47.960246 maintenance_queue.go:154 Task queued: t3 (vacuum) volume 200 on server1, priority 1, reason: I0505 12:12:47.960257 maintenance_queue.go:452 Task assigned: t1 (balance) → worker worker1 (volume 100, server server1) I0505 12:12:47.960269 maintenance_queue.go:452 Task assigned: t3 (vacuum) → worker worker2 (volume 200, server server1) --- PASS: TestGetNextTask_SkipsVolumeConflictsAcrossTypes (0.00s) === RUN TestAddTask_OnePendingTaskPerVolume I0505 12:12:47.960297 maintenance_queue.go:154 Task queued: t1 (balance) volume 100 on server1, priority 0, reason: --- PASS: TestAddTask_OnePendingTaskPerVolume (0.00s) === RUN TestAddTask_RejectsWhenVolumeHasRunningTask I0505 12:12:47.960323 maintenance_queue.go:154 Task queued: t1 (balance) volume 100 on server1, priority 0, reason: --- PASS: TestAddTask_RejectsWhenVolumeHasRunningTask (0.00s) === RUN TestPendingOperations_ConflictDetection --- PASS: TestPendingOperations_ConflictDetection (0.00s) === RUN TestPendingOperations_CapacityProjection --- PASS: TestPendingOperations_CapacityProjection (0.00s) === RUN TestPendingOperations_VolumeFiltering --- PASS: TestPendingOperations_VolumeFiltering (0.00s) === RUN TestPendingOperations_OperationLifecycle --- PASS: TestPendingOperations_OperationLifecycle (0.00s) === RUN TestPendingOperations_StaleCleanup W0505 12:12:47.960405 pending_operations.go:265 Removed stale pending operation: volume 301, task task-stale, age 24h0m0.000001573s --- PASS: TestPendingOperations_StaleCleanup (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/admin/maintenance 0.023s === RUN TestConfigStoreDescriptorRoundTrip === PAUSE TestConfigStoreDescriptorRoundTrip === RUN TestConfigStoreRunHistoryRetention === PAUSE TestConfigStoreRunHistoryRetention === RUN TestConfigStoreListJobTypes === PAUSE TestConfigStoreListJobTypes === RUN TestConfigStoreMonitorStateRoundTrip === PAUSE TestConfigStoreMonitorStateRoundTrip === RUN TestConfigStoreSaveJobTypeConfigIfNotExists === PAUSE TestConfigStoreSaveJobTypeConfigIfNotExists === RUN TestConfigStoreJobDetailRoundTrip === PAUSE TestConfigStoreJobDetailRoundTrip === RUN TestConfigStoreDeleteJobDetail === PAUSE TestConfigStoreDeleteJobDetail === RUN TestRunDetectionSendsCancelOnContextDone === PAUSE TestRunDetectionSendsCancelOnContextDone === RUN TestExecuteJobSendsCancelOnContextDone === PAUSE TestExecuteJobSendsCancelOnContextDone === RUN TestAdminScriptExecutionBlocksOtherDetection --- PASS: TestAdminScriptExecutionBlocksOtherDetection (0.10s) === RUN TestAdminScriptExecutionBlocksOtherExecution --- PASS: TestAdminScriptExecutionBlocksOtherExecution (0.10s) === RUN TestEnsureJobTypeConfigFromDescriptorBootstrapsDefaults === PAUSE TestEnsureJobTypeConfigFromDescriptorBootstrapsDefaults === RUN TestEnsureJobTypeConfigFromDescriptorDoesNotOverwriteExisting === PAUSE TestEnsureJobTypeConfigFromDescriptorDoesNotOverwriteExisting === RUN TestRunDetectionIncludesLatestSuccessfulRun --- PASS: TestRunDetectionIncludesLatestSuccessfulRun (0.00s) === RUN TestRunDetectionOmitsLastSuccessfulRunWhenNoSuccessHistory --- PASS: TestRunDetectionOmitsLastSuccessfulRunWhenNoSuccessHistory (0.00s) === RUN TestRunDetectionWithReportCapturesDetectionActivities --- PASS: TestRunDetectionWithReportCapturesDetectionActivities (0.00s) === RUN TestRunDetectionAdminScriptUsesLastCompletedRun --- PASS: TestRunDetectionAdminScriptUsesLastCompletedRun (0.00s) === RUN TestPluginLoadsPersistedMonitorStateOnStart === PAUSE TestPluginLoadsPersistedMonitorStateOnStart === RUN TestPluginPersistsMonitorStateAfterJobUpdates === PAUSE TestPluginPersistsMonitorStateAfterJobUpdates === RUN TestTrackExecutionQueuedMarksPendingState === PAUSE TestTrackExecutionQueuedMarksPendingState === RUN TestHandleJobProgressUpdateCarriesWorkerIDInActivities === PAUSE TestHandleJobProgressUpdateCarriesWorkerIDInActivities === RUN TestHandleJobProgressUpdateWithoutJobIDTracksDetectionActivities === PAUSE TestHandleJobProgressUpdateWithoutJobIDTracksDetectionActivities === RUN TestHandleJobCompletedCarriesWorkerIDInActivitiesAndRunHistory === PAUSE TestHandleJobCompletedCarriesWorkerIDInActivitiesAndRunHistory === RUN TestTrackExecutionStartStoresJobPayloadDetails === PAUSE TestTrackExecutionStartStoresJobPayloadDetails === RUN TestTrackExecutionStartStoresErasureCodingExecutionPlan === PAUSE TestTrackExecutionStartStoresErasureCodingExecutionPlan === RUN TestBuildJobDetailIncludesActivitiesAndRunRecord === PAUSE TestBuildJobDetailIncludesActivitiesAndRunRecord === RUN TestBuildJobDetailLoadsFromDiskWhenMemoryCleared === PAUSE TestBuildJobDetailLoadsFromDiskWhenMemoryCleared === RUN TestLoadSchedulerPolicyUsesAdminConfig === PAUSE TestLoadSchedulerPolicyUsesAdminConfig === RUN TestLoadSchedulerPolicyUsesDescriptorDefaultsWhenConfigMissing === PAUSE TestLoadSchedulerPolicyUsesDescriptorDefaultsWhenConfigMissing === RUN TestReserveScheduledExecutorRespectsPerWorkerLimit === PAUSE TestReserveScheduledExecutorRespectsPerWorkerLimit === RUN TestFilterScheduledProposalsDedupe === PAUSE TestFilterScheduledProposalsDedupe === RUN TestBuildScheduledJobSpecDoesNotReuseProposalID === PAUSE TestBuildScheduledJobSpecDoesNotReuseProposalID === RUN TestFilterProposalsWithActiveJobs === PAUSE TestFilterProposalsWithActiveJobs === RUN TestReserveScheduledExecutorTimesOutWhenNoExecutor === PAUSE TestReserveScheduledExecutorTimesOutWhenNoExecutor === RUN TestReserveScheduledExecutorWaitsForWorkerCapacity === PAUSE TestReserveScheduledExecutorWaitsForWorkerCapacity === RUN TestShouldSkipDetectionForWaitingJobs === PAUSE TestShouldSkipDetectionForWaitingJobs === RUN TestWaitingBacklogThresholdHonorsMaxResultsCap === PAUSE TestWaitingBacklogThresholdHonorsMaxResultsCap === RUN TestListSchedulerStatesIncludesPolicyAndState === PAUSE TestListSchedulerStatesIncludesPolicyAndState === RUN TestListSchedulerStatesShowsDisabledWhenNoPolicy === PAUSE TestListSchedulerStatesShowsDisabledWhenNoPolicy === RUN TestPickDetectorPrefersLeasedWorker === PAUSE TestPickDetectorPrefersLeasedWorker === RUN TestPickDetectorReassignsWhenLeaseIsStale === PAUSE TestPickDetectorReassignsWhenLeaseIsStale === RUN TestRunLaneSchedulerIterationLockBehavior === PAUSE TestRunLaneSchedulerIterationLockBehavior === RUN TestRegistryPickDetectorPrefersMoreFreeSlots === PAUSE TestRegistryPickDetectorPrefersMoreFreeSlots === RUN TestRegistryPickExecutorAllowsSameWorker === PAUSE TestRegistryPickExecutorAllowsSameWorker === RUN TestRegistryDetectableJobTypes === PAUSE TestRegistryDetectableJobTypes === RUN TestRegistryJobTypes === PAUSE TestRegistryJobTypes === RUN TestRegistryListExecutorsSortedBySlots === PAUSE TestRegistryListExecutorsSortedBySlots === RUN TestRegistryPickExecutorRoundRobinForTopTie === PAUSE TestRegistryPickExecutorRoundRobinForTopTie === RUN TestRegistryListExecutorsRoundRobinForTopTie === PAUSE TestRegistryListExecutorsRoundRobinForTopTie === RUN TestRegistrySkipsStaleWorkersForSelectionAndListing === PAUSE TestRegistrySkipsStaleWorkersForSelectionAndListing === RUN TestRegistryReturnsNoDetectorWhenAllWorkersStale === PAUSE TestRegistryReturnsNoDetectorWhenAllWorkersStale === RUN TestRegistryHasCapableWorkerWithDetectCapability === PAUSE TestRegistryHasCapableWorkerWithDetectCapability === RUN TestRegistryHasCapableWorkerWithExecuteCapability === PAUSE TestRegistryHasCapableWorkerWithExecuteCapability === RUN TestRegistryHasCapableWorkerReturnsFalseWhenNoWorkers === PAUSE TestRegistryHasCapableWorkerReturnsFalseWhenNoWorkers === RUN TestRegistryHasCapableWorkerSkipsStaleWorkers === PAUSE TestRegistryHasCapableWorkerSkipsStaleWorkers === RUN TestRegistryHasCapableWorkerIgnoresNilCapability === PAUSE TestRegistryHasCapableWorkerIgnoresNilCapability === RUN TestJobTypeLaneMapCoversKnownTypes --- PASS: TestJobTypeLaneMapCoversKnownTypes (0.00s) === RUN TestJobTypeLaneFallsBackToDefault --- PASS: TestJobTypeLaneFallsBackToDefault (0.00s) === RUN TestAllLanesHaveIdleSleep --- PASS: TestAllLanesHaveIdleSleep (0.00s) === RUN TestLaneRequiresLock === RUN TestLaneRequiresLock/Default === RUN TestLaneRequiresLock/Iceberg === RUN TestLaneRequiresLock/Lifecycle === RUN TestLaneRequiresLock/Unknown --- PASS: TestLaneRequiresLock (0.00s) --- PASS: TestLaneRequiresLock/Default (0.00s) --- PASS: TestLaneRequiresLock/Iceberg (0.00s) --- PASS: TestLaneRequiresLock/Lifecycle (0.00s) --- PASS: TestLaneRequiresLock/Unknown (0.00s) === RUN TestKnownJobTypesInMap --- PASS: TestKnownJobTypesInMap (0.00s) === RUN TestGetSchedulerStatusIncludesInProcessJobs --- PASS: TestGetSchedulerStatusIncludesInProcessJobs (0.00s) === RUN TestGetSchedulerStatusIncludesLastDetectionCount --- PASS: TestGetSchedulerStatusIncludesLastDetectionCount (0.00s) === RUN TestGetLaneSchedulerStatusShowsActiveConcurrentLaneWork --- PASS: TestGetLaneSchedulerStatusShowsActiveConcurrentLaneWork (0.00s) === CONT TestConfigStoreDescriptorRoundTrip === CONT TestBuildScheduledJobSpecDoesNotReuseProposalID === CONT TestRegistryDetectableJobTypes === CONT TestListSchedulerStatesShowsDisabledWhenNoPolicy === CONT TestFilterScheduledProposalsDedupe === CONT TestReserveScheduledExecutorRespectsPerWorkerLimit --- PASS: TestBuildScheduledJobSpecDoesNotReuseProposalID (0.00s) === CONT TestReserveScheduledExecutorTimesOutWhenNoExecutor --- PASS: TestConfigStoreDescriptorRoundTrip (0.00s) --- PASS: TestReserveScheduledExecutorTimesOutWhenNoExecutor (0.00s) === CONT TestRegistryHasCapableWorkerIgnoresNilCapability === CONT TestFilterProposalsWithActiveJobs === CONT TestBuildJobDetailIncludesActivitiesAndRunRecord --- PASS: TestReserveScheduledExecutorRespectsPerWorkerLimit (0.00s) --- PASS: TestRegistryHasCapableWorkerIgnoresNilCapability (0.00s) --- PASS: TestRegistryDetectableJobTypes (0.00s) --- PASS: TestListSchedulerStatesShowsDisabledWhenNoPolicy (0.00s) === CONT TestRegistryHasCapableWorkerSkipsStaleWorkers --- PASS: TestRegistryHasCapableWorkerSkipsStaleWorkers (0.00s) === CONT TestRegistryHasCapableWorkerReturnsFalseWhenNoWorkers --- PASS: TestRegistryHasCapableWorkerReturnsFalseWhenNoWorkers (0.00s) === CONT TestRegistryHasCapableWorkerWithExecuteCapability --- PASS: TestRegistryHasCapableWorkerWithExecuteCapability (0.00s) === CONT TestRegistryHasCapableWorkerWithDetectCapability --- PASS: TestRegistryHasCapableWorkerWithDetectCapability (0.00s) === CONT TestRegistryReturnsNoDetectorWhenAllWorkersStale --- PASS: TestFilterProposalsWithActiveJobs (0.00s) === CONT TestPickDetectorReassignsWhenLeaseIsStale --- PASS: TestRegistryReturnsNoDetectorWhenAllWorkersStale (0.00s) === CONT TestRegistrySkipsStaleWorkersForSelectionAndListing --- PASS: TestPickDetectorReassignsWhenLeaseIsStale (0.00s) === CONT TestRegistryPickDetectorPrefersMoreFreeSlots === CONT TestRegistryListExecutorsRoundRobinForTopTie === CONT TestListSchedulerStatesIncludesPolicyAndState === CONT TestRegistryPickExecutorRoundRobinForTopTie === CONT TestRegistryListExecutorsSortedBySlots === CONT TestEnsureJobTypeConfigFromDescriptorDoesNotOverwriteExisting === CONT TestPickDetectorPrefersLeasedWorker === CONT TestRegistryJobTypes === CONT TestRegistryPickExecutorAllowsSameWorker === CONT TestReserveScheduledExecutorWaitsForWorkerCapacity === CONT TestRunLaneSchedulerIterationLockBehavior === CONT TestTrackExecutionStartStoresErasureCodingExecutionPlan === RUN TestRunLaneSchedulerIterationLockBehavior/Default === PAUSE TestRunLaneSchedulerIterationLockBehavior/Default === RUN TestRunLaneSchedulerIterationLockBehavior/Iceberg === PAUSE TestRunLaneSchedulerIterationLockBehavior/Iceberg === RUN TestRunLaneSchedulerIterationLockBehavior/Lifecycle === PAUSE TestRunLaneSchedulerIterationLockBehavior/Lifecycle === CONT TestRunLaneSchedulerIterationLockBehavior/Default === CONT TestShouldSkipDetectionForWaitingJobs === CONT TestLoadSchedulerPolicyUsesDescriptorDefaultsWhenConfigMissing === CONT TestLoadSchedulerPolicyUsesAdminConfig === CONT TestRunLaneSchedulerIterationLockBehavior/Lifecycle === CONT TestRunLaneSchedulerIterationLockBehavior/Iceberg === CONT TestWaitingBacklogThresholdHonorsMaxResultsCap === CONT TestBuildJobDetailLoadsFromDiskWhenMemoryCleared === CONT TestPluginPersistsMonitorStateAfterJobUpdates === CONT TestHandleJobProgressUpdateCarriesWorkerIDInActivities === CONT TestEnsureJobTypeConfigFromDescriptorBootstrapsDefaults === CONT TestRunDetectionSendsCancelOnContextDone === CONT TestConfigStoreDeleteJobDetail === CONT TestTrackExecutionQueuedMarksPendingState === CONT TestPluginLoadsPersistedMonitorStateOnStart === CONT TestConfigStoreSaveJobTypeConfigIfNotExists === CONT TestExecuteJobSendsCancelOnContextDone === CONT TestHandleJobCompletedCarriesWorkerIDInActivitiesAndRunHistory === CONT TestTrackExecutionStartStoresJobPayloadDetails === CONT TestConfigStoreRunHistoryRetention === CONT TestHandleJobProgressUpdateWithoutJobIDTracksDetectionActivities === CONT TestConfigStoreMonitorStateRoundTrip --- PASS: TestRegistrySkipsStaleWorkersForSelectionAndListing (0.00s) --- PASS: TestRegistryPickDetectorPrefersMoreFreeSlots (0.00s) --- PASS: TestRegistryListExecutorsRoundRobinForTopTie (0.00s) === CONT TestConfigStoreListJobTypes --- PASS: TestRegistryPickExecutorRoundRobinForTopTie (0.00s) --- PASS: TestListSchedulerStatesIncludesPolicyAndState (0.00s) --- PASS: TestRegistryListExecutorsSortedBySlots (0.00s) --- PASS: TestPickDetectorPrefersLeasedWorker (0.00s) --- PASS: TestRegistryJobTypes (0.00s) --- PASS: TestRegistryPickExecutorAllowsSameWorker (0.00s) --- PASS: TestFilterScheduledProposalsDedupe (0.00s) --- PASS: TestEnsureJobTypeConfigFromDescriptorDoesNotOverwriteExisting (0.00s) --- PASS: TestShouldSkipDetectionForWaitingJobs (0.00s) --- PASS: TestLoadSchedulerPolicyUsesDescriptorDefaultsWhenConfigMissing (0.00s) --- PASS: TestLoadSchedulerPolicyUsesAdminConfig (0.00s) --- PASS: TestWaitingBacklogThresholdHonorsMaxResultsCap (0.00s) --- PASS: TestRunLaneSchedulerIterationLockBehavior (0.00s) --- PASS: TestRunLaneSchedulerIterationLockBehavior/Lifecycle (0.00s) --- PASS: TestRunLaneSchedulerIterationLockBehavior/Iceberg (0.00s) --- PASS: TestRunLaneSchedulerIterationLockBehavior/Default (0.00s) === CONT TestConfigStoreJobDetailRoundTrip --- PASS: TestConfigStoreListJobTypes (0.00s) === RUN TestConfigStoreSaveJobTypeConfigIfNotExists/in-memory === PAUSE TestConfigStoreSaveJobTypeConfigIfNotExists/in-memory === RUN TestConfigStoreSaveJobTypeConfigIfNotExists/on-disk === PAUSE TestConfigStoreSaveJobTypeConfigIfNotExists/on-disk === CONT TestConfigStoreSaveJobTypeConfigIfNotExists/in-memory --- PASS: TestTrackExecutionQueuedMarksPendingState (0.00s) --- PASS: TestHandleJobProgressUpdateCarriesWorkerIDInActivities (0.00s) --- PASS: TestBuildJobDetailIncludesActivitiesAndRunRecord (0.00s) --- PASS: TestHandleJobProgressUpdateWithoutJobIDTracksDetectionActivities (0.00s) --- PASS: TestExecuteJobSendsCancelOnContextDone (0.00s) --- PASS: TestConfigStoreDeleteJobDetail (0.00s) === CONT TestConfigStoreSaveJobTypeConfigIfNotExists/on-disk --- PASS: TestPluginLoadsPersistedMonitorStateOnStart (0.00s) --- PASS: TestHandleJobCompletedCarriesWorkerIDInActivitiesAndRunHistory (0.00s) --- PASS: TestBuildJobDetailLoadsFromDiskWhenMemoryCleared (0.00s) --- PASS: TestRunDetectionSendsCancelOnContextDone (0.00s) --- PASS: TestTrackExecutionStartStoresErasureCodingExecutionPlan (0.00s) --- PASS: TestEnsureJobTypeConfigFromDescriptorBootstrapsDefaults (0.00s) --- PASS: TestConfigStoreMonitorStateRoundTrip (0.00s) --- PASS: TestTrackExecutionStartStoresJobPayloadDetails (0.00s) --- PASS: TestConfigStoreJobDetailRoundTrip (0.00s) --- PASS: TestPluginPersistsMonitorStateAfterJobUpdates (0.00s) --- PASS: TestConfigStoreSaveJobTypeConfigIfNotExists (0.00s) --- PASS: TestConfigStoreSaveJobTypeConfigIfNotExists/in-memory (0.00s) --- PASS: TestConfigStoreSaveJobTypeConfigIfNotExists/on-disk (0.00s) --- PASS: TestConfigStoreRunHistoryRetention (0.00s) --- PASS: TestReserveScheduledExecutorWaitsForWorkerCapacity (0.03s) PASS ok github.com/seaweedfs/seaweedfs/weed/admin/plugin 0.250s === RUN TestActiveTopologyBasicOperations --- PASS: TestActiveTopologyBasicOperations (0.00s) === RUN TestActiveTopologyUpdate --- PASS: TestActiveTopologyUpdate (0.00s) === RUN TestTaskLifecycle --- PASS: TestTaskLifecycle (0.00s) === RUN TestTaskDetectionScenarios === RUN TestTaskDetectionScenarios/Empty_cluster_-_no_tasks_needed === RUN TestTaskDetectionScenarios/Unbalanced_cluster_-_balance_task_needed === RUN TestTaskDetectionScenarios/High_garbage_ratio_-_vacuum_task_needed === RUN TestTaskDetectionScenarios/Large_volumes_-_EC_task_needed === RUN TestTaskDetectionScenarios/Recent_tasks_-_no_immediate_re-detection --- PASS: TestTaskDetectionScenarios (0.00s) --- PASS: TestTaskDetectionScenarios/Empty_cluster_-_no_tasks_needed (0.00s) --- PASS: TestTaskDetectionScenarios/Unbalanced_cluster_-_balance_task_needed (0.00s) --- PASS: TestTaskDetectionScenarios/High_garbage_ratio_-_vacuum_task_needed (0.00s) --- PASS: TestTaskDetectionScenarios/Large_volumes_-_EC_task_needed (0.00s) --- PASS: TestTaskDetectionScenarios/Recent_tasks_-_no_immediate_re-detection (0.00s) === RUN TestTargetSelectionScenarios === RUN TestTargetSelectionScenarios/Balance_task_-_find_least_loaded_disk === RUN TestTargetSelectionScenarios/EC_task_-_find_multiple_available_disks === RUN TestTargetSelectionScenarios/Vacuum_task_-_cross-type_tasks_do_not_block_per_disk --- PASS: TestTargetSelectionScenarios (0.00s) --- PASS: TestTargetSelectionScenarios/Balance_task_-_find_least_loaded_disk (0.00s) --- PASS: TestTargetSelectionScenarios/EC_task_-_find_multiple_available_disks (0.00s) --- PASS: TestTargetSelectionScenarios/Vacuum_task_-_cross-type_tasks_do_not_block_per_disk (0.00s) === RUN TestDiskLoadCalculation --- PASS: TestDiskLoadCalculation (0.00s) === RUN TestCrossTypeTasksDoNotBlockPerDisk --- PASS: TestCrossTypeTasksDoNotBlockPerDisk (0.00s) === RUN TestECPlanningNotBlockedByUnrelatedBalance --- PASS: TestECPlanningNotBlockedByUnrelatedBalance (0.00s) === RUN TestPublicInterfaces --- PASS: TestPublicInterfaces (0.00s) === RUN TestDestinationPlanning === RUN TestDestinationPlanning/GetAvailableDisks_functionality === RUN TestDestinationPlanning/Topology_provides_planning_information --- PASS: TestDestinationPlanning (0.00s) --- PASS: TestDestinationPlanning/GetAvailableDisks_functionality (0.00s) --- PASS: TestDestinationPlanning/Topology_provides_planning_information (0.00s) === RUN TestGetDisksWithEffectiveCapacityNotCappedAtTenByLoad === PAUSE TestGetDisksWithEffectiveCapacityNotCappedAtTenByLoad === RUN TestStorageSlotChangeArithmetic --- PASS: TestStorageSlotChangeArithmetic (0.00s) === RUN TestStorageSlotChange --- PASS: TestStorageSlotChange (0.00s) === RUN TestStorageSlotChangeCapacityCalculation --- PASS: TestStorageSlotChangeCapacityCalculation (0.00s) === RUN TestGetDisksWithEffectiveCapacity_UnknownEmptyDiskFallback --- PASS: TestGetDisksWithEffectiveCapacity_UnknownEmptyDiskFallback (0.00s) === RUN TestECMultipleTargets storage_slot_test.go:512: EC operation distributed 14 shards across 3 targets storage_slot_test.go:513: Capacity impacts: EC source reserves with zero impact, Targets minimal (shards < 10) --- PASS: TestECMultipleTargets (0.00s) === RUN TestCapacityReservationCycle storage_slot_test.go:611: Capacity lifecycle with StorageSlotChange: Pending -> Assigned -> Released -> Applied storage_slot_test.go:612: Source: 10 -> 11 -> 11 -> 10 -> 11 (freed by pending balance, then applied) storage_slot_test.go:613: Target: 10 -> 9 -> 9 -> 10 -> 9 (reserved by pending, then applied) --- PASS: TestCapacityReservationCycle (0.00s) === RUN TestReplicatedVolumeECOperations storage_slot_test.go:766: Replicated volume EC operation: 3 source replicas, 14 EC shards distributed across 3 destinations storage_slot_test.go:768: Each source replica reserves with zero capacity impact, destinations receive EC shards --- PASS: TestReplicatedVolumeECOperations (0.00s) === RUN TestECWithOldShardCleanup storage_slot_test.go:919: EC operation with cleanup: 2 volume replicas + 2 old EC shard locations → 14 new EC shards storage_slot_test.go:921: Volume sources have zero impact, old EC shard sources free capacity, new destinations consume shard slots --- PASS: TestECWithOldShardCleanup (0.00s) === RUN TestDetailedCapacityCalculations storage_slot_test.go:997: Detailed capacity calculation: VolumeSlots=80, ShardSlots=-5 storage_slot_test.go:999: Capacity impact: VolumeSlots=0, ShardSlots=5 storage_slot_test.go:1001: Simple capacity (backward compatible): 80 --- PASS: TestDetailedCapacityCalculations (0.00s) === RUN TestStorageSlotChangeConversions storage_slot_test.go:1052: Conversion tests passed: 10 shards = 1 volume slot storage_slot_test.go:1053: Mixed capacity (2 volumes + 15 shards) = 3 equivalent volume slots storage_slot_test.go:1055: Available capacity (10 volumes) = 100 total shard slots storage_slot_test.go:1057: NOTE: This test adapts automatically to erasure_coding.DataShardsCount = 10 --- PASS: TestStorageSlotChangeConversions (0.00s) === CONT TestGetDisksWithEffectiveCapacityNotCappedAtTenByLoad --- PASS: TestGetDisksWithEffectiveCapacityNotCappedAtTenByLoad (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/admin/topology 0.016s ? github.com/seaweedfs/seaweedfs/weed/admin/view/app [no test files] ? github.com/seaweedfs/seaweedfs/weed/admin/view/components [no test files] ? github.com/seaweedfs/seaweedfs/weed/admin/view/layout [no test files] === RUN TestConcurrentAddRemoveNodes --- PASS: TestConcurrentAddRemoveNodes (0.00s) === RUN TestLockRingManager_BatchesRapidChanges I0505 12:12:48.057706 lock_ring_manager.go:139 LockRing: broadcasting ring update for group "default" version 1777983168057649455: [filer1:8888 filer2:8888 filer3:8888] --- PASS: TestLockRingManager_BatchesRapidChanges (0.20s) === RUN TestLockRingManager_DropAndJoinBatched I0505 12:12:48.157467 lock_ring_manager.go:139 LockRing: broadcasting ring update for group "default" version 1777983168157456957: [filer2:8888 filer3:8888 filer1:8888] I0505 12:12:48.258417 lock_ring_manager.go:139 LockRing: broadcasting ring update for group "default" version 1777983168258389057: [filer1:8888 filer2:8888 filer4:8888] --- PASS: TestLockRingManager_DropAndJoinBatched (0.20s) === RUN TestLockRingManager_VersionIncrements I0505 12:12:48.409313 lock_ring_manager.go:139 LockRing: broadcasting ring update for group "default" version 1777983168409281860: [filer1:8888] I0505 12:12:48.510701 lock_ring_manager.go:139 LockRing: broadcasting ring update for group "default" version 1777983168510673051: [filer1:8888 filer2:8888] --- PASS: TestLockRingManager_VersionIncrements (0.20s) === RUN TestLockRingManager_FlushPending I0505 12:12:48.560084 lock_ring_manager.go:139 LockRing: broadcasting ring update for group "default" version 1777983168560066501: [filer1:8888 filer2:8888] --- PASS: TestLockRingManager_FlushPending (0.00s) === RUN TestLockRingManager_MultipleGroups I0505 12:12:48.610222 lock_ring_manager.go:139 LockRing: broadcasting ring update for group "group2" version 1777983168610193806: [filer2:8888] I0505 12:12:48.610256 lock_ring_manager.go:139 LockRing: broadcasting ring update for group "group1" version 1777983168610252356: [filer1:8888] --- PASS: TestLockRingManager_MultipleGroups (0.10s) === RUN TestLockRingManager_GetServers --- PASS: TestLockRingManager_GetServers (0.00s) === RUN TestLockRingManager_NoBroadcastWithoutFn I0505 12:12:48.672748 lock_ring_manager.go:139 LockRing: broadcasting ring update for group "default" version 1777983168672721136: [filer1:8888] --- PASS: TestLockRingManager_NoBroadcastWithoutFn (0.05s) === RUN TestLockRingManager_GetLastUpdateReturnsBroadcastState I0505 12:12:48.711006 lock_ring_manager.go:139 LockRing: broadcasting ring update for group "default" version 1777983168710992867: [filer1:8888 filer2:8888] --- PASS: TestLockRingManager_GetLastUpdateReturnsBroadcastState (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/cluster 0.772s === RUN TestDLM_PrimaryCrash_BackupPromotes --- PASS: TestDLM_PrimaryCrash_BackupPromotes (0.02s) === RUN TestDLM_BackupCrash_PrimaryContinues --- PASS: TestDLM_BackupCrash_PrimaryContinues (0.02s) === RUN TestDLM_BothPrimaryAndBackupCrash --- PASS: TestDLM_BothPrimaryAndBackupCrash (0.02s) === RUN TestDLM_RollingRestart distributed_lock_manager_test.go:337: Locks survived rolling restart: 2 / 5 --- PASS: TestDLM_RollingRestart (0.12s) === RUN TestDLM_GenerationIncrementsOnNewAcquisition --- PASS: TestDLM_GenerationIncrementsOnNewAcquisition (3.04s) === RUN TestDLM_ReplicationFailure_PrimaryStillWorks --- PASS: TestDLM_ReplicationFailure_PrimaryStillWorks (0.02s) === RUN TestDLM_UnlockReplicatesToBackup --- PASS: TestDLM_UnlockReplicatesToBackup (0.03s) === RUN TestDLM_TopologyChange_LockSurvivesServerAddition --- PASS: TestDLM_TopologyChange_LockSurvivesServerAddition (0.04s) === RUN TestDLM_ConsistentHashing_MinimalDisruption distributed_lock_manager_test.go:477: Lock distribution before: map[filer1:8888:7 filer2:8888:22 filer3:8888:21] --- PASS: TestDLM_ConsistentHashing_MinimalDisruption (0.52s) === RUN TestDLM_NodeDropAndJoin_OwnershipDisruption distributed_lock_manager_test.go:593: Locks disrupted from departed filer3: 44 / 100 distributed_lock_manager_test.go:594: Locks disrupted from surviving filer1/filer2: 14 / 100 distributed_lock_manager_test.go:595: Locks now on new filer4: 24 / 100 --- PASS: TestDLM_NodeDropAndJoin_OwnershipDisruption (1.07s) === RUN TestDLM_RenewalDuringTransferWindow distributed_lock_manager_test.go:671: Key transfer-window-lock-0: primary changed from filer3:8888 to filer4:8888, but renewal on old primary succeeded --- PASS: TestDLM_RenewalDuringTransferWindow (0.03s) === RUN TestDLM_StaleReplicationRejected --- PASS: TestDLM_StaleReplicationRejected (0.00s) === RUN TestHashRing_BasicOperations --- PASS: TestHashRing_BasicOperations (0.00s) === RUN TestHashRing_DuplicateAddRemove --- PASS: TestHashRing_DuplicateAddRemove (0.00s) === RUN TestHashRing_SetServers --- PASS: TestHashRing_SetServers (0.00s) === RUN TestHashRing_ConsistencyOnRemoval hash_ring_test.go:101: Keys that moved: 380 / 1000 --- PASS: TestHashRing_ConsistencyOnRemoval (0.00s) === RUN TestHashRing_BackupIsSuccessor --- PASS: TestHashRing_BackupIsSuccessor (0.01s) === RUN TestHashRing_Distribution hash_ring_test.go:150: Server filer1:8888: 677 keys (32.3% deviation) hash_ring_test.go:150: Server filer3:8888: 1250 keys (25.0% deviation) hash_ring_test.go:150: Server filer2:8888: 1073 keys (7.3% deviation) --- PASS: TestHashRing_Distribution (0.00s) === RUN TestHashRing_GetPrimary --- PASS: TestHashRing_GetPrimary (0.00s) === RUN TestLockManager_GetLockOwnerIgnoresExpiredLock --- PASS: TestLockManager_GetLockOwnerIgnoresExpiredLock (0.00s) === RUN TestLockManager_InsertLockRejectsStaleTransfer --- PASS: TestLockManager_InsertLockRejectsStaleTransfer (0.00s) === RUN TestLockManager_InsertLockAdvancesGenerationCounter --- PASS: TestLockManager_InsertLockAdvancesGenerationCounter (0.00s) === RUN TestLockManager_InsertBackupLockRejectsOlderGeneration --- PASS: TestLockManager_InsertBackupLockRejectsOlderGeneration (0.00s) === RUN TestLockManager_InsertBackupLockKeepsPrimaryRole --- PASS: TestLockManager_InsertBackupLockKeepsPrimaryRole (0.00s) === RUN TestLockManager_RemoveBackupLockRejectsOlderGeneration --- PASS: TestLockManager_RemoveBackupLockRejectsOlderGeneration (0.00s) === RUN TestLockRing_SetSnapshot --- PASS: TestLockRing_SetSnapshot (0.21s) === RUN TestLockRing_SnapshotCompaction --- PASS: TestLockRing_SnapshotCompaction (0.22s) === RUN TestLockRing_VersionRejectsStale I0505 12:12:53.349382 lock_ring.go:52 LockRing: rejecting stale update v2 (current v3) --- PASS: TestLockRing_VersionRejectsStale (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/cluster/lock_manager 5.411s ? github.com/seaweedfs/seaweedfs/weed/cluster/maintenance [no test files] === RUN TestIsIgnorable404_WrappedErrNotFound --- PASS: TestIsIgnorable404_WrappedErrNotFound (0.00s) === RUN TestIsIgnorable404_BrokenUnwrapChain --- PASS: TestIsIgnorable404_BrokenUnwrapChain (0.00s) === RUN TestIsIgnorable404_NonIgnorableError --- PASS: TestIsIgnorable404_NonIgnorableError (0.00s) === RUN TestInitialSnapshotTargetKey --- PASS: TestInitialSnapshotTargetKey (0.00s) === RUN TestVersionedFilePathRewrittenForRemote --- PASS: TestVersionedFilePathRewrittenForRemote (0.00s) === RUN TestVersionsDirectoryFilteredByHasData --- PASS: TestVersionsDirectoryFilteredByHasData (0.00s) === RUN TestIsVersionedPath === RUN TestIsVersionedPath/version_file_in_.versions_dir === RUN TestIsVersionedPath/regular_file === RUN TestIsVersionedPath/.versions_directory_entry === RUN TestIsVersionedPath/non-version_file_in_.versions_dir === RUN TestIsVersionedPath/file_in_user_dir_ending_with_.versions_but_no_v__prefix === RUN TestIsVersionedPath/regular_directory === RUN TestIsVersionedPath/file_named_like_.versions_dir === RUN TestIsVersionedPath/.versions_dir_outside_/buckets/ === RUN TestIsVersionedPath/v__file_outside_/buckets/ --- PASS: TestIsVersionedPath (0.00s) --- PASS: TestIsVersionedPath/version_file_in_.versions_dir (0.00s) --- PASS: TestIsVersionedPath/regular_file (0.00s) --- PASS: TestIsVersionedPath/.versions_directory_entry (0.00s) --- PASS: TestIsVersionedPath/non-version_file_in_.versions_dir (0.00s) --- PASS: TestIsVersionedPath/file_in_user_dir_ending_with_.versions_but_no_v__prefix (0.00s) --- PASS: TestIsVersionedPath/regular_directory (0.00s) --- PASS: TestIsVersionedPath/file_named_like_.versions_dir (0.00s) --- PASS: TestIsVersionedPath/.versions_dir_outside_/buckets/ (0.00s) --- PASS: TestIsVersionedPath/v__file_outside_/buckets/ (0.00s) === RUN TestDeleteMarkerDetectedBeforeHasDataFilter --- PASS: TestDeleteMarkerDetectedBeforeHasDataFilter (0.00s) === RUN TestRewriteVersionedSourcePath === RUN TestRewriteVersionedSourcePath/version_file_in_.versions_dir === RUN TestRewriteVersionedSourcePath/regular_file === RUN TestRewriteVersionedSourcePath/version_file_at_bucket_root === RUN TestRewriteVersionedSourcePath/non-bucket_path_not_rewritten === RUN TestRewriteVersionedSourcePath/non-bucket_mount_not_rewritten === RUN TestRewriteVersionedSourcePath/non-version_file_in_.versions_dir === RUN TestRewriteVersionedSourcePath/dir_not_ending_in_.versions --- PASS: TestRewriteVersionedSourcePath (0.00s) --- PASS: TestRewriteVersionedSourcePath/version_file_in_.versions_dir (0.00s) --- PASS: TestRewriteVersionedSourcePath/regular_file (0.00s) --- PASS: TestRewriteVersionedSourcePath/version_file_at_bucket_root (0.00s) --- PASS: TestRewriteVersionedSourcePath/non-bucket_path_not_rewritten (0.00s) --- PASS: TestRewriteVersionedSourcePath/non-bucket_mount_not_rewritten (0.00s) --- PASS: TestRewriteVersionedSourcePath/non-version_file_in_.versions_dir (0.00s) --- PASS: TestRewriteVersionedSourcePath/dir_not_ending_in_.versions (0.00s) === RUN TestPathAncestors --- PASS: TestPathAncestors (0.00s) === RUN TestFileVsFileConflict --- PASS: TestFileVsFileConflict (0.00s) === RUN TestFileUnderActiveDirConflict --- PASS: TestFileUnderActiveDirConflict (0.00s) === RUN TestDirWithActiveFileUnder --- PASS: TestDirWithActiveFileUnder (0.00s) === RUN TestDirVsDirConflict --- PASS: TestDirVsDirConflict (0.00s) === RUN TestRenameConflict --- PASS: TestRenameConflict (0.00s) === RUN TestActiveRenameConflict --- PASS: TestActiveRenameConflict (0.00s) === RUN TestRootDirConflict --- PASS: TestRootDirConflict (0.00s) === RUN TestIndexCleanup --- PASS: TestIndexCleanup (0.00s) === RUN TestWatermarkWithHeap --- PASS: TestWatermarkWithHeap (0.00s) === RUN TestNonBarrierDirUpdateDoesNotBlockDescendants === RUN TestNonBarrierDirUpdateDoesNotBlockDescendants/attribute_update_on_/dir1_does_not_block_file_under_it === RUN TestNonBarrierDirUpdateDoesNotBlockDescendants/barrier_dir_create_at_the_same_path_still_blocks_descendants === RUN TestNonBarrierDirUpdateDoesNotBlockDescendants/barrier_dir_delete_still_waits_for_in-flight_descendants === RUN TestNonBarrierDirUpdateDoesNotBlockDescendants/non-barrier_dir_update_still_keeps_ancestor_barrier_waiting --- PASS: TestNonBarrierDirUpdateDoesNotBlockDescendants (0.00s) --- PASS: TestNonBarrierDirUpdateDoesNotBlockDescendants/attribute_update_on_/dir1_does_not_block_file_under_it (0.00s) --- PASS: TestNonBarrierDirUpdateDoesNotBlockDescendants/barrier_dir_create_at_the_same_path_still_blocks_descendants (0.00s) --- PASS: TestNonBarrierDirUpdateDoesNotBlockDescendants/barrier_dir_delete_still_waits_for_in-flight_descendants (0.00s) --- PASS: TestNonBarrierDirUpdateDoesNotBlockDescendants/non-barrier_dir_update_still_keeps_ancestor_barrier_waiting (0.00s) === RUN TestSamePathBarrierSerialization === RUN TestSamePathBarrierSerialization/barrier_dir_at_p_blocks_same-path_file === RUN TestSamePathBarrierSerialization/barrier_dir_at_p_blocks_another_same-path_barrier_dir === RUN TestSamePathBarrierSerialization/barrier_dir_at_p_blocks_non-barrier_update_at_same_path === RUN TestSamePathBarrierSerialization/file_at_p_blocks_same-path_barrier_dir === RUN TestSamePathBarrierSerialization/non-barrier_update_at_p_blocks_incoming_barrier_dir_at_same_path === RUN TestSamePathBarrierSerialization/non-barrier_update_at_p_does_NOT_block_same-path_non-barrier_update --- PASS: TestSamePathBarrierSerialization (0.00s) --- PASS: TestSamePathBarrierSerialization/barrier_dir_at_p_blocks_same-path_file (0.00s) --- PASS: TestSamePathBarrierSerialization/barrier_dir_at_p_blocks_another_same-path_barrier_dir (0.00s) --- PASS: TestSamePathBarrierSerialization/barrier_dir_at_p_blocks_non-barrier_update_at_same_path (0.00s) --- PASS: TestSamePathBarrierSerialization/file_at_p_blocks_same-path_barrier_dir (0.00s) --- PASS: TestSamePathBarrierSerialization/non-barrier_update_at_p_blocks_incoming_barrier_dir_at_same_path (0.00s) --- PASS: TestSamePathBarrierSerialization/non-barrier_update_at_p_does_NOT_block_same-path_non-barrier_update (0.00s) === RUN TestPathIsEqualOrUnderUsesDirectoryBoundaries === RUN TestPathIsEqualOrUnderUsesDirectoryBoundaries/equal === RUN TestPathIsEqualOrUnderUsesDirectoryBoundaries/descendant === RUN TestPathIsEqualOrUnderUsesDirectoryBoundaries/sibling_prefix === RUN TestPathIsEqualOrUnderUsesDirectoryBoundaries/root === RUN TestPathIsEqualOrUnderUsesDirectoryBoundaries/empty --- PASS: TestPathIsEqualOrUnderUsesDirectoryBoundaries (0.00s) --- PASS: TestPathIsEqualOrUnderUsesDirectoryBoundaries/equal (0.00s) --- PASS: TestPathIsEqualOrUnderUsesDirectoryBoundaries/descendant (0.00s) --- PASS: TestPathIsEqualOrUnderUsesDirectoryBoundaries/sibling_prefix (0.00s) --- PASS: TestPathIsEqualOrUnderUsesDirectoryBoundaries/root (0.00s) --- PASS: TestPathIsEqualOrUnderUsesDirectoryBoundaries/empty (0.00s) === RUN TestMatchesExcludePathUsesDirectoryBoundaries --- PASS: TestMatchesExcludePathUsesDirectoryBoundaries (0.00s) === RUN TestGenProcessFunctionRenameToSiblingPrefixBecomesDelete --- PASS: TestGenProcessFunctionRenameToSiblingPrefixBecomesDelete (0.00s) === RUN TestGenProcessFunctionRenameFromExcludedDirBecomesCreate --- PASS: TestGenProcessFunctionRenameFromExcludedDirBecomesCreate (0.00s) === RUN TestStreamDeliveryBottleneck filer_sync_subscription_test.go:131: 1 stream: 2000 events 2.234s 895 events/sec filer_sync_subscription_test.go:136: 10 streams: 2000 events 208ms 9611 events/sec filer_sync_subscription_test.go:140: Speedup: 10.7x (10 parallel streams vs 1 stream) --- PASS: TestStreamDeliveryBottleneck (2.44s) === RUN TestConcurrencyIneffectiveOnStreamBottleneck filer_sync_subscription_test.go:174: concurrency= 32: 1000 events 1.081s 925 events/sec filer_sync_subscription_test.go:174: concurrency=128: 1000 events 1.13s 885 events/sec filer_sync_subscription_test.go:174: concurrency=512: 1000 events 1.173s 852 events/sec filer_sync_subscription_test.go:180: concurrency 512 vs 32: 0.92x (expected ~1.0x when stream-limited) --- PASS: TestConcurrencyIneffectiveOnStreamBottleneck (3.38s) === RUN TestLogBufferSubscriptionThroughput === RUN TestLogBufferSubscriptionThroughput/single_subscriber_root filer_sync_subscription_test.go:259: 1 subscriber (/): 2000 events 2.426s 824 events/sec === RUN TestLogBufferSubscriptionThroughput/parallel_subscribers_per_dir filer_sync_subscription_test.go:315: 10 subscribers: 2000 events 357ms 5601 events/sec === NAME TestLogBufferSubscriptionThroughput filer_sync_subscription_test.go:325: LogBuffer speedup: 6.8x (10 parallel subscribers vs 1) --- PASS: TestLogBufferSubscriptionThroughput (2.79s) --- PASS: TestLogBufferSubscriptionThroughput/single_subscriber_root (2.43s) --- PASS: TestLogBufferSubscriptionThroughput/parallel_subscribers_per_dir (0.36s) === RUN TestVerifySyncMissingFile [MISSING] /root/file.txt (size=100, etag=d41d8cd98f00b204e9800998ecf8427e-0) --- PASS: TestVerifySyncMissingFile (0.00s) === RUN TestVerifySyncOnlyInB === RUN TestVerifySyncOnlyInB/bidirectional [ONLY_IN_B] /root/extra.txt === RUN TestVerifySyncOnlyInB/active-passive_ignores_onlyInB --- PASS: TestVerifySyncOnlyInB (0.00s) --- PASS: TestVerifySyncOnlyInB/bidirectional (0.00s) --- PASS: TestVerifySyncOnlyInB/active-passive_ignores_onlyInB (0.00s) === RUN TestVerifySyncSizeMismatch [SIZE_MISMATCH] /root/data.bin (a=1024, b=512, mtime equal [chunk-level issue]) --- PASS: TestVerifySyncSizeMismatch (0.00s) === RUN TestVerifySyncConcurrencyBound --- PASS: TestVerifySyncConcurrencyBound (0.03s) === RUN TestVerifySyncETagMismatch [ETAG_MISMATCH] /root/data.bin (a=112233, b=445566, mtime equal [chunk-level issue]) --- PASS: TestVerifySyncETagMismatch (0.00s) === RUN TestVerifySyncCutoffTime === RUN TestVerifySyncCutoffTime/A-only_recent_file_is_skipped,_not_reported_missing === RUN TestVerifySyncCutoffTime/A-only_old_file_is_reported_missing [MISSING] /old.txt (size=10, etag=d41d8cd98f00b204e9800998ecf8427e-0) === RUN TestVerifySyncCutoffTime/B-only_recent_file_is_skipped,_not_reported_as_ONLY_IN_B === RUN TestVerifySyncCutoffTime/B-only_old_file_is_reported_as_ONLY_IN_B [ONLY_IN_B] /old.txt --- PASS: TestVerifySyncCutoffTime (0.00s) --- PASS: TestVerifySyncCutoffTime/A-only_recent_file_is_skipped,_not_reported_missing (0.00s) --- PASS: TestVerifySyncCutoffTime/A-only_old_file_is_reported_missing (0.00s) --- PASS: TestVerifySyncCutoffTime/B-only_recent_file_is_skipped,_not_reported_as_ONLY_IN_B (0.00s) --- PASS: TestVerifySyncCutoffTime/B-only_old_file_is_reported_as_ONLY_IN_B (0.00s) === RUN TestVerifySyncCutoffMatchedFileBSideRecent --- PASS: TestVerifySyncCutoffMatchedFileBSideRecent (0.00s) === RUN TestVerifySyncMissingDirRecursesEvenWithRecentMtime [MISSING] /subdir/ (directory) [MISSING] /subdir/old.txt (size=10, etag=d41d8cd98f00b204e9800998ecf8427e-0) --- PASS: TestVerifySyncMissingDirRecursesEvenWithRecentMtime (0.00s) === RUN TestVerifySyncRootPath --- PASS: TestVerifySyncRootPath (0.00s) === RUN TestVerifySyncNoDeadlockDeepTree --- PASS: TestVerifySyncNoDeadlockDeepTree (0.02s) === RUN TestPeerIndexIgnoresGrpcPort --- PASS: TestPeerIndexIgnoresGrpcPort (0.00s) === RUN TestCheckPeersAddsSelfWhenGrpcPortMismatches I0505 12:13:00.957693 master.go:378 current: 127.0.0.1:9000 peers:127.0.0.1:9002,127.0.0.1:9003 --- PASS: TestCheckPeersAddsSelfWhenGrpcPortMismatches (0.00s) === RUN TestCheckPeersCanonicalizesSelfEntry I0505 12:13:00.958499 master.go:378 current: 127.0.0.1:9000 peers:127.0.0.1:9000,127.0.0.1:9002,127.0.0.1:9003 --- PASS: TestCheckPeersCanonicalizesSelfEntry (0.00s) === RUN TestCheckPeersDeduplicatesAliasPeers I0505 12:13:00.958599 master.go:378 current: 127.0.0.1:9000 peers:127.0.0.1:9002,127.0.0.1:9002.19002,127.0.0.1:9003 --- PASS: TestCheckPeersDeduplicatesAliasPeers (0.00s) === RUN TestMetadataEventDirectoryMembershipUsesDirectoryBoundaries --- PASS: TestMetadataEventDirectoryMembershipUsesDirectoryBoundaries (0.00s) === RUN TestMetadataEventUpdatesAndRemovesDirectory === RUN TestMetadataEventUpdatesAndRemovesDirectory/nil_response === RUN TestMetadataEventUpdatesAndRemovesDirectory/create_event === RUN TestMetadataEventUpdatesAndRemovesDirectory/rename_out === RUN TestMetadataEventUpdatesAndRemovesDirectory/rename_into === RUN TestMetadataEventUpdatesAndRemovesDirectory/rename_within === RUN TestMetadataEventUpdatesAndRemovesDirectory/delete --- PASS: TestMetadataEventUpdatesAndRemovesDirectory (0.00s) --- PASS: TestMetadataEventUpdatesAndRemovesDirectory/nil_response (0.00s) --- PASS: TestMetadataEventUpdatesAndRemovesDirectory/create_event (0.00s) --- PASS: TestMetadataEventUpdatesAndRemovesDirectory/rename_out (0.00s) --- PASS: TestMetadataEventUpdatesAndRemovesDirectory/rename_into (0.00s) --- PASS: TestMetadataEventUpdatesAndRemovesDirectory/rename_within (0.00s) --- PASS: TestMetadataEventUpdatesAndRemovesDirectory/delete (0.00s) === RUN TestParseBucketList === RUN TestParseBucketList/empty === RUN TestParseBucketList/single === RUN TestParseBucketList/multi === RUN TestParseBucketList/trims_whitespace === RUN TestParseBucketList/drops_empty_entries === RUN TestParseBucketList/dedupes_preserving_order === RUN TestParseBucketList/only_commas --- PASS: TestParseBucketList (0.00s) --- PASS: TestParseBucketList/empty (0.00s) --- PASS: TestParseBucketList/single (0.00s) --- PASS: TestParseBucketList/multi (0.00s) --- PASS: TestParseBucketList/trims_whitespace (0.00s) --- PASS: TestParseBucketList/drops_empty_entries (0.00s) --- PASS: TestParseBucketList/dedupes_preserving_order (0.00s) --- PASS: TestParseBucketList/only_commas (0.00s) === RUN TestMiniDefaultPluginJobTypes --- PASS: TestMiniDefaultPluginJobTypes (0.00s) === RUN Test_bucketPathForMountRoot === RUN Test_bucketPathForMountRoot/bucket_root_mount === RUN Test_bucketPathForMountRoot/bucket_root_with_trailing_slash === RUN Test_bucketPathForMountRoot/subdirectory_mount === RUN Test_bucketPathForMountRoot/non-bucket_mount --- PASS: Test_bucketPathForMountRoot (0.00s) --- PASS: Test_bucketPathForMountRoot/bucket_root_mount (0.00s) --- PASS: Test_bucketPathForMountRoot/bucket_root_with_trailing_slash (0.00s) --- PASS: Test_bucketPathForMountRoot/subdirectory_mount (0.00s) --- PASS: Test_bucketPathForMountRoot/non-bucket_mount (0.00s) === RUN TestBuildPluginWorkerHandlerExplicitTypes --- PASS: TestBuildPluginWorkerHandlerExplicitTypes (0.00s) === RUN TestBuildPluginWorkerHandlerAliases --- PASS: TestBuildPluginWorkerHandlerAliases (0.00s) === RUN TestBuildPluginWorkerHandlerUnknown --- PASS: TestBuildPluginWorkerHandlerUnknown (0.00s) === RUN TestBuildPluginWorkerHandlers --- PASS: TestBuildPluginWorkerHandlers (0.00s) === RUN TestBuildPluginWorkerHandlersCategories --- PASS: TestBuildPluginWorkerHandlersCategories (0.00s) === RUN TestPluginWorkerDefaultJobTypes --- PASS: TestPluginWorkerDefaultJobTypes (0.00s) === RUN TestResolvePluginWorkerID I0505 12:13:00.959156 worker.go:147 Generated new worker ID: w-arch-n-4653 I0505 12:13:00.959178 worker.go:154 Saved worker ID to /tmp/TestResolvePluginWorkerID1111800064/001/worker.id I0505 12:13:00.959198 worker.go:109 Loaded existing worker ID from /tmp/TestResolvePluginWorkerID1111800064/001/worker.id: w-arch-n-4653 --- PASS: TestResolvePluginWorkerID (0.00s) === RUN TestParsePluginWorkerAdminAddress --- PASS: TestParsePluginWorkerAdminAddress (0.00s) === RUN TestResolvePluginWorkerAdminServerUsesStatusGrpcPort --- PASS: TestResolvePluginWorkerAdminServerUsesStatusGrpcPort (0.00s) === RUN TestResolvePluginWorkerAdminServerKeepsDefaultGrpcOffset --- PASS: TestResolvePluginWorkerAdminServerKeepsDefaultGrpcOffset (0.00s) === RUN TestDeriveS3AdvertisedEndpoint === RUN TestDeriveS3AdvertisedEndpoint/wildcard_bind_IP_with_no_externalUrl_does_not_advertise_an_endpoint === RUN TestDeriveS3AdvertisedEndpoint/empty_bind_IP_with_no_externalUrl_does_not_advertise_an_endpoint === RUN TestDeriveS3AdvertisedEndpoint/explicit_bind_IP_is_kept === RUN TestDeriveS3AdvertisedEndpoint/IPv6_literals_are_bracketed === RUN TestDeriveS3AdvertisedEndpoint/TLS_key_+_https_port_switches_scheme_and_port === RUN TestDeriveS3AdvertisedEndpoint/TLS-only_(no_separate_https_port)_still_uses_https_on_the_HTTP_port === RUN TestDeriveS3AdvertisedEndpoint/externalUrl_wins_and_trailing_slash_is_stripped --- PASS: TestDeriveS3AdvertisedEndpoint (0.00s) --- PASS: TestDeriveS3AdvertisedEndpoint/wildcard_bind_IP_with_no_externalUrl_does_not_advertise_an_endpoint (0.00s) --- PASS: TestDeriveS3AdvertisedEndpoint/empty_bind_IP_with_no_externalUrl_does_not_advertise_an_endpoint (0.00s) --- PASS: TestDeriveS3AdvertisedEndpoint/explicit_bind_IP_is_kept (0.00s) --- PASS: TestDeriveS3AdvertisedEndpoint/IPv6_literals_are_bracketed (0.00s) --- PASS: TestDeriveS3AdvertisedEndpoint/TLS_key_+_https_port_switches_scheme_and_port (0.00s) --- PASS: TestDeriveS3AdvertisedEndpoint/TLS-only_(no_separate_https_port)_still_uses_https_on_the_HTTP_port (0.00s) --- PASS: TestDeriveS3AdvertisedEndpoint/externalUrl_wins_and_trailing_slash_is_stripped (0.00s) === RUN TestReadingTomlConfiguration database is map[connection_max:5000 enabled:true ports:[8001 8001 8002] server:192.168.1.1] servers is map[alpha:map[dc:eqdc10 ip:10.0.0.1] beta:map[dc:eqdc10 ip:10.0.0.2]] alpha ip is 10.0.0.1 --- PASS: TestReadingTomlConfiguration (0.00s) === RUN TestXYZ I0505 12:13:00.961353 volume_test.go:12 Last-Modified Mon, 08 Jul 2013 08:53:16 GMT --- PASS: TestXYZ (0.00s) === RUN TestWorkerDefaultJobTypes --- PASS: TestWorkerDefaultJobTypes (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/command 8.803s ? github.com/seaweedfs/seaweedfs/weed/command/scaffold [no test files] === RUN TestCredentialStoreInterface credential_test.go:15: No credential stores registered - this is expected when testing the base package without store imports --- SKIP: TestCredentialStoreInterface (0.00s) === RUN TestCredentialManagerCreation credential_test.go:66: No credential stores registered - skipping store-specific tests --- SKIP: TestCredentialManagerCreation (0.00s) === RUN TestCredentialInterface credential_test.go:95: No credential stores registered - for full testing see test/ package --- SKIP: TestCredentialInterface (0.00s) === RUN TestCredentialManagerIntegration credential_test.go:178: No credential stores registered - for full testing see test/ package --- SKIP: TestCredentialManagerIntegration (0.00s) === RUN TestErrorTypes --- PASS: TestErrorTypes (0.00s) === RUN TestGetAvailableStores credential_test.go:308: No stores available for testing --- SKIP: TestGetAvailableStores (0.00s) === RUN TestValidateServiceAccountId === RUN TestValidateServiceAccountId/simple === RUN TestValidateServiceAccountId/uppercase_parent === RUN TestValidateServiceAccountId/hyphenated_uuid_suffix === RUN TestValidateServiceAccountId/with_hyphen === RUN TestValidateServiceAccountId/with_underscore === RUN TestValidateServiceAccountId/email-style === RUN TestValidateServiceAccountId/with_dot === RUN TestValidateServiceAccountId/with_plus === RUN TestValidateServiceAccountId/with_equals === RUN TestValidateServiceAccountId/with_comma === RUN TestValidateServiceAccountId/empty === RUN TestValidateServiceAccountId/missing_prefix === RUN TestValidateServiceAccountId/wrong_prefix === RUN TestValidateServiceAccountId/uppercase_uuid === RUN TestValidateServiceAccountId/missing_uuid === RUN TestValidateServiceAccountId/missing_user === RUN TestValidateServiceAccountId/colon_in_user --- PASS: TestValidateServiceAccountId (0.00s) --- PASS: TestValidateServiceAccountId/simple (0.00s) --- PASS: TestValidateServiceAccountId/uppercase_parent (0.00s) --- PASS: TestValidateServiceAccountId/hyphenated_uuid_suffix (0.00s) --- PASS: TestValidateServiceAccountId/with_hyphen (0.00s) --- PASS: TestValidateServiceAccountId/with_underscore (0.00s) --- PASS: TestValidateServiceAccountId/email-style (0.00s) --- PASS: TestValidateServiceAccountId/with_dot (0.00s) --- PASS: TestValidateServiceAccountId/with_plus (0.00s) --- PASS: TestValidateServiceAccountId/with_equals (0.00s) --- PASS: TestValidateServiceAccountId/with_comma (0.00s) --- PASS: TestValidateServiceAccountId/empty (0.00s) --- PASS: TestValidateServiceAccountId/missing_prefix (0.00s) --- PASS: TestValidateServiceAccountId/wrong_prefix (0.00s) --- PASS: TestValidateServiceAccountId/uppercase_uuid (0.00s) --- PASS: TestValidateServiceAccountId/missing_uuid (0.00s) --- PASS: TestValidateServiceAccountId/missing_user (0.00s) --- PASS: TestValidateServiceAccountId/colon_in_user (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/credential 0.018s === RUN TestFilerEtcStoreListPolicyNamesIncludesLegacyPolicies --- PASS: TestFilerEtcStoreListPolicyNamesIncludesLegacyPolicies (0.00s) === RUN TestFilerEtcStoreDeletePolicyRemovesLegacyManagedCopy --- PASS: TestFilerEtcStoreDeletePolicyRemovesLegacyManagedCopy (0.00s) === RUN TestFilerEtcStoreDeletePolicySerializesLegacyUpdates --- PASS: TestFilerEtcStoreDeletePolicySerializesLegacyUpdates (0.30s) === RUN TestFilerEtcStoreLoadManagedPoliciesRespectsReadContext W0505 12:12:52.493647 filer_etc_policy.go:185 Failed to read policy file cancel-me.json: LookupEntry1: rpc error: code = Canceled desc = context canceled --- PASS: TestFilerEtcStoreLoadManagedPoliciesRespectsReadContext (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/credential/filer_etc 0.330s ? github.com/seaweedfs/seaweedfs/weed/credential/grpc [no test files] === RUN TestMemoryStore --- PASS: TestMemoryStore (0.00s) === RUN TestMemoryStoreConcurrency --- PASS: TestMemoryStoreConcurrency (0.00s) === RUN TestMemoryStoreReset --- PASS: TestMemoryStoreReset (0.00s) === RUN TestMemoryStoreConfigurationSaveLoad --- PASS: TestMemoryStoreConfigurationSaveLoad (0.00s) === RUN TestMemoryStoreServiceAccountByAccessKey --- PASS: TestMemoryStoreServiceAccountByAccessKey (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/credential/memory 0.017s ? github.com/seaweedfs/seaweedfs/weed/credential/postgres [no test files] === RUN TestInlinePolicyOperations --- PASS: TestInlinePolicyOperations (0.00s) === RUN TestMemoryRenameUserMovesIdentityAndPolicies --- PASS: TestMemoryRenameUserMovesIdentityAndPolicies (0.00s) === RUN TestStoreRegistration integration_test.go:40: Available stores: [memory postgres filer_etc] --- PASS: TestStoreRegistration (0.00s) === RUN TestMemoryStoreIntegration --- PASS: TestMemoryStoreIntegration (0.00s) === RUN TestPolicyManagement --- PASS: TestPolicyManagement (0.00s) === RUN TestPolicyManagementWithFilerEtc policy_test.go:140: Filer connection required for filer_etc store testing --- SKIP: TestPolicyManagementWithFilerEtc (0.00s) === RUN TestPolicyManagementWithPostgres policy_test.go:146: PostgreSQL connection required for postgres store testing --- SKIP: TestPolicyManagementWithPostgres (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/credential/test 0.020s === RUN TestChunkGroup_ReadDataAt_ErrorHandling === RUN TestChunkGroup_ReadDataAt_ErrorHandling/should_return_immediately_on_error === RUN TestChunkGroup_ReadDataAt_ErrorHandling/should_handle_EOF_correctly === RUN TestChunkGroup_ReadDataAt_ErrorHandling/should_return_EOF_when_offset_exceeds_file_size === RUN TestChunkGroup_ReadDataAt_ErrorHandling/should_demonstrate_the_GitHub_issue_fix_-_errors_should_not_be_masked === RUN TestChunkGroup_ReadDataAt_ErrorHandling/Context_Cancellation filechunk_group_test.go:145: Operation completed before context cancellation was checked - this is expected for empty ChunkGroup === RUN TestChunkGroup_ReadDataAt_ErrorHandling/Context_Cancellation_with_Timeout --- PASS: TestChunkGroup_ReadDataAt_ErrorHandling (0.00s) --- PASS: TestChunkGroup_ReadDataAt_ErrorHandling/should_return_immediately_on_error (0.00s) --- PASS: TestChunkGroup_ReadDataAt_ErrorHandling/should_handle_EOF_correctly (0.00s) --- PASS: TestChunkGroup_ReadDataAt_ErrorHandling/should_return_EOF_when_offset_exceeds_file_size (0.00s) --- PASS: TestChunkGroup_ReadDataAt_ErrorHandling/should_demonstrate_the_GitHub_issue_fix_-_errors_should_not_be_masked (0.00s) --- PASS: TestChunkGroup_ReadDataAt_ErrorHandling/Context_Cancellation (0.00s) --- PASS: TestChunkGroup_ReadDataAt_ErrorHandling/Context_Cancellation_with_Timeout (0.00s) === RUN TestChunkGroup_SearchChunks_Cancellation === RUN TestChunkGroup_SearchChunks_Cancellation/Context_Cancellation_in_SearchChunks filechunk_group_test.go:207: SearchChunks completed with cancelled context - context threading verified === RUN TestChunkGroup_SearchChunks_Cancellation/Context_with_Timeout_in_SearchChunks --- PASS: TestChunkGroup_SearchChunks_Cancellation (0.00s) --- PASS: TestChunkGroup_SearchChunks_Cancellation/Context_Cancellation_in_SearchChunks (0.00s) --- PASS: TestChunkGroup_SearchChunks_Cancellation/Context_with_Timeout_in_SearchChunks (0.00s) === RUN TestChunkGroup_doSearchChunks --- PASS: TestChunkGroup_doSearchChunks (0.00s) === RUN TestDoMaybeManifestize test 0 test 1 test 2 test 3 --- PASS: TestDoMaybeManifestize (0.00s) === RUN TestManifestRoundTripPreservesChunks --- PASS: TestManifestRoundTripPreservesChunks (0.00s) === RUN TestCompactResolvedOverlappingManifests --- PASS: TestCompactResolvedOverlappingManifests (0.00s) === RUN TestDoMinusChunksWithResolvedManifests --- PASS: TestDoMinusChunksWithResolvedManifests (0.00s) === RUN TestManifestizeSmallBatchWithRemainder --- PASS: TestManifestizeSmallBatchWithRemainder (0.00s) === RUN TestCompactMultipleOverlappingManifestGenerations --- PASS: TestCompactMultipleOverlappingManifestGenerations (0.00s) === RUN TestManifestBloatDetection filechunk_manifest_test.go:493: n=1 manifests: totalStored=20000 fileSize=10000 ratio=2.0x expectMerge=false filechunk_manifest_test.go:493: n=2 manifests: totalStored=30000 fileSize=10000 ratio=3.0x expectMerge=true filechunk_manifest_test.go:493: n=3 manifests: totalStored=40000 fileSize=10000 ratio=4.0x expectMerge=true filechunk_manifest_test.go:493: n=4 manifests: totalStored=50000 fileSize=10000 ratio=5.0x expectMerge=true filechunk_manifest_test.go:493: n=5 manifests: totalStored=60000 fileSize=10000 ratio=6.0x expectMerge=true filechunk_manifest_test.go:493: n=6 manifests: totalStored=70000 fileSize=10000 ratio=7.0x expectMerge=true filechunk_manifest_test.go:493: n=7 manifests: totalStored=80000 fileSize=10000 ratio=8.0x expectMerge=true filechunk_manifest_test.go:493: n=8 manifests: totalStored=90000 fileSize=10000 ratio=9.0x expectMerge=true filechunk_manifest_test.go:493: n=9 manifests: totalStored=100000 fileSize=10000 ratio=10.0x expectMerge=true filechunk_manifest_test.go:493: n=10 manifests: totalStored=110000 fileSize=10000 ratio=11.0x expectMerge=true --- PASS: TestManifestBloatDetection (0.00s) === RUN Test_removeGarbageChunks --- PASS: Test_removeGarbageChunks (0.00s) === RUN TestDoMinusChunks 2026/05/05 12:12:52 first deleted chunks: [file_id:"1" size:3 modified_ts_ns:100 source_file_id:"11" file_id:"2" offset:3 size:3 modified_ts_ns:200 file_id:"3" offset:6 size:3 modified_ts_ns:300 source_file_id:"33"] 2026/05/05 12:12:52 clusterA synced empty chunks event result: [] --- PASS: TestDoMinusChunks (0.00s) === RUN TestCompactFileChunksRealCase I0505 12:12:52.186498 filechunks2_test.go:84 before chunk 2,512f31f2c0700a [ 0, 25) I0505 12:12:52.186602 filechunks2_test.go:84 before chunk 6,512f2c2e24e9e8 [ 868352, 917585) I0505 12:12:52.186606 filechunks2_test.go:84 before chunk 7,514468dd5954ca [ 884736, 901120) I0505 12:12:52.186608 filechunks2_test.go:84 before chunk 5,5144463173fe77 [ 917504, 2297856) I0505 12:12:52.186610 filechunks2_test.go:84 before chunk 4,51444c7ab54e2d [ 2301952, 2367488) I0505 12:12:52.186612 filechunks2_test.go:84 before chunk 4,514450e643ad22 [ 2371584, 2420736) I0505 12:12:52.186614 filechunks2_test.go:84 before chunk 6,514456a5e9e4d7 [ 2449408, 2490368) I0505 12:12:52.186616 filechunks2_test.go:84 before chunk 3,51444f8d53eebe [ 2494464, 2555904) I0505 12:12:52.186618 filechunks2_test.go:84 before chunk 4,5144578b097c7e [ 2560000, 2596864) I0505 12:12:52.186621 filechunks2_test.go:84 before chunk 3,51445500b6b4ac [ 2637824, 2678784) I0505 12:12:52.186622 filechunks2_test.go:84 before chunk 1,51446285e52a61 [ 2695168, 2715648) I0505 12:12:52.186631 filechunks2_test.go:84 compacted chunk 2,512f31f2c0700a [ 0, 25) I0505 12:12:52.186634 filechunks2_test.go:84 compacted chunk 6,512f2c2e24e9e8 [ 868352, 917585) I0505 12:12:52.186636 filechunks2_test.go:84 compacted chunk 7,514468dd5954ca [ 884736, 901120) I0505 12:12:52.186638 filechunks2_test.go:84 compacted chunk 5,5144463173fe77 [ 917504, 2297856) I0505 12:12:52.186639 filechunks2_test.go:84 compacted chunk 4,51444c7ab54e2d [ 2301952, 2367488) I0505 12:12:52.186641 filechunks2_test.go:84 compacted chunk 4,514450e643ad22 [ 2371584, 2420736) I0505 12:12:52.186644 filechunks2_test.go:84 compacted chunk 6,514456a5e9e4d7 [ 2449408, 2490368) I0505 12:12:52.186646 filechunks2_test.go:84 compacted chunk 3,51444f8d53eebe [ 2494464, 2555904) I0505 12:12:52.186648 filechunks2_test.go:84 compacted chunk 4,5144578b097c7e [ 2560000, 2596864) I0505 12:12:52.186650 filechunks2_test.go:84 compacted chunk 3,51445500b6b4ac [ 2637824, 2678784) I0505 12:12:52.186652 filechunks2_test.go:84 compacted chunk 1,51446285e52a61 [ 2695168, 2715648) --- PASS: TestCompactFileChunksRealCase (0.00s) === RUN TestReadResolvedChunks resolved to 4 visible intervales [0,50) a 1 [50,150) b 2 [175,275) e 5 [275,300) d 4 --- PASS: TestReadResolvedChunks (0.00s) === RUN TestReadResolvedChunks2 resolved to 2 visible intervales [200,225) e 5 [225,250) c 3 --- PASS: TestReadResolvedChunks2 (0.00s) === RUN TestRandomizedReadResolvedChunks --- PASS: TestRandomizedReadResolvedChunks (0.00s) === RUN TestSequentialReadResolvedChunks visibles 13--- PASS: TestSequentialReadResolvedChunks (0.00s) === RUN TestActualReadResolvedChunks [0,2097152) 5,e7b96fef48 1634447487595823000 [2097152,4194304) 5,e5562640b9 1634447487595826000 [4194304,6291456) 5,df033e0fe4 1634447487595827000 [6291456,8388608) 7,eb08148a9b 1634447487595827000 [8388608,10485760) 7,e0f92d1604 1634447487595828000 [10485760,12582912) 7,e33cb63262 1634447487595828000 [12582912,14680064) 5,ea98e40e93 1634447487595829000 [14680064,16777216) 5,e165661172 1634447487595829000 [16777216,18874368) 3,e692097486 1634447487595830000 [18874368,20971520) 3,e28e2e3cbd 1634447487595830000 [20971520,23068672) 3,e443974d4e 1634447487595830000 [23068672,25165824) 2,e815bed597 1634447487595831000 [25165824,27140560) 5,e94715199e 1634447487595832000 --- PASS: TestActualReadResolvedChunks (0.00s) === RUN TestActualReadResolvedChunks2 [0,184320) 1,e7b96fef48 1 [184320,188416) 2,33562640b9 4 [188416,2285568) 4,df033e0fe4 3 --- PASS: TestActualReadResolvedChunks2 (0.00s) === RUN TestCompactFileChunks --- PASS: TestCompactFileChunks (0.00s) === RUN TestCompactFileChunks2 --- PASS: TestCompactFileChunks2 (0.00s) === RUN TestRandomFileChunksCompact --- PASS: TestRandomFileChunksCompact (0.00s) === RUN TestIntervalMerging 2026/05/05 12:12:52 ++++++++++ merged test case 0 ++++++++++++++++++++ 2026/05/05 12:12:52 test case 0, interval start=0, stop=100, fileId=abc 2026/05/05 12:12:52 test case 0, interval start=100, stop=200, fileId=asdf 2026/05/05 12:12:52 test case 0, interval start=200, stop=300, fileId=fsad 2026/05/05 12:12:52 ++++++++++ merged test case 1 ++++++++++++++++++++ 2026/05/05 12:12:52 test case 1, interval start=0, stop=200, fileId=asdf 2026/05/05 12:12:52 ++++++++++ merged test case 2 ++++++++++++++++++++ 2026/05/05 12:12:52 test case 2, interval start=0, stop=70, fileId=b 2026/05/05 12:12:52 test case 2, interval start=70, stop=100, fileId=a 2026/05/05 12:12:52 ++++++++++ merged test case 3 ++++++++++++++++++++ 2026/05/05 12:12:52 test case 3, interval start=0, stop=50, fileId=asdf 2026/05/05 12:12:52 test case 3, interval start=50, stop=300, fileId=xxxx 2026/05/05 12:12:52 ++++++++++ merged test case 4 ++++++++++++++++++++ 2026/05/05 12:12:52 test case 4, interval start=0, stop=200, fileId=asdf 2026/05/05 12:12:52 test case 4, interval start=250, stop=500, fileId=xxxx 2026/05/05 12:12:52 ++++++++++ merged test case 5 ++++++++++++++++++++ 2026/05/05 12:12:52 test case 5, interval start=0, stop=200, fileId=d 2026/05/05 12:12:52 test case 5, interval start=200, stop=220, fileId=c 2026/05/05 12:12:52 ++++++++++ merged test case 6 ++++++++++++++++++++ 2026/05/05 12:12:52 test case 6, interval start=0, stop=100, fileId=xyz 2026/05/05 12:12:52 ++++++++++ merged test case 7 ++++++++++++++++++++ 2026/05/05 12:12:52 test case 7, interval start=0, stop=2097152, fileId=3,029565bf3092 2026/05/05 12:12:52 test case 7, interval start=2097152, stop=5242880, fileId=6,029632f47ae2 2026/05/05 12:12:52 test case 7, interval start=5242880, stop=8388608, fileId=2,029734c5aa10 2026/05/05 12:12:52 test case 7, interval start=8388608, stop=11534336, fileId=5,02982f80de50 2026/05/05 12:12:52 test case 7, interval start=11534336, stop=14376529, fileId=7,0299ad723803 2026/05/05 12:12:52 ++++++++++ merged test case 8 ++++++++++++++++++++ 2026/05/05 12:12:52 test case 8, interval start=0, stop=77824, fileId=4,0b3df938e301 2026/05/05 12:12:52 test case 8, interval start=77824, stop=208896, fileId=4,0b3f0c7202f0 2026/05/05 12:12:52 test case 8, interval start=208896, stop=339968, fileId=2,0b4031a72689 2026/05/05 12:12:52 test case 8, interval start=339968, stop=471040, fileId=3,0b416a557362 2026/05/05 12:12:52 test case 8, interval start=471040, stop=472225, fileId=6,0b3e0650019c --- PASS: TestIntervalMerging (0.00s) === RUN TestChunksReading 2026/05/05 12:12:52 ++++++++++ read test case 0 ++++++++++++++++++++ 2026/05/05 12:12:52 read case 0, chunk 0, offset=0, size=100, fileId=abc 2026/05/05 12:12:52 read case 0, chunk 1, offset=0, size=100, fileId=asdf 2026/05/05 12:12:52 read case 0, chunk 2, offset=0, size=50, fileId=fsad 2026/05/05 12:12:52 ++++++++++ read test case 1 ++++++++++++++++++++ 2026/05/05 12:12:52 read case 1, chunk 0, offset=50, size=100, fileId=asdf 2026/05/05 12:12:52 ++++++++++ read test case 2 ++++++++++++++++++++ 2026/05/05 12:12:52 read case 2, chunk 0, offset=20, size=30, fileId=b 2026/05/05 12:12:52 read case 2, chunk 1, offset=57, size=10, fileId=a 2026/05/05 12:12:52 ++++++++++ read test case 3 ++++++++++++++++++++ 2026/05/05 12:12:52 read case 3, chunk 0, offset=0, size=50, fileId=asdf 2026/05/05 12:12:52 read case 3, chunk 1, offset=0, size=150, fileId=xxxx 2026/05/05 12:12:52 ++++++++++ read test case 4 ++++++++++++++++++++ 2026/05/05 12:12:52 read case 4, chunk 0, offset=0, size=200, fileId=asdf 2026/05/05 12:12:52 read case 4, chunk 1, offset=0, size=150, fileId=xxxx 2026/05/05 12:12:52 ++++++++++ read test case 5 ++++++++++++++++++++ 2026/05/05 12:12:52 read case 5, chunk 0, offset=0, size=200, fileId=c 2026/05/05 12:12:52 read case 5, chunk 1, offset=130, size=20, fileId=b 2026/05/05 12:12:52 ++++++++++ read test case 6 ++++++++++++++++++++ 2026/05/05 12:12:52 read case 6, chunk 0, offset=0, size=100, fileId=xyz 2026/05/05 12:12:52 ++++++++++ read test case 7 ++++++++++++++++++++ 2026/05/05 12:12:52 read case 7, chunk 0, offset=0, size=100, fileId=abc 2026/05/05 12:12:52 read case 7, chunk 1, offset=0, size=100, fileId=asdf 2026/05/05 12:12:52 ++++++++++ read test case 8 ++++++++++++++++++++ 2026/05/05 12:12:52 read case 8, chunk 0, offset=0, size=90, fileId=abc 2026/05/05 12:12:52 read case 8, chunk 1, offset=0, size=100, fileId=asdf 2026/05/05 12:12:52 read case 8, chunk 2, offset=0, size=110, fileId=fsad 2026/05/05 12:12:52 ++++++++++ read test case 9 ++++++++++++++++++++ 2026/05/05 12:12:52 read case 9, chunk 0, offset=0, size=43175936, fileId=2,111fc2cbfac1 2026/05/05 12:12:52 read case 9, chunk 1, offset=0, size=9805824, fileId=2,112a36ea7f85 2026/05/05 12:12:52 read case 9, chunk 2, offset=0, size=19582976, fileId=4,112d5f31c5e7 2026/05/05 12:12:52 read case 9, chunk 3, offset=0, size=60690432, fileId=1,113245f0cdb6 2026/05/05 12:12:52 read case 9, chunk 4, offset=0, size=4014080, fileId=3,1141a70733b5 2026/05/05 12:12:52 read case 9, chunk 5, offset=0, size=16309588, fileId=1,114201d5bbdb --- PASS: TestChunksReading (0.00s) === RUN TestViewFromVisibleIntervals --- PASS: TestViewFromVisibleIntervals (0.00s) === RUN TestViewFromVisibleIntervals2 --- PASS: TestViewFromVisibleIntervals2 (0.00s) === RUN TestViewFromVisibleIntervals3 --- PASS: TestViewFromVisibleIntervals3 (0.00s) === RUN TestCompactFileChunks3 --- PASS: TestCompactFileChunks3 (0.00s) === RUN TestFilerConf --- PASS: TestFilerConf (0.00s) === RUN TestClonePathConf --- PASS: TestClonePathConf (0.00s) === RUN TestClonePathConfNil --- PASS: TestClonePathConfNil (0.00s) === RUN TestDeletionRetryQueue_AddAndRetrieve --- PASS: TestDeletionRetryQueue_AddAndRetrieve (0.00s) === RUN TestDeletionRetryQueue_ExponentialBackoff filer_deletion_test.go:80: Exponential backoff delays: [5m0.00000006s 10m0.00000006s 20m0.00000004s 40m0.00000004s 1h20m0.00000005s] --- PASS: TestDeletionRetryQueue_ExponentialBackoff (0.00s) === RUN TestDeletionRetryQueue_OverflowProtection --- PASS: TestDeletionRetryQueue_OverflowProtection (0.00s) === RUN TestDeletionRetryQueue_MaxAttemptsReached W0505 12:12:52.191011 filer_deletion.go:248 max retry attempts (10) reached for file1, last error: final error --- PASS: TestDeletionRetryQueue_MaxAttemptsReached (0.00s) === RUN TestCalculateBackoff --- PASS: TestCalculateBackoff (0.00s) === RUN TestIsRetryableError --- PASS: TestIsRetryableError (0.00s) === RUN TestDeletionRetryQueue_HeapOrdering --- PASS: TestDeletionRetryQueue_HeapOrdering (0.00s) === RUN TestDeletionRetryQueue_DuplicateFileIds --- PASS: TestDeletionRetryQueue_DuplicateFileIds (0.00s) === RUN TestFilerStoreWrapperMaintainsInodeIndexLifecycle --- PASS: TestFilerStoreWrapperMaintainsInodeIndexLifecycle (0.00s) === RUN TestFilerStoreWrapperMaintainsMultiplePathsPerInode --- PASS: TestFilerStoreWrapperMaintainsMultiplePathsPerInode (0.00s) === RUN TestFilerStoreWrapperUpgradesLegacySinglePathInodeIndexRecords --- PASS: TestFilerStoreWrapperUpgradesLegacySinglePathInodeIndexRecords (0.00s) === RUN TestFilerStoreWrapperKeepsInodeIndexWhenDeleteArrivesAfterRenameInsert --- PASS: TestFilerStoreWrapperKeepsInodeIndexWhenDeleteArrivesAfterRenameInsert (0.00s) === RUN TestRecursiveDeleteRemovesDescendantInodeIndexes I0505 12:12:52.191955 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid: hex_of_nodeid: 1c5 --- PASS: TestRecursiveDeleteRemovesDescendantInodeIndexes (0.00s) === RUN TestCreateEntryAssignsInodeWhenMissing I0505 12:12:52.195068 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid: hex_of_nodeid: 1c5 --- PASS: TestCreateEntryAssignsInodeWhenMissing (0.00s) === RUN TestCreateEntryAssignsInodesToAutoCreatedParents I0505 12:12:52.197594 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid: hex_of_nodeid: 1c5 --- PASS: TestCreateEntryAssignsInodesToAutoCreatedParents (0.00s) === RUN TestUpdateEntryPreservesExistingInode I0505 12:12:52.199008 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid: hex_of_nodeid: 1c5 E0505 12:12:52.199143 filer.go:370 existing /doc.txt is a file --- PASS: TestUpdateEntryPreservesExistingInode (0.00s) === RUN TestUpdateEntryBackfillsMissingLegacyInode I0505 12:12:52.199312 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid: hex_of_nodeid: 1c5 --- PASS: TestUpdateEntryBackfillsMissingLegacyInode (0.00s) === RUN TestMaybeLazyFetchFromRemote_HitsRemoteAndPersists I0505 12:12:52.200351 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid:test-filer hex_of_nodeid: 114 --- PASS: TestMaybeLazyFetchFromRemote_HitsRemoteAndPersists (0.00s) === RUN TestMaybeLazyFetchFromRemote_NotUnderMount I0505 12:12:52.200670 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid:test-filer hex_of_nodeid: 114 --- PASS: TestMaybeLazyFetchFromRemote_NotUnderMount (0.00s) === RUN TestMaybeLazyFetchFromRemote_RemoteObjectNotFound I0505 12:12:52.200823 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid:test-filer hex_of_nodeid: 114 --- PASS: TestMaybeLazyFetchFromRemote_RemoteObjectNotFound (0.00s) === RUN TestMaybeLazyFetchFromRemote_CreateEntryFailureReturnsInMemoryEntry I0505 12:12:52.200940 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid:test-filer hex_of_nodeid: 114 E0505 12:12:52.201077 filer.go:248 insert entry /buckets/mybucket/failfile.txt: simulated store failure W0505 12:12:52.201104 filer_lazy_remote.go:101 maybeLazyFetchFromRemote: failed to persist filer entry for /buckets/mybucket/failfile.txt: insert entry /buckets/mybucket/failfile.txt: simulated store failure --- PASS: TestMaybeLazyFetchFromRemote_CreateEntryFailureReturnsInMemoryEntry (0.00s) === RUN TestMaybeLazyFetchFromRemote_LongestPrefixMount I0505 12:12:52.201131 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid:test-filer hex_of_nodeid: 114 --- PASS: TestMaybeLazyFetchFromRemote_LongestPrefixMount (0.00s) === RUN TestMaybeLazyFetchFromRemote_ContextGuardPreventsRecursion I0505 12:12:52.202469 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid:test-filer hex_of_nodeid: 114 --- PASS: TestMaybeLazyFetchFromRemote_ContextGuardPreventsRecursion (0.00s) === RUN TestFindEntry_LazyFetchOnMiss I0505 12:12:52.202619 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid:test-filer hex_of_nodeid: 114 --- PASS: TestFindEntry_LazyFetchOnMiss (0.00s) === RUN TestDeleteEntryMetaAndData_RemoteOnlyFileDeletesRemoteAndMetadata I0505 12:12:52.202934 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid:test-filer hex_of_nodeid: 114 --- PASS: TestDeleteEntryMetaAndData_RemoteOnlyFileDeletesRemoteAndMetadata (0.00s) === RUN TestDeleteEntryMetaAndData_IsFromOtherClusterSkipsRemoteDelete I0505 12:12:52.203272 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid:test-filer hex_of_nodeid: 114 --- PASS: TestDeleteEntryMetaAndData_IsFromOtherClusterSkipsRemoteDelete (0.00s) === RUN TestDeleteEntryMetaAndData_RemoteOnlyFileNotUnderMountSkipsRemoteDelete I0505 12:12:52.203567 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid:test-filer hex_of_nodeid: 114 --- PASS: TestDeleteEntryMetaAndData_RemoteOnlyFileNotUnderMountSkipsRemoteDelete (0.00s) === RUN TestDeleteEntryMetaAndData_RemoteMountWithoutClientResolutionKeepsMetadata I0505 12:12:52.203834 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid:test-filer hex_of_nodeid: 114 --- PASS: TestDeleteEntryMetaAndData_RemoteMountWithoutClientResolutionKeepsMetadata (0.00s) === RUN TestDeleteEntryMetaAndData_LocalDeleteFailurePreservesMetadata I0505 12:12:52.204105 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid:test-filer hex_of_nodeid: 114 --- PASS: TestDeleteEntryMetaAndData_LocalDeleteFailurePreservesMetadata (0.00s) === RUN TestDeleteEntryMetaAndData_RemoteDeleteNotFoundStillDeletesMetadata I0505 12:12:52.204270 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid:test-filer hex_of_nodeid: 114 --- PASS: TestDeleteEntryMetaAndData_RemoteDeleteNotFoundStillDeletesMetadata (0.00s) === RUN TestDeleteEntryMetaAndData_RemoteDeleteErrorKeepsMetadata I0505 12:12:52.204592 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid:test-filer hex_of_nodeid: 114 --- PASS: TestDeleteEntryMetaAndData_RemoteDeleteErrorKeepsMetadata (0.00s) === RUN TestDeleteEntryMetaAndData_DirectoryUnderMountDeletesRemoteDirectory I0505 12:12:52.204742 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid:test-filer hex_of_nodeid: 114 --- PASS: TestDeleteEntryMetaAndData_DirectoryUnderMountDeletesRemoteDirectory (0.00s) === RUN TestDeleteEntryMetaAndData_RecursiveFolderDeleteRemotesChildren I0505 12:12:52.208403 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid:test-filer hex_of_nodeid: 114 --- PASS: TestDeleteEntryMetaAndData_RecursiveFolderDeleteRemotesChildren (0.00s) === RUN TestMaybeLazyListFromRemote_PopulatesStoreFromRemote I0505 12:12:52.208782 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid:test-filer hex_of_nodeid: 114 --- PASS: TestMaybeLazyListFromRemote_PopulatesStoreFromRemote (0.00s) === RUN TestMaybeLazyListFromRemote_DisabledWhenTTLZero I0505 12:12:52.209175 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid:test-filer hex_of_nodeid: 114 --- PASS: TestMaybeLazyListFromRemote_DisabledWhenTTLZero (0.00s) === RUN TestMaybeLazyListFromRemote_TTLCachePreventsSecondCall I0505 12:12:52.209316 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid:test-filer hex_of_nodeid: 114 --- PASS: TestMaybeLazyListFromRemote_TTLCachePreventsSecondCall (0.00s) === RUN TestMaybeLazyListFromRemote_NotUnderMount I0505 12:12:52.209611 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid:test-filer hex_of_nodeid: 114 --- PASS: TestMaybeLazyListFromRemote_NotUnderMount (0.00s) === RUN TestMaybeLazyListFromRemote_SkipsLocalOnlyEntries I0505 12:12:52.209752 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid:test-filer hex_of_nodeid: 114 --- PASS: TestMaybeLazyListFromRemote_SkipsLocalOnlyEntries (0.00s) === RUN TestMaybeLazyListFromRemote_MergesExistingRemoteEntry I0505 12:12:52.210080 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid:test-filer hex_of_nodeid: 114 --- PASS: TestMaybeLazyListFromRemote_MergesExistingRemoteEntry (0.00s) === RUN TestMaybeLazyListFromRemote_ContextGuardPreventsRecursion I0505 12:12:52.210378 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid:test-filer hex_of_nodeid: 114 --- PASS: TestMaybeLazyListFromRemote_ContextGuardPreventsRecursion (0.00s) === RUN TestProtoMarshal w to: 234,2423423422 * 2342342354223234,2342342342"5Ľ 0Ø: text/jsonPØd --- PASS: TestProtoMarshal (0.00s) === RUN TestOnBucketEventsRenameIntoBucketsRootCreatesBucket --- PASS: TestOnBucketEventsRenameIntoBucketsRootCreatesBucket (0.00s) === RUN TestFilerStoreWrapperMimeNormalization === RUN TestFilerStoreWrapperMimeNormalization/files_strip_octet-stream/insert === RUN TestFilerStoreWrapperMimeNormalization/files_strip_octet-stream/update === RUN TestFilerStoreWrapperMimeNormalization/directories_keep_octet-stream/insert === RUN TestFilerStoreWrapperMimeNormalization/directories_keep_octet-stream/update --- PASS: TestFilerStoreWrapperMimeNormalization (0.00s) --- PASS: TestFilerStoreWrapperMimeNormalization/files_strip_octet-stream/insert (0.00s) --- PASS: TestFilerStoreWrapperMimeNormalization/files_strip_octet-stream/update (0.00s) --- PASS: TestFilerStoreWrapperMimeNormalization/directories_keep_octet-stream/insert (0.00s) --- PASS: TestFilerStoreWrapperMimeNormalization/directories_keep_octet-stream/update (0.00s) === RUN TestFilerStoreWrapperWriteOpsRejectCancelledContext === RUN TestFilerStoreWrapperWriteOpsRejectCancelledContext/InsertEntry/cancelled === RUN TestFilerStoreWrapperWriteOpsRejectCancelledContext/InsertEntry/deadline_exceeded === RUN TestFilerStoreWrapperWriteOpsRejectCancelledContext/InsertEntryKnownAbsent/cancelled === RUN TestFilerStoreWrapperWriteOpsRejectCancelledContext/InsertEntryKnownAbsent/deadline_exceeded === RUN TestFilerStoreWrapperWriteOpsRejectCancelledContext/UpdateEntry/cancelled === RUN TestFilerStoreWrapperWriteOpsRejectCancelledContext/UpdateEntry/deadline_exceeded === RUN TestFilerStoreWrapperWriteOpsRejectCancelledContext/DeleteEntry/cancelled === RUN TestFilerStoreWrapperWriteOpsRejectCancelledContext/DeleteEntry/deadline_exceeded === RUN TestFilerStoreWrapperWriteOpsRejectCancelledContext/DeleteOneEntry/cancelled === RUN TestFilerStoreWrapperWriteOpsRejectCancelledContext/DeleteOneEntry/deadline_exceeded === RUN TestFilerStoreWrapperWriteOpsRejectCancelledContext/DeleteFolderChildren/cancelled === RUN TestFilerStoreWrapperWriteOpsRejectCancelledContext/DeleteFolderChildren/deadline_exceeded === RUN TestFilerStoreWrapperWriteOpsRejectCancelledContext/BeginTransaction/cancelled === RUN TestFilerStoreWrapperWriteOpsRejectCancelledContext/BeginTransaction/deadline_exceeded === RUN TestFilerStoreWrapperWriteOpsRejectCancelledContext/CommitTransaction/cancelled === RUN TestFilerStoreWrapperWriteOpsRejectCancelledContext/CommitTransaction/deadline_exceeded === RUN TestFilerStoreWrapperWriteOpsRejectCancelledContext/KvPut/cancelled === RUN TestFilerStoreWrapperWriteOpsRejectCancelledContext/KvPut/deadline_exceeded === RUN TestFilerStoreWrapperWriteOpsRejectCancelledContext/KvDelete/cancelled === RUN TestFilerStoreWrapperWriteOpsRejectCancelledContext/KvDelete/deadline_exceeded --- PASS: TestFilerStoreWrapperWriteOpsRejectCancelledContext (0.00s) --- PASS: TestFilerStoreWrapperWriteOpsRejectCancelledContext/InsertEntry/cancelled (0.00s) --- PASS: TestFilerStoreWrapperWriteOpsRejectCancelledContext/InsertEntry/deadline_exceeded (0.00s) --- PASS: TestFilerStoreWrapperWriteOpsRejectCancelledContext/InsertEntryKnownAbsent/cancelled (0.00s) --- PASS: TestFilerStoreWrapperWriteOpsRejectCancelledContext/InsertEntryKnownAbsent/deadline_exceeded (0.00s) --- PASS: TestFilerStoreWrapperWriteOpsRejectCancelledContext/UpdateEntry/cancelled (0.00s) --- PASS: TestFilerStoreWrapperWriteOpsRejectCancelledContext/UpdateEntry/deadline_exceeded (0.00s) --- PASS: TestFilerStoreWrapperWriteOpsRejectCancelledContext/DeleteEntry/cancelled (0.00s) --- PASS: TestFilerStoreWrapperWriteOpsRejectCancelledContext/DeleteEntry/deadline_exceeded (0.00s) --- PASS: TestFilerStoreWrapperWriteOpsRejectCancelledContext/DeleteOneEntry/cancelled (0.00s) --- PASS: TestFilerStoreWrapperWriteOpsRejectCancelledContext/DeleteOneEntry/deadline_exceeded (0.00s) --- PASS: TestFilerStoreWrapperWriteOpsRejectCancelledContext/DeleteFolderChildren/cancelled (0.00s) --- PASS: TestFilerStoreWrapperWriteOpsRejectCancelledContext/DeleteFolderChildren/deadline_exceeded (0.00s) --- PASS: TestFilerStoreWrapperWriteOpsRejectCancelledContext/BeginTransaction/cancelled (0.00s) --- PASS: TestFilerStoreWrapperWriteOpsRejectCancelledContext/BeginTransaction/deadline_exceeded (0.00s) --- PASS: TestFilerStoreWrapperWriteOpsRejectCancelledContext/CommitTransaction/cancelled (0.00s) --- PASS: TestFilerStoreWrapperWriteOpsRejectCancelledContext/CommitTransaction/deadline_exceeded (0.00s) --- PASS: TestFilerStoreWrapperWriteOpsRejectCancelledContext/KvPut/cancelled (0.00s) --- PASS: TestFilerStoreWrapperWriteOpsRejectCancelledContext/KvPut/deadline_exceeded (0.00s) --- PASS: TestFilerStoreWrapperWriteOpsRejectCancelledContext/KvDelete/cancelled (0.00s) --- PASS: TestFilerStoreWrapperWriteOpsRejectCancelledContext/KvDelete/deadline_exceeded (0.00s) === RUN TestFilerStoreWrapperWriteOpsSucceedWithActiveContext --- PASS: TestFilerStoreWrapperWriteOpsSucceedWithActiveContext (0.00s) === RUN TestFilerStoreWrapperReadOpsSucceedWithCancelledContext --- PASS: TestFilerStoreWrapperReadOpsSucceedWithCancelledContext (0.00s) === RUN TestFilerStoreWrapperRollbackSucceedsWithCancelledContext --- PASS: TestFilerStoreWrapperRollbackSucceedsWithCancelledContext (0.00s) === RUN TestIntervalList_Overlay [0,25) 6 6 [25,50) 1 1 [50,150) 2 2 [175,210) 5 5 [210,225) 3 3 [225,250) 4 4 [0,25) 6 6 [25,50) 1 1 [50,150) 7 7 [175,210) 5 5 [210,225) 3 3 [225,250) 4 4 --- PASS: TestIntervalList_Overlay (0.00s) === RUN TestIntervalList_Overlay2 [0,50) 2 2 [50,100) 1 1 --- PASS: TestIntervalList_Overlay2 (0.00s) === RUN TestIntervalList_Overlay3 [0,60) 2 2 [60,100) 1 1 --- PASS: TestIntervalList_Overlay3 (0.00s) === RUN TestIntervalList_Overlay4 [0,100) 2 2 --- PASS: TestIntervalList_Overlay4 (0.00s) === RUN TestIntervalList_Overlay5 [0,110) 2 2 --- PASS: TestIntervalList_Overlay5 (0.00s) === RUN TestIntervalList_Overlay6 [50,110) 2 2 --- PASS: TestIntervalList_Overlay6 (0.00s) === RUN TestIntervalList_Overlay7 [50,90) 2 2 [90,100) 1 1 --- PASS: TestIntervalList_Overlay7 (0.00s) === RUN TestIntervalList_Overlay8 [50,60) 1 1 [60,90) 2 2 [90,100) 1 1 --- PASS: TestIntervalList_Overlay8 (0.00s) === RUN TestIntervalList_Overlay9 [50,60) 1 1 [60,100) 2 2 --- PASS: TestIntervalList_Overlay9 (0.00s) === RUN TestIntervalList_Overlay10 [50,60) 1 1 [60,110) 2 2 --- PASS: TestIntervalList_Overlay10 (0.00s) === RUN TestIntervalList_Overlay11 [0,90) 5 5 [90,100) 1 1 [100,110) 2 2 --- PASS: TestIntervalList_Overlay11 (0.00s) === RUN TestIntervalList_insertInterval1 [50,150) 2 2 [200,250) 3 3 --- PASS: TestIntervalList_insertInterval1 (0.00s) === RUN TestIntervalList_insertInterval2 [0,25) 3 3 [50,150) 2 2 --- PASS: TestIntervalList_insertInterval2 (0.00s) === RUN TestIntervalList_insertInterval3 [0,75) 3 3 [75,150) 2 2 [200,250) 4 4 --- PASS: TestIntervalList_insertInterval3 (0.00s) === RUN TestIntervalList_insertInterval4 [0,200) 3 3 [200,250) 4 4 --- PASS: TestIntervalList_insertInterval4 (0.00s) === RUN TestIntervalList_insertInterval5 [0,225) 5 5 [225,250) 4 4 --- PASS: TestIntervalList_insertInterval5 (0.00s) === RUN TestIntervalList_insertInterval6 [0,50) 1 1 [50,150) 2 2 [150,200) 1 1 [200,250) 4 4 [250,275) 1 1 --- PASS: TestIntervalList_insertInterval6 (0.00s) === RUN TestIntervalList_insertInterval7 [50,150) 2 2 [150,200) 1 1 [200,250) 4 4 [250,275) 1 1 --- PASS: TestIntervalList_insertInterval7 (0.00s) === RUN TestIntervalList_insertInterval8 [50,75) 2 2 [75,200) 3 3 [200,250) 4 4 [250,275) 3 3 --- PASS: TestIntervalList_insertInterval8 (0.00s) === RUN TestIntervalList_insertInterval9 [50,150) 3 3 [200,250) 4 4 --- PASS: TestIntervalList_insertInterval9 (0.00s) === RUN TestIntervalList_insertInterval10 [50,100) 2 2 [100,200) 5 5 [200,300) 4 4 --- PASS: TestIntervalList_insertInterval10 (0.00s) === RUN TestIntervalList_insertInterval11 [0,64) 1 1 [64,68) 2 2 [68,72) 4 4 [72,136) 3 3 --- PASS: TestIntervalList_insertInterval11 (0.00s) === RUN TestIntervalList_insertIntervalStruct [0,64) 1 {1 0 0} [64,68) 4 {4 0 0} [68,72) 2 {2 0 0} [72,136) 3 {3 0 0} --- PASS: TestIntervalList_insertIntervalStruct (0.00s) === RUN TestNotifyUpdateEventRecordsRequestMetadataEvent --- PASS: TestNotifyUpdateEventRecordsRequestMetadataEvent (0.00s) === RUN TestMountPeerRegistry_RegisterAndList --- PASS: TestMountPeerRegistry_RegisterAndList (0.00s) === RUN TestMountPeerRegistry_RenewExtendsExpiry --- PASS: TestMountPeerRegistry_RenewExtendsExpiry (0.00s) === RUN TestMountPeerRegistry_ExpirationDropsEntry --- PASS: TestMountPeerRegistry_ExpirationDropsEntry (0.00s) === RUN TestMountPeerRegistry_SweepCountsEvictions --- PASS: TestMountPeerRegistry_SweepCountsEvictions (0.00s) === RUN TestMountPeerRegistry_NegativeTTLFallsBackToDefault --- PASS: TestMountPeerRegistry_NegativeTTLFallsBackToDefault (0.00s) === RUN TestMountPeerRegistry_EmptyList --- PASS: TestMountPeerRegistry_EmptyList (0.00s) === RUN TestMountPeerRegistry_EmptyPeerAddrRejected --- PASS: TestMountPeerRegistry_EmptyPeerAddrRejected (0.00s) === RUN TestMountPeerRegistry_TTLCapped --- PASS: TestMountPeerRegistry_TTLCapped (0.00s) === RUN TestMountPeerRegistry_CapacityLimit --- PASS: TestMountPeerRegistry_CapacityLimit (0.00s) === RUN TestReaderAt --- PASS: TestReaderAt (0.00s) === RUN TestReaderAt0 --- PASS: TestReaderAt0 (0.00s) === RUN TestReaderAt1 --- PASS: TestReaderAt1 (0.00s) === RUN TestReaderAtGappedChunksDoNotLeak --- PASS: TestReaderAtGappedChunksDoNotLeak (0.00s) === RUN TestReaderAtSparseFileDoesNotLeak --- PASS: TestReaderAtSparseFileDoesNotLeak (0.00s) === RUN TestReaderCacheContextCancellation --- PASS: TestReaderCacheContextCancellation (0.00s) === RUN TestReaderCacheFallbackToChunkCache --- PASS: TestReaderCacheFallbackToChunkCache (0.00s) === RUN TestReaderCacheMultipleReadersWaitForSameChunk --- PASS: TestReaderCacheMultipleReadersWaitForSameChunk (0.00s) === RUN TestReaderCachePartialRead === RUN TestReaderCachePartialRead/read_from_start === RUN TestReaderCachePartialRead/read_from_middle === RUN TestReaderCachePartialRead/read_to_end === RUN TestReaderCachePartialRead/read_single_byte --- PASS: TestReaderCachePartialRead (0.00s) --- PASS: TestReaderCachePartialRead/read_from_start (0.00s) --- PASS: TestReaderCachePartialRead/read_from_middle (0.00s) --- PASS: TestReaderCachePartialRead/read_to_end (0.00s) --- PASS: TestReaderCachePartialRead/read_single_byte (0.00s) === RUN TestReaderCacheCleanup --- PASS: TestReaderCacheCleanup (0.00s) === RUN TestSingleChunkCacherDoneSignal --- PASS: TestSingleChunkCacherDoneSignal (0.00s) === RUN TestSingleChunkCacherLookupError --- PASS: TestSingleChunkCacherLookupError (0.00s) === RUN TestSingleChunkCacherContextCancellationDuringLookup --- PASS: TestSingleChunkCacherContextCancellationDuringLookup (0.00s) === RUN TestSingleChunkCacherMultipleReadersWaitForDownload --- PASS: TestSingleChunkCacherMultipleReadersWaitForDownload (0.00s) === RUN TestReaderCacheDownloaderDedup --- PASS: TestReaderCacheDownloaderDedup (0.00s) === RUN TestSingleChunkCacherOneReaderCancelsOthersContinue --- PASS: TestSingleChunkCacherOneReaderCancelsOthersContinue (0.00s) === RUN TestFilerRemoteStorage_FindRemoteStorageClient --- PASS: TestFilerRemoteStorage_FindRemoteStorageClient (0.00s) === RUN TestFilerRemoteStorage_FindMountDirectory_LongestPrefixWins --- PASS: TestFilerRemoteStorage_FindMountDirectory_LongestPrefixWins (0.00s) === RUN TestS3Conf --- PASS: TestS3Conf (0.00s) === RUN TestCheckDuplicateAccessKey --- PASS: TestCheckDuplicateAccessKey (0.00s) === RUN TestPrefetchInOrderDelivery --- PASS: TestPrefetchInOrderDelivery (0.00s) === RUN TestPrefetchSingleChunk --- PASS: TestPrefetchSingleChunk (0.00s) === RUN TestPrefetchFallbackToSequential --- PASS: TestPrefetchFallbackToSequential (0.00s) === RUN TestPrefetchContextCancellation I0505 12:12:52.270402 filechunk_manifest.go:185 read http://127.0.0.1:37355/1,2 failed, err: Get "http://127.0.0.1:37355/1,2?readDeleted=true": context deadline exceeded I0505 12:12:52.270448 filechunk_manifest.go:185 read http://127.0.0.1:37355/1,1 failed, err: Get "http://127.0.0.1:37355/1,1?readDeleted=true": context deadline exceeded I0505 12:12:52.270448 filechunk_manifest.go:185 read http://127.0.0.1:37355/1,0 failed, err: Get "http://127.0.0.1:37355/1,0?readDeleted=true": context deadline exceeded I0505 12:12:52.270494 filechunk_manifest.go:185 read http://127.0.0.1:37355/1,3 failed, err: Get "http://127.0.0.1:37355/1,3?readDeleted=true": context deadline exceeded --- PASS: TestPrefetchContextCancellation (0.10s) === RUN TestPrefetchRangeRequest --- PASS: TestPrefetchRangeRequest (0.00s) === RUN TestPrefetchLargePrefetchCount --- PASS: TestPrefetchLargePrefetchCount (0.00s) === RUN TestPrefetchConcurrentDownloads --- PASS: TestPrefetchConcurrentDownloads (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/filer 0.161s ? github.com/seaweedfs/seaweedfs/weed/filer/abstract_sql [no test files] ? github.com/seaweedfs/seaweedfs/weed/filer/arangodb [no test files] ? github.com/seaweedfs/seaweedfs/weed/filer/cassandra [no test files] ? github.com/seaweedfs/seaweedfs/weed/filer/cassandra2 [no test files] ? github.com/seaweedfs/seaweedfs/weed/filer/elastic/v7 [no test files] === RUN TestCleanupQueue_Add --- PASS: TestCleanupQueue_Add (0.00s) === RUN TestCleanupQueue_Add_OutOfOrder --- PASS: TestCleanupQueue_Add_OutOfOrder (0.00s) === RUN TestCleanupQueue_Add_DuplicateWithOlderTime --- PASS: TestCleanupQueue_Add_DuplicateWithOlderTime (0.00s) === RUN TestCleanupQueue_Remove --- PASS: TestCleanupQueue_Remove (0.00s) === RUN TestCleanupQueue_Pop --- PASS: TestCleanupQueue_Pop (0.00s) === RUN TestCleanupQueue_Peek --- PASS: TestCleanupQueue_Peek (0.00s) === RUN TestCleanupQueue_Contains --- PASS: TestCleanupQueue_Contains (0.00s) === RUN TestCleanupQueue_ShouldProcess_MaxSize --- PASS: TestCleanupQueue_ShouldProcess_MaxSize (0.00s) === RUN TestCleanupQueue_ShouldProcess_MaxAge --- PASS: TestCleanupQueue_ShouldProcess_MaxAge (0.00s) === RUN TestCleanupQueue_Clear --- PASS: TestCleanupQueue_Clear (0.00s) === RUN TestCleanupQueue_OldestAge --- PASS: TestCleanupQueue_OldestAge (0.00s) === RUN TestCleanupQueue_TimeOrder --- PASS: TestCleanupQueue_TimeOrder (0.00s) === RUN TestCleanupQueue_DuplicateWithNewerTime --- PASS: TestCleanupQueue_DuplicateWithNewerTime (0.00s) === RUN TestCleanupQueue_Concurrent --- PASS: TestCleanupQueue_Concurrent (0.00s) === RUN Test_isUnderPath === RUN Test_isUnderPath/child_under_parent === RUN Test_isUnderPath/child_is_parent === RUN Test_isUnderPath/child_not_under_parent === RUN Test_isUnderPath/empty_parent === RUN Test_isUnderPath/root_parent === RUN Test_isUnderPath/parent_with_trailing_slash === RUN Test_isUnderPath/similar_prefix_but_not_under === RUN Test_isUnderPath/deeply_nested --- PASS: Test_isUnderPath (0.00s) --- PASS: Test_isUnderPath/child_under_parent (0.00s) --- PASS: Test_isUnderPath/child_is_parent (0.00s) --- PASS: Test_isUnderPath/child_not_under_parent (0.00s) --- PASS: Test_isUnderPath/empty_parent (0.00s) --- PASS: Test_isUnderPath/root_parent (0.00s) --- PASS: Test_isUnderPath/parent_with_trailing_slash (0.00s) --- PASS: Test_isUnderPath/similar_prefix_but_not_under (0.00s) --- PASS: Test_isUnderPath/deeply_nested (0.00s) === RUN Test_isUnderBucketPath === RUN Test_isUnderBucketPath/bucket_path_itself === RUN Test_isUnderBucketPath/bucket_directory === RUN Test_isUnderBucketPath/folder_in_bucket === RUN Test_isUnderBucketPath/nested_folder === RUN Test_isUnderBucketPath/outside_buckets === RUN Test_isUnderBucketPath/empty_bucket_path --- PASS: Test_isUnderBucketPath (0.00s) --- PASS: Test_isUnderBucketPath/bucket_path_itself (0.00s) --- PASS: Test_isUnderBucketPath/bucket_directory (0.00s) --- PASS: Test_isUnderBucketPath/folder_in_bucket (0.00s) --- PASS: Test_isUnderBucketPath/nested_folder (0.00s) --- PASS: Test_isUnderBucketPath/outside_buckets (0.00s) --- PASS: Test_isUnderBucketPath/empty_bucket_path (0.00s) === RUN Test_autoRemoveEmptyFoldersEnabled === RUN Test_autoRemoveEmptyFoldersEnabled/no_attrs_defaults_enabled === RUN Test_autoRemoveEmptyFoldersEnabled/missing_key_defaults_enabled === RUN Test_autoRemoveEmptyFoldersEnabled/allow-empty_disables_cleanup === RUN Test_autoRemoveEmptyFoldersEnabled/explicit_false_keeps_cleanup_enabled --- PASS: Test_autoRemoveEmptyFoldersEnabled (0.00s) --- PASS: Test_autoRemoveEmptyFoldersEnabled/no_attrs_defaults_enabled (0.00s) --- PASS: Test_autoRemoveEmptyFoldersEnabled/missing_key_defaults_enabled (0.00s) --- PASS: Test_autoRemoveEmptyFoldersEnabled/allow-empty_disables_cleanup (0.00s) --- PASS: Test_autoRemoveEmptyFoldersEnabled/explicit_false_keeps_cleanup_enabled (0.00s) === RUN TestEmptyFolderCleaner_ownsFolder --- PASS: TestEmptyFolderCleaner_ownsFolder (0.00s) === RUN TestEmptyFolderCleaner_ownsFolder_singleServer --- PASS: TestEmptyFolderCleaner_ownsFolder_singleServer (0.00s) === RUN TestEmptyFolderCleaner_ownsFolder_emptyRing --- PASS: TestEmptyFolderCleaner_ownsFolder_emptyRing (0.00s) === RUN TestEmptyFolderCleaner_OnCreateEvent_cancelsCleanup --- PASS: TestEmptyFolderCleaner_OnCreateEvent_cancelsCleanup (0.00s) === RUN TestEmptyFolderCleaner_OnDeleteEvent_deduplication --- PASS: TestEmptyFolderCleaner_OnDeleteEvent_deduplication (0.00s) === RUN TestEmptyFolderCleaner_OnDeleteEvent_multipleFolders --- PASS: TestEmptyFolderCleaner_OnDeleteEvent_multipleFolders (0.00s) === RUN TestEmptyFolderCleaner_OnDeleteEvent_notOwner --- PASS: TestEmptyFolderCleaner_OnDeleteEvent_notOwner (0.00s) === RUN TestEmptyFolderCleaner_OnDeleteEvent_disabled --- PASS: TestEmptyFolderCleaner_OnDeleteEvent_disabled (0.00s) === RUN TestEmptyFolderCleaner_OnDeleteEvent_directoryDeletion --- PASS: TestEmptyFolderCleaner_OnDeleteEvent_directoryDeletion (0.00s) === RUN TestEmptyFolderCleaner_cachedCounts --- PASS: TestEmptyFolderCleaner_cachedCounts (0.00s) === RUN TestEmptyFolderCleaner_Stop --- PASS: TestEmptyFolderCleaner_Stop (0.00s) === RUN TestEmptyFolderCleaner_cacheEviction --- PASS: TestEmptyFolderCleaner_cacheEviction (0.00s) === RUN TestEmptyFolderCleaner_cacheEviction_skipsEntriesInQueue --- PASS: TestEmptyFolderCleaner_cacheEviction_skipsEntriesInQueue (0.00s) === RUN TestEmptyFolderCleaner_queueFIFOOrder --- PASS: TestEmptyFolderCleaner_queueFIFOOrder (0.00s) === RUN TestEmptyFolderCleaner_processCleanupQueue_onlyProcessesAgedItems I0505 12:12:52.181834 empty_folder_cleaner.go:314 EmptyFolderCleaner: deleting empty folder /buckets/test/folder1 (triggered by i1) I0505 12:12:52.182290 empty_folder_cleaner.go:314 EmptyFolderCleaner: deleting empty folder /buckets/test/folder2 (triggered by i2) --- PASS: TestEmptyFolderCleaner_processCleanupQueue_onlyProcessesAgedItems (0.00s) === RUN TestEmptyFolderCleaner_executeCleanup_bucketPolicyDisabledSkips --- PASS: TestEmptyFolderCleaner_executeCleanup_bucketPolicyDisabledSkips (0.00s) === RUN TestEmptyFolderCleaner_executeCleanup_directoryMarker === RUN TestEmptyFolderCleaner_executeCleanup_directoryMarker/skips_explicit_directory_marker === RUN TestEmptyFolderCleaner_executeCleanup_directoryMarker/deletes_implicit_empty_folder I0505 12:12:52.182391 empty_folder_cleaner.go:314 EmptyFolderCleaner: deleting empty folder /buckets/test/folder (triggered by triggered_item) --- PASS: TestEmptyFolderCleaner_executeCleanup_directoryMarker (0.00s) --- PASS: TestEmptyFolderCleaner_executeCleanup_directoryMarker/skips_explicit_directory_marker (0.00s) --- PASS: TestEmptyFolderCleaner_executeCleanup_directoryMarker/deletes_implicit_empty_folder (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/filer/empty_folder_cleanup 0.022s === RUN TestStore --- PASS: TestStore (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/filer/etcd 0.025s ? github.com/seaweedfs/seaweedfs/weed/filer/foundationdb [no test files] ? github.com/seaweedfs/seaweedfs/weed/filer/hbase [no test files] === RUN TestCreateAndFind I0505 12:12:52.187683 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid: hex_of_nodeid: 1c5 I0505 12:12:52.190458 leveldb_store.go:48 filer store dir: /tmp/TestCreateAndFind4017041372/001 I0505 12:12:52.190480 file_util.go:28 Folder /tmp/TestCreateAndFind4017041372/001 Permission: -rwxr-xr-x I0505 12:12:52.191841 filer.go:181 create filer.store.id to 1128696424 --- PASS: TestCreateAndFind (0.01s) === RUN TestEmptyRoot I0505 12:12:52.192905 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid: hex_of_nodeid: 1c5 I0505 12:12:52.193087 leveldb_store.go:48 filer store dir: /tmp/TestEmptyRoot1699068911/001 I0505 12:12:52.193104 file_util.go:28 Folder /tmp/TestEmptyRoot1699068911/001 Permission: -rwxr-xr-x I0505 12:12:52.193654 filer.go:181 create filer.store.id to 1679777650 --- PASS: TestEmptyRoot (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/filer/leveldb 0.031s === RUN TestCreateAndFind I0505 12:12:52.185687 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid: hex_of_nodeid: 1c5 I0505 12:12:52.188553 leveldb2_store.go:43 filer store leveldb2 dir: /tmp/TestCreateAndFind3370805670/001 I0505 12:12:52.188573 file_util.go:28 Folder /tmp/TestCreateAndFind3370805670/001 Permission: -rwxr-xr-x I0505 12:12:52.191122 filer.go:181 create filer.store.id to -246150697 --- PASS: TestCreateAndFind (0.01s) === RUN TestEmptyRoot I0505 12:12:52.195470 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid: hex_of_nodeid: 1c5 I0505 12:12:52.195713 leveldb2_store.go:43 filer store leveldb2 dir: /tmp/TestEmptyRoot1576201259/001 I0505 12:12:52.195725 file_util.go:28 Folder /tmp/TestEmptyRoot1576201259/001 Permission: -rwxr-xr-x I0505 12:12:52.202083 filer.go:181 create filer.store.id to -1826302501 --- PASS: TestEmptyRoot (0.01s) PASS ok github.com/seaweedfs/seaweedfs/weed/filer/leveldb2 0.041s === RUN TestCreateAndFind I0505 12:12:52.184362 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid: hex_of_nodeid: 1c5 I0505 12:12:52.187159 leveldb3_store.go:50 filer store leveldb3 dir: /tmp/TestCreateAndFind2855722979/001 I0505 12:12:52.187185 file_util.go:28 Folder /tmp/TestCreateAndFind2855722979/001 Permission: -rwxr-xr-x I0505 12:12:52.189562 filer.go:181 create filer.store.id to -1492156186 --- PASS: TestCreateAndFind (0.01s) === RUN TestEmptyRoot I0505 12:12:52.190743 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid: hex_of_nodeid: 1c5 I0505 12:12:52.190919 leveldb3_store.go:50 filer store leveldb3 dir: /tmp/TestEmptyRoot2922516364/001 I0505 12:12:52.190931 file_util.go:28 Folder /tmp/TestEmptyRoot2922516364/001 Permission: -rwxr-xr-x I0505 12:12:52.191478 filer.go:181 create filer.store.id to 1306616368 --- PASS: TestEmptyRoot (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/filer/leveldb3 0.031s ? github.com/seaweedfs/seaweedfs/weed/filer/mongodb [no test files] ? github.com/seaweedfs/seaweedfs/weed/filer/mysql [no test files] ? github.com/seaweedfs/seaweedfs/weed/filer/mysql2 [no test files] ? github.com/seaweedfs/seaweedfs/weed/filer/postgres [no test files] ? github.com/seaweedfs/seaweedfs/weed/filer/postgres2 [no test files] ? github.com/seaweedfs/seaweedfs/weed/filer/redis [no test files] ? github.com/seaweedfs/seaweedfs/weed/filer/redis2 [no test files] testing: warning: no tests to run PASS ok github.com/seaweedfs/seaweedfs/weed/filer/redis3 0.020s [no tests to run] ? github.com/seaweedfs/seaweedfs/weed/filer/sqlite [no test files] ? github.com/seaweedfs/seaweedfs/weed/filer/store_test [no test files] ? github.com/seaweedfs/seaweedfs/weed/filer/tarantool [no test files] ? github.com/seaweedfs/seaweedfs/weed/filer/tikv [no test files] ? github.com/seaweedfs/seaweedfs/weed/filer/ydb [no test files] ? github.com/seaweedfs/seaweedfs/weed/filer_client [no test files] === RUN TestCompressRotated_Toggle --- PASS: TestCompressRotated_Toggle (0.00s) === RUN TestCompressFile --- PASS: TestCompressFile (0.00s) === RUN TestCompressFile_AlreadyGz --- PASS: TestCompressFile_AlreadyGz (0.00s) === RUN TestCompressFile_NonExistent --- PASS: TestCompressFile_NonExistent (0.00s) === RUN TestCompressFile_EmptyFile --- PASS: TestCompressFile_EmptyFile (0.00s) === RUN TestCompressFile_LargeContent --- PASS: TestCompressFile_LargeContent (0.00s) === RUN TestJSONMode_Toggle --- PASS: TestJSONMode_Toggle (0.00s) === RUN TestJSONMode_Output {"ts":"2026-03-19T15:30:00Z","level":"INFO","file":"glog_json_test.go","line":39,"msg":"hello json"} --- PASS: TestJSONMode_Output (0.00s) === RUN TestJSONMode_AllLevels {"ts":"2026-05-05T12:12:52.174881465Z","level":"INFO","file":"glog_json_test.go","line":78,"msg":"info msg"} {"ts":"2026-05-05T12:12:52.174885643Z","level":"WARNING","file":"glog_json_test.go","line":79,"msg":"warn msg"} {"ts":"2026-05-05T12:12:52.17488969Z","level":"ERROR","file":"glog_json_test.go","line":80,"msg":"error msg"} --- PASS: TestJSONMode_AllLevels (0.00s) === RUN TestJSONMode_Infof {"ts":"2026-05-05T12:12:52.174923203Z","level":"INFO","file":"glog_json_test.go","line":106,"msg":"count=42 name=test"} --- PASS: TestJSONMode_Infof (0.00s) === RUN TestJSONEscapeString --- PASS: TestJSONEscapeString (0.00s) === RUN TestItoa --- PASS: TestItoa (0.00s) === RUN TestJSONMode_TextFallback I0505 12:12:52.174967 glog_json_test.go:167 text mode --- PASS: TestJSONMode_TextFallback (0.00s) === RUN TestShortHostname --- PASS: TestShortHostname (0.00s) === RUN TestInfo I0505 12:12:52.175046 glog_test.go:92 test --- PASS: TestInfo (0.00s) === RUN TestInfoDepth I0505 12:12:52.175061 glog_test.go:109 depth-test0 I0505 12:12:52.175064 glog_test.go:110 depth-test1 --- PASS: TestInfoDepth (0.00s) === RUN TestCopyStandardLogToPanic --- PASS: TestCopyStandardLogToPanic (0.00s) === RUN TestStandardLog I0505 12:12:52.175099 glog_test.go:163 test --- PASS: TestStandardLog (0.00s) === RUN TestHeader I0102 15:04:05.067890 glog_test.go:181 test --- PASS: TestHeader (0.00s) === RUN TestError E0505 12:12:52.175150 glog_test.go:202 test --- PASS: TestError (0.00s) === RUN TestWarning W0505 12:12:52.175162 glog_test.go:224 test --- PASS: TestWarning (0.00s) === RUN TestV I0505 12:12:52.175174 glog_test.go:243 test --- PASS: TestV (0.00s) === RUN TestVmoduleOn I0505 12:12:52.175199 glog_test.go:267 test --- PASS: TestVmoduleOn (0.00s) === RUN TestVmoduleOff --- PASS: TestVmoduleOff (0.00s) === RUN TestVmoduleGlob --- PASS: TestVmoduleGlob (0.00s) === RUN TestRollover I0505 12:12:52.175259 glog_test.go:337 x I0505 12:12:52.175606 glog_test.go:351 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx I0505 12:12:53.177310 glog_test.go:364 x --- PASS: TestRollover (1.00s) === RUN TestTimeBasedRollover I0505 12:12:53.177583 glog_test.go:393 x I0505 12:42:53.177323 glog_test.go:407 still within interval I0505 13:13:53.177323 glog_test.go:417 past interval --- PASS: TestTimeBasedRollover (0.00s) === RUN TestLogBacktraceAt I0505 12:12:53.177708 glog_test.go:448 we want a stack trace here goroutine 67 [running]: github.com/seaweedfs/seaweedfs/weed/glog.stacks(0x0) /startdir/src/seaweedfs-4.23/weed/glog/glog.go:832 +0x85 github.com/seaweedfs/seaweedfs/weed/glog.(*loggingT).output(0x8eee20, 0x0, 0x1da47df02310, {0x719ea5?, 0x1?}, 0x0?, 0x0) /startdir/src/seaweedfs-4.23/weed/glog/glog.go:730 +0xe5 github.com/seaweedfs/seaweedfs/weed/glog.(*loggingT).printDepth(0x8eee20, 0x0, 0x1, {0x1da47dee6e30, 0x1, 0x1}) /startdir/src/seaweedfs-4.23/weed/glog/glog.go:667 +0x10c github.com/seaweedfs/seaweedfs/weed/glog.(*loggingT).print(...) /startdir/src/seaweedfs-4.23/weed/glog/glog.go:654 github.com/seaweedfs/seaweedfs/weed/glog.Info(...) /startdir/src/seaweedfs-4.23/weed/glog/glog.go:1149 github.com/seaweedfs/seaweedfs/weed/glog.TestLogBacktraceAt(0x1da47e0a2248) /startdir/src/seaweedfs-4.23/weed/glog/glog_test.go:448 +0x40b testing.tRunner(0x1da47e0a2248, 0x6bfef0) /usr/lib/go/src/testing/testing.go:2036 +0xea created by testing.(*T).Run in goroutine 1 /usr/lib/go/src/testing/testing.go:2101 +0x4c5 --- PASS: TestLogBacktraceAt (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/glog 1.013s === RUN TestRedactSensitiveFormValues --- PASS: TestRedactSensitiveFormValues (0.00s) === RUN TestListUsersResponseXMLOrdering --- PASS: TestListUsersResponseXMLOrdering (0.00s) === RUN TestErrorResponseXMLUsesTopLevelRequestId --- PASS: TestErrorResponseXMLUsesTopLevelRequestId (0.00s) === RUN TestValidateCallerSuppliedAccessKeyId === RUN TestValidateCallerSuppliedAccessKeyId/empty === RUN TestValidateCallerSuppliedAccessKeyId/three_chars === RUN TestValidateCallerSuppliedAccessKeyId/four_chars_ok === RUN TestValidateCallerSuppliedAccessKeyId/mixed_case_alnum === RUN TestValidateCallerSuppliedAccessKeyId/128_chars_ok === RUN TestValidateCallerSuppliedAccessKeyId/129_chars_too_long === RUN TestValidateCallerSuppliedAccessKeyId/slash_rejected === RUN TestValidateCallerSuppliedAccessKeyId/equals_rejected === RUN TestValidateCallerSuppliedAccessKeyId/dash_rejected === RUN TestValidateCallerSuppliedAccessKeyId/underscore_rejected === RUN TestValidateCallerSuppliedAccessKeyId/unicode_rejected --- PASS: TestValidateCallerSuppliedAccessKeyId (0.00s) --- PASS: TestValidateCallerSuppliedAccessKeyId/empty (0.00s) --- PASS: TestValidateCallerSuppliedAccessKeyId/three_chars (0.00s) --- PASS: TestValidateCallerSuppliedAccessKeyId/four_chars_ok (0.00s) --- PASS: TestValidateCallerSuppliedAccessKeyId/mixed_case_alnum (0.00s) --- PASS: TestValidateCallerSuppliedAccessKeyId/128_chars_ok (0.00s) --- PASS: TestValidateCallerSuppliedAccessKeyId/129_chars_too_long (0.00s) --- PASS: TestValidateCallerSuppliedAccessKeyId/slash_rejected (0.00s) --- PASS: TestValidateCallerSuppliedAccessKeyId/equals_rejected (0.00s) --- PASS: TestValidateCallerSuppliedAccessKeyId/dash_rejected (0.00s) --- PASS: TestValidateCallerSuppliedAccessKeyId/underscore_rejected (0.00s) --- PASS: TestValidateCallerSuppliedAccessKeyId/unicode_rejected (0.00s) === RUN TestValidateCallerSuppliedSecretAccessKey === RUN TestValidateCallerSuppliedSecretAccessKey/empty === RUN TestValidateCallerSuppliedSecretAccessKey/seven_chars === RUN TestValidateCallerSuppliedSecretAccessKey/eight_chars_ok === RUN TestValidateCallerSuppliedSecretAccessKey/128_chars_ok === RUN TestValidateCallerSuppliedSecretAccessKey/129_chars_too_long === RUN TestValidateCallerSuppliedSecretAccessKey/non-alnum_allowed_in_secret --- PASS: TestValidateCallerSuppliedSecretAccessKey (0.00s) --- PASS: TestValidateCallerSuppliedSecretAccessKey/empty (0.00s) --- PASS: TestValidateCallerSuppliedSecretAccessKey/seven_chars (0.00s) --- PASS: TestValidateCallerSuppliedSecretAccessKey/eight_chars_ok (0.00s) --- PASS: TestValidateCallerSuppliedSecretAccessKey/128_chars_ok (0.00s) --- PASS: TestValidateCallerSuppliedSecretAccessKey/129_chars_too_long (0.00s) --- PASS: TestValidateCallerSuppliedSecretAccessKey/non-alnum_allowed_in_secret (0.00s) === RUN TestFindAccessKeyOwner === RUN TestFindAccessKeyOwner/matches_user === RUN TestFindAccessKeyOwner/matches_service_account === RUN TestFindAccessKeyOwner/no_match === RUN TestFindAccessKeyOwner/empty_key === RUN TestFindAccessKeyOwner/nil_config --- PASS: TestFindAccessKeyOwner (0.00s) --- PASS: TestFindAccessKeyOwner/matches_user (0.00s) --- PASS: TestFindAccessKeyOwner/matches_service_account (0.00s) --- PASS: TestFindAccessKeyOwner/no_match (0.00s) --- PASS: TestFindAccessKeyOwner/empty_key (0.00s) --- PASS: TestFindAccessKeyOwner/nil_config (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/iam 0.020s === RUN TestPolicyVariableSubstitution --- PASS: TestPolicyVariableSubstitution (0.00s) === RUN TestConditionWithNumericComparison === RUN TestConditionWithNumericComparison/duration_within_limit === RUN TestConditionWithNumericComparison/duration_at_limit === RUN TestConditionWithNumericComparison/duration_exceeding_limit --- PASS: TestConditionWithNumericComparison (0.00s) --- PASS: TestConditionWithNumericComparison/duration_within_limit (0.00s) --- PASS: TestConditionWithNumericComparison/duration_at_limit (0.00s) --- PASS: TestConditionWithNumericComparison/duration_exceeding_limit (0.00s) === RUN TestMultipleConditionOperators === RUN TestMultipleConditionOperators/all_conditions_match === RUN TestMultipleConditionOperators/aud_mismatch === RUN TestMultipleConditionOperators/sub_pattern_mismatch --- PASS: TestMultipleConditionOperators (0.00s) --- PASS: TestMultipleConditionOperators/all_conditions_match (0.00s) --- PASS: TestMultipleConditionOperators/aud_mismatch (0.00s) --- PASS: TestMultipleConditionOperators/sub_pattern_mismatch (0.00s) === RUN TestFullOIDCWorkflow === RUN TestFullOIDCWorkflow/successful_role_assumption_with_policy_validation === RUN TestFullOIDCWorkflow/role_assumption_denied_by_trust_policy === RUN TestFullOIDCWorkflow/invalid_token_rejected --- PASS: TestFullOIDCWorkflow (0.00s) --- PASS: TestFullOIDCWorkflow/successful_role_assumption_with_policy_validation (0.00s) --- PASS: TestFullOIDCWorkflow/role_assumption_denied_by_trust_policy (0.00s) --- PASS: TestFullOIDCWorkflow/invalid_token_rejected (0.00s) === RUN TestFullLDAPWorkflow === RUN TestFullLDAPWorkflow/successful_LDAP_role_assumption === RUN TestFullLDAPWorkflow/invalid_LDAP_credentials --- PASS: TestFullLDAPWorkflow (0.00s) --- PASS: TestFullLDAPWorkflow/successful_LDAP_role_assumption (0.00s) --- PASS: TestFullLDAPWorkflow/invalid_LDAP_credentials (0.00s) === RUN TestPolicyEnforcement === RUN TestPolicyEnforcement/allow_read_access === RUN TestPolicyEnforcement/allow_list_bucket === RUN TestPolicyEnforcement/deny_write_access === RUN TestPolicyEnforcement/deny_delete_access === RUN TestPolicyEnforcement/deny_filer_access --- PASS: TestPolicyEnforcement (0.00s) --- PASS: TestPolicyEnforcement/allow_read_access (0.00s) --- PASS: TestPolicyEnforcement/allow_list_bucket (0.00s) --- PASS: TestPolicyEnforcement/deny_write_access (0.00s) --- PASS: TestPolicyEnforcement/deny_delete_access (0.00s) --- PASS: TestPolicyEnforcement/deny_filer_access (0.00s) === RUN TestSessionPolicyBoundary --- PASS: TestSessionPolicyBoundary (0.00s) === RUN TestAssumeRoleWithWebIdentitySessionPolicy --- PASS: TestAssumeRoleWithWebIdentitySessionPolicy (0.00s) === RUN TestAssumeRoleWithCredentialsSessionPolicy --- PASS: TestAssumeRoleWithCredentialsSessionPolicy (0.00s) === RUN TestSessionExpiration --- PASS: TestSessionExpiration (0.00s) === RUN TestTrustPolicyValidation === RUN TestTrustPolicyValidation/OIDC_user_allowed_by_trust_policy === RUN TestTrustPolicyValidation/LDAP_user_allowed_by_different_role === RUN TestTrustPolicyValidation/Wrong_provider_for_role --- PASS: TestTrustPolicyValidation (0.00s) --- PASS: TestTrustPolicyValidation/OIDC_user_allowed_by_trust_policy (0.00s) --- PASS: TestTrustPolicyValidation/LDAP_user_allowed_by_different_role (0.00s) --- PASS: TestTrustPolicyValidation/Wrong_provider_for_role (0.00s) === RUN TestTrustPolicyWildcardPrincipal === RUN TestTrustPolicyWildcardPrincipal/Wildcard_federated_principal_allows_any_provider === RUN TestTrustPolicyWildcardPrincipal/Wildcard_in_array_allows_any_provider === RUN TestTrustPolicyWildcardPrincipal/Plain_wildcard_allows_any_provider_(regression) === RUN TestTrustPolicyWildcardPrincipal/Non-wildcard_federated_principal_requires_matching_provider === RUN TestTrustPolicyWildcardPrincipal/Interface_array_principal_works_correctly --- PASS: TestTrustPolicyWildcardPrincipal (0.00s) --- PASS: TestTrustPolicyWildcardPrincipal/Wildcard_federated_principal_allows_any_provider (0.00s) --- PASS: TestTrustPolicyWildcardPrincipal/Wildcard_in_array_allows_any_provider (0.00s) --- PASS: TestTrustPolicyWildcardPrincipal/Plain_wildcard_allows_any_provider_(regression) (0.00s) --- PASS: TestTrustPolicyWildcardPrincipal/Non-wildcard_federated_principal_requires_matching_provider (0.00s) --- PASS: TestTrustPolicyWildcardPrincipal/Interface_array_principal_works_correctly (0.00s) === RUN TestOIDCClaimsTrustPolicy --- PASS: TestOIDCClaimsTrustPolicy (0.00s) === RUN TestMemoryRoleStore --- PASS: TestMemoryRoleStore (0.00s) === RUN TestRoleStoreConfiguration --- PASS: TestRoleStoreConfiguration (0.00s) === RUN TestDistributedIAMManagerWithRoleStore --- PASS: TestDistributedIAMManagerWithRoleStore (0.00s) === RUN TestTrustPolicyAWSUserPrincipal === RUN TestTrustPolicyAWSUserPrincipal/matching_user_principal_should_be_allowed === RUN TestTrustPolicyAWSUserPrincipal/non-matching_user_principal_should_be_denied --- PASS: TestTrustPolicyAWSUserPrincipal (0.00s) --- PASS: TestTrustPolicyAWSUserPrincipal/matching_user_principal_should_be_allowed (0.00s) --- PASS: TestTrustPolicyAWSUserPrincipal/non-matching_user_principal_should_be_denied (0.00s) === RUN TestTrustPolicyAWSWildcardPrincipal --- PASS: TestTrustPolicyAWSWildcardPrincipal (0.00s) === RUN TestTrustPolicyAWSUserArrayPrincipal === RUN TestTrustPolicyAWSUserArrayPrincipal/first_listed_user_is_allowed === RUN TestTrustPolicyAWSUserArrayPrincipal/second_listed_user_is_allowed === RUN TestTrustPolicyAWSUserArrayPrincipal/unlisted_user_is_denied --- PASS: TestTrustPolicyAWSUserArrayPrincipal (0.00s) --- PASS: TestTrustPolicyAWSUserArrayPrincipal/first_listed_user_is_allowed (0.00s) --- PASS: TestTrustPolicyAWSUserArrayPrincipal/second_listed_user_is_allowed (0.00s) --- PASS: TestTrustPolicyAWSUserArrayPrincipal/unlisted_user_is_denied (0.00s) === RUN TestTrustPolicyPlainStringPrincipal --- PASS: TestTrustPolicyPlainStringPrincipal (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/iam/integration 0.050s ? github.com/seaweedfs/seaweedfs/weed/iam/ldap [no test files] === RUN TestOIDCProviderInitialization === RUN TestOIDCProviderInitialization/valid_config === RUN TestOIDCProviderInitialization/missing_issuer === RUN TestOIDCProviderInitialization/missing_client_id === RUN TestOIDCProviderInitialization/invalid_issuer_url --- PASS: TestOIDCProviderInitialization (0.00s) --- PASS: TestOIDCProviderInitialization/valid_config (0.00s) --- PASS: TestOIDCProviderInitialization/missing_issuer (0.00s) --- PASS: TestOIDCProviderInitialization/missing_client_id (0.00s) --- PASS: TestOIDCProviderInitialization/invalid_issuer_url (0.00s) === RUN TestOIDCProviderJWTValidation === RUN TestOIDCProviderJWTValidation/valid_token === RUN TestOIDCProviderJWTValidation/valid_token_with_array_audience === RUN TestOIDCProviderJWTValidation/expired_token === RUN TestOIDCProviderJWTValidation/invalid_signature --- PASS: TestOIDCProviderJWTValidation (0.12s) --- PASS: TestOIDCProviderJWTValidation/valid_token (0.00s) --- PASS: TestOIDCProviderJWTValidation/valid_token_with_array_audience (0.00s) --- PASS: TestOIDCProviderJWTValidation/expired_token (0.00s) --- PASS: TestOIDCProviderJWTValidation/invalid_signature (0.04s) === RUN TestOIDCProviderJWTValidationECDSA === RUN TestOIDCProviderJWTValidationECDSA/valid_token === RUN TestOIDCProviderJWTValidationECDSA/expired_token === RUN TestOIDCProviderJWTValidationECDSA/invalid_signature === RUN TestOIDCProviderJWTValidationECDSA/invalid_issuer === RUN TestOIDCProviderJWTValidationECDSA/invalid_audience --- PASS: TestOIDCProviderJWTValidationECDSA (0.00s) --- PASS: TestOIDCProviderJWTValidationECDSA/valid_token (0.00s) --- PASS: TestOIDCProviderJWTValidationECDSA/expired_token (0.00s) --- PASS: TestOIDCProviderJWTValidationECDSA/invalid_signature (0.00s) --- PASS: TestOIDCProviderJWTValidationECDSA/invalid_issuer (0.00s) --- PASS: TestOIDCProviderJWTValidationECDSA/invalid_audience (0.00s) === RUN TestOIDCProviderAuthentication === RUN TestOIDCProviderAuthentication/successful_authentication === RUN TestOIDCProviderAuthentication/successful_authentication_with_additional_attributes === RUN TestOIDCProviderAuthentication/authentication_with_invalid_token --- PASS: TestOIDCProviderAuthentication (0.01s) --- PASS: TestOIDCProviderAuthentication/successful_authentication (0.00s) --- PASS: TestOIDCProviderAuthentication/successful_authentication_with_additional_attributes (0.00s) --- PASS: TestOIDCProviderAuthentication/authentication_with_invalid_token (0.00s) === RUN TestOIDCProviderUserInfo === RUN TestOIDCProviderUserInfo/get_user_info_with_access_token === RUN TestOIDCProviderUserInfo/get_admin_user_info === RUN TestOIDCProviderUserInfo/get_user_info_without_token === RUN TestOIDCProviderUserInfo/get_user_info_with_invalid_token === RUN TestOIDCProviderUserInfo/get_user_info_with_custom_claims_mapping === RUN TestOIDCProviderUserInfo/get_user_info_with_empty_id --- PASS: TestOIDCProviderUserInfo (0.00s) --- PASS: TestOIDCProviderUserInfo/get_user_info_with_access_token (0.00s) --- PASS: TestOIDCProviderUserInfo/get_admin_user_info (0.00s) --- PASS: TestOIDCProviderUserInfo/get_user_info_without_token (0.00s) --- PASS: TestOIDCProviderUserInfo/get_user_info_with_invalid_token (0.00s) --- PASS: TestOIDCProviderUserInfo/get_user_info_with_custom_claims_mapping (0.00s) --- PASS: TestOIDCProviderUserInfo/get_user_info_with_empty_id (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/iam/oidc 0.142s === RUN TestAWSIAMMatch === RUN TestAWSIAMMatch/case_insensitive_exact_match === RUN TestAWSIAMMatch/case_insensitive_wildcard_match === RUN TestAWSIAMMatch/AWS_username_variable_expansion === RUN TestAWSIAMMatch/SAML_username_variable_expansion === RUN TestAWSIAMMatch/OIDC_subject_variable_expansion === RUN TestAWSIAMMatch/case_insensitive_with_variable === RUN TestAWSIAMMatch/universal_wildcard === RUN TestAWSIAMMatch/question_mark_wildcard === RUN TestAWSIAMMatch/no_match_different_pattern === RUN TestAWSIAMMatch/variable_not_expanded_due_to_missing_context --- PASS: TestAWSIAMMatch (0.00s) --- PASS: TestAWSIAMMatch/case_insensitive_exact_match (0.00s) --- PASS: TestAWSIAMMatch/case_insensitive_wildcard_match (0.00s) --- PASS: TestAWSIAMMatch/AWS_username_variable_expansion (0.00s) --- PASS: TestAWSIAMMatch/SAML_username_variable_expansion (0.00s) --- PASS: TestAWSIAMMatch/OIDC_subject_variable_expansion (0.00s) --- PASS: TestAWSIAMMatch/case_insensitive_with_variable (0.00s) --- PASS: TestAWSIAMMatch/universal_wildcard (0.00s) --- PASS: TestAWSIAMMatch/question_mark_wildcard (0.00s) --- PASS: TestAWSIAMMatch/no_match_different_pattern (0.00s) --- PASS: TestAWSIAMMatch/variable_not_expanded_due_to_missing_context (0.00s) === RUN TestMatchesActionsMultipartExpansion === RUN TestMatchesActionsMultipartExpansion/PutObject_directly_matches_PutObject === RUN TestMatchesActionsMultipartExpansion/PutObject_implicitly_allows_CreateMultipartUpload === RUN TestMatchesActionsMultipartExpansion/PutObject_implicitly_allows_UploadPart === RUN TestMatchesActionsMultipartExpansion/PutObject_implicitly_allows_CompleteMultipartUpload === RUN TestMatchesActionsMultipartExpansion/PutObject_implicitly_allows_AbortMultipartUpload === RUN TestMatchesActionsMultipartExpansion/PutObject_implicitly_allows_ListMultipartUploadParts === RUN TestMatchesActionsMultipartExpansion/PutObject_implicitly_allows_ListBucketMultipartUploads === RUN TestMatchesActionsMultipartExpansion/PutObject_does_not_allow_GetObject === RUN TestMatchesActionsMultipartExpansion/GetObject_does_not_allow_CreateMultipartUpload === RUN TestMatchesActionsMultipartExpansion/wildcard_s3:Put*_implicitly_allows_multipart_via_PutObject_match === RUN TestMatchesActionsMultipartExpansion/case-insensitive_multipart_action_lookup --- PASS: TestMatchesActionsMultipartExpansion (0.00s) --- PASS: TestMatchesActionsMultipartExpansion/PutObject_directly_matches_PutObject (0.00s) --- PASS: TestMatchesActionsMultipartExpansion/PutObject_implicitly_allows_CreateMultipartUpload (0.00s) --- PASS: TestMatchesActionsMultipartExpansion/PutObject_implicitly_allows_UploadPart (0.00s) --- PASS: TestMatchesActionsMultipartExpansion/PutObject_implicitly_allows_CompleteMultipartUpload (0.00s) --- PASS: TestMatchesActionsMultipartExpansion/PutObject_implicitly_allows_AbortMultipartUpload (0.00s) --- PASS: TestMatchesActionsMultipartExpansion/PutObject_implicitly_allows_ListMultipartUploadParts (0.00s) --- PASS: TestMatchesActionsMultipartExpansion/PutObject_implicitly_allows_ListBucketMultipartUploads (0.00s) --- PASS: TestMatchesActionsMultipartExpansion/PutObject_does_not_allow_GetObject (0.00s) --- PASS: TestMatchesActionsMultipartExpansion/GetObject_does_not_allow_CreateMultipartUpload (0.00s) --- PASS: TestMatchesActionsMultipartExpansion/wildcard_s3:Put*_implicitly_allows_multipart_via_PutObject_match (0.00s) --- PASS: TestMatchesActionsMultipartExpansion/case-insensitive_multipart_action_lookup (0.00s) === RUN TestExpandPolicyVariables === RUN TestExpandPolicyVariables/expand_aws_username === RUN TestExpandPolicyVariables/expand_multiple_variables === RUN TestExpandPolicyVariables/no_variables_to_expand === RUN TestExpandPolicyVariables/nil_context === RUN TestExpandPolicyVariables/missing_variable_in_context --- PASS: TestExpandPolicyVariables (0.00s) --- PASS: TestExpandPolicyVariables/expand_aws_username (0.00s) --- PASS: TestExpandPolicyVariables/expand_multiple_variables (0.00s) --- PASS: TestExpandPolicyVariables/no_variables_to_expand (0.00s) --- PASS: TestExpandPolicyVariables/nil_context (0.00s) --- PASS: TestExpandPolicyVariables/missing_variable_in_context (0.00s) === RUN TestAWSWildcardMatch === RUN TestAWSWildcardMatch/case_insensitive_asterisk === RUN TestAWSWildcardMatch/case_insensitive_question_mark === RUN TestAWSWildcardMatch/mixed_wildcards === RUN TestAWSWildcardMatch/no_match --- PASS: TestAWSWildcardMatch (0.00s) --- PASS: TestAWSWildcardMatch/case_insensitive_asterisk (0.00s) --- PASS: TestAWSWildcardMatch/case_insensitive_question_mark (0.00s) --- PASS: TestAWSWildcardMatch/mixed_wildcards (0.00s) --- PASS: TestAWSWildcardMatch/no_match (0.00s) === RUN TestStringifyClaimValue === RUN TestStringifyClaimValue/string === RUN TestStringifyClaimValue/bool_true === RUN TestStringifyClaimValue/bool_false === RUN TestStringifyClaimValue/float64_integer === RUN TestStringifyClaimValue/float64_fraction === RUN TestStringifyClaimValue/float32 === RUN TestStringifyClaimValue/int === RUN TestStringifyClaimValue/int8 === RUN TestStringifyClaimValue/int16 === RUN TestStringifyClaimValue/int32 === RUN TestStringifyClaimValue/int64 === RUN TestStringifyClaimValue/uint === RUN TestStringifyClaimValue/uint8 === RUN TestStringifyClaimValue/uint16 === RUN TestStringifyClaimValue/uint32 === RUN TestStringifyClaimValue/uint64 === RUN TestStringifyClaimValue/json.Number_int === RUN TestStringifyClaimValue/json.Number_float === RUN TestStringifyClaimValue/nil === RUN TestStringifyClaimValue/slice_unsupported === RUN TestStringifyClaimValue/map_unsupported --- PASS: TestStringifyClaimValue (0.00s) --- PASS: TestStringifyClaimValue/string (0.00s) --- PASS: TestStringifyClaimValue/bool_true (0.00s) --- PASS: TestStringifyClaimValue/bool_false (0.00s) --- PASS: TestStringifyClaimValue/float64_integer (0.00s) --- PASS: TestStringifyClaimValue/float64_fraction (0.00s) --- PASS: TestStringifyClaimValue/float32 (0.00s) --- PASS: TestStringifyClaimValue/int (0.00s) --- PASS: TestStringifyClaimValue/int8 (0.00s) --- PASS: TestStringifyClaimValue/int16 (0.00s) --- PASS: TestStringifyClaimValue/int32 (0.00s) --- PASS: TestStringifyClaimValue/int64 (0.00s) --- PASS: TestStringifyClaimValue/uint (0.00s) --- PASS: TestStringifyClaimValue/uint8 (0.00s) --- PASS: TestStringifyClaimValue/uint16 (0.00s) --- PASS: TestStringifyClaimValue/uint32 (0.00s) --- PASS: TestStringifyClaimValue/uint64 (0.00s) --- PASS: TestStringifyClaimValue/json.Number_int (0.00s) --- PASS: TestStringifyClaimValue/json.Number_float (0.00s) --- PASS: TestStringifyClaimValue/nil (0.00s) --- PASS: TestStringifyClaimValue/slice_unsupported (0.00s) --- PASS: TestStringifyClaimValue/map_unsupported (0.00s) === RUN TestExpandPolicyVariablesDynamicJWTClaims === RUN TestExpandPolicyVariablesDynamicJWTClaims/dynamic_jwt_claim_substituted_in_resource_arn === RUN TestExpandPolicyVariablesDynamicJWTClaims/multiple_dynamic_jwt_claims_in_one_pattern === RUN TestExpandPolicyVariablesDynamicJWTClaims/dynamic_numeric_jwt_claim_is_stringified === RUN TestExpandPolicyVariablesDynamicJWTClaims/dynamic_saml_claim_substituted === RUN TestExpandPolicyVariablesDynamicJWTClaims/dynamic_oidc_claim_substituted === RUN TestExpandPolicyVariablesDynamicJWTClaims/missing_jwt_claim_leaves_placeholder_intact === RUN TestExpandPolicyVariablesDynamicJWTClaims/non-identity_prefix_is_not_substituted --- PASS: TestExpandPolicyVariablesDynamicJWTClaims (0.00s) --- PASS: TestExpandPolicyVariablesDynamicJWTClaims/dynamic_jwt_claim_substituted_in_resource_arn (0.00s) --- PASS: TestExpandPolicyVariablesDynamicJWTClaims/multiple_dynamic_jwt_claims_in_one_pattern (0.00s) --- PASS: TestExpandPolicyVariablesDynamicJWTClaims/dynamic_numeric_jwt_claim_is_stringified (0.00s) --- PASS: TestExpandPolicyVariablesDynamicJWTClaims/dynamic_saml_claim_substituted (0.00s) --- PASS: TestExpandPolicyVariablesDynamicJWTClaims/dynamic_oidc_claim_substituted (0.00s) --- PASS: TestExpandPolicyVariablesDynamicJWTClaims/missing_jwt_claim_leaves_placeholder_intact (0.00s) --- PASS: TestExpandPolicyVariablesDynamicJWTClaims/non-identity_prefix_is_not_substituted (0.00s) === RUN TestGitLabProjectUploadPolicy === RUN TestGitLabProjectUploadPolicy/user_writes_into_own_project_folder_-_allowed === RUN TestGitLabProjectUploadPolicy/user_tries_to_write_into_another_project_-_falls_through_to_default_Deny === RUN TestGitLabProjectUploadPolicy/different_user_writes_into_their_own_project_-_allowed === RUN TestGitLabProjectUploadPolicy/user_tries_to_GetObject_-_only_PutObject_allowed,_default_Deny === RUN TestGitLabProjectUploadPolicy/missing_project_path_claim_-_placeholder_prevents_match,_default_Deny --- PASS: TestGitLabProjectUploadPolicy (0.00s) --- PASS: TestGitLabProjectUploadPolicy/user_writes_into_own_project_folder_-_allowed (0.00s) --- PASS: TestGitLabProjectUploadPolicy/user_tries_to_write_into_another_project_-_falls_through_to_default_Deny (0.00s) --- PASS: TestGitLabProjectUploadPolicy/different_user_writes_into_their_own_project_-_allowed (0.00s) --- PASS: TestGitLabProjectUploadPolicy/user_tries_to_GetObject_-_only_PutObject_allowed,_default_Deny (0.00s) --- PASS: TestGitLabProjectUploadPolicy/missing_project_path_claim_-_placeholder_prevents_match,_default_Deny (0.00s) === RUN TestDistributedPolicyEngine === RUN TestDistributedPolicyEngine/policy_storage_consistency === RUN TestDistributedPolicyEngine/evaluation_consistency === RUN TestDistributedPolicyEngine/deny_precedence_consistency === RUN TestDistributedPolicyEngine/default_effect_consistency --- PASS: TestDistributedPolicyEngine (0.00s) --- PASS: TestDistributedPolicyEngine/policy_storage_consistency (0.00s) --- PASS: TestDistributedPolicyEngine/evaluation_consistency (0.00s) --- PASS: TestDistributedPolicyEngine/deny_precedence_consistency (0.00s) --- PASS: TestDistributedPolicyEngine/default_effect_consistency (0.00s) === RUN TestPolicyEngineConfigurationConsistency === RUN TestPolicyEngineConfigurationConsistency/consistent_default_effects_required === RUN TestPolicyEngineConfigurationConsistency/invalid_configuration_handling === RUN TestPolicyEngineConfigurationConsistency/invalid_configuration_handling/invalid_config_0 === RUN TestPolicyEngineConfigurationConsistency/invalid_configuration_handling/invalid_config_1 --- PASS: TestPolicyEngineConfigurationConsistency (0.00s) --- PASS: TestPolicyEngineConfigurationConsistency/consistent_default_effects_required (0.00s) --- PASS: TestPolicyEngineConfigurationConsistency/invalid_configuration_handling (0.00s) --- PASS: TestPolicyEngineConfigurationConsistency/invalid_configuration_handling/invalid_config_0 (0.00s) --- PASS: TestPolicyEngineConfigurationConsistency/invalid_configuration_handling/invalid_config_1 (0.00s) === RUN TestPolicyStoreDistributed === RUN TestPolicyStoreDistributed/memory_store_isolation === RUN TestPolicyStoreDistributed/policy_loading_error_handling --- PASS: TestPolicyStoreDistributed (0.00s) --- PASS: TestPolicyStoreDistributed/memory_store_isolation (0.00s) --- PASS: TestPolicyStoreDistributed/policy_loading_error_handling (0.00s) === RUN TestFilerPolicyStoreConfiguration === RUN TestFilerPolicyStoreConfiguration/filer_store_creation === RUN TestFilerPolicyStoreConfiguration/filer_store_custom_path === RUN TestFilerPolicyStoreConfiguration/filer_store_missing_address --- PASS: TestFilerPolicyStoreConfiguration (0.00s) --- PASS: TestFilerPolicyStoreConfiguration/filer_store_creation (0.00s) --- PASS: TestFilerPolicyStoreConfiguration/filer_store_custom_path (0.00s) --- PASS: TestFilerPolicyStoreConfiguration/filer_store_missing_address (0.00s) === RUN TestPolicyEvaluationPerformance policy_engine_distributed_test.go:384: Average policy evaluation time: 8.491µs --- PASS: TestPolicyEvaluationPerformance (0.00s) === RUN TestFilerPolicyStoreGetPolicyPrefersCanonicalFiles --- PASS: TestFilerPolicyStoreGetPolicyPrefersCanonicalFiles (0.01s) === RUN TestFilerPolicyStoreListPoliciesIncludesCanonicalAndLegacyFiles --- PASS: TestFilerPolicyStoreListPoliciesIncludesCanonicalAndLegacyFiles (0.00s) === RUN TestFilerPolicyStoreDeletePolicyRemovesCanonicalAndLegacyFiles --- PASS: TestFilerPolicyStoreDeletePolicyRemovesCanonicalAndLegacyFiles (0.00s) === RUN TestFilerPolicyStoreStorePolicyWritesCanonicalFileAndRemovesLegacyTwin --- PASS: TestFilerPolicyStoreStorePolicyWritesCanonicalFileAndRemovesLegacyTwin (0.00s) === RUN TestFilerPolicyStoreStorePolicyUpdatesExistingCanonicalFile --- PASS: TestFilerPolicyStoreStorePolicyUpdatesExistingCanonicalFile (0.00s) === RUN TestCopyPolicyDocumentClonesConditionState --- PASS: TestCopyPolicyDocumentClonesConditionState (0.00s) === RUN TestIsAlreadyExistsPolicyStoreErrorUsesStatusCode --- PASS: TestIsAlreadyExistsPolicyStoreErrorUsesStatusCode (0.00s) === RUN TestPolicyVariableMatchingInActionsAndResources === RUN TestPolicyVariableMatchingInActionsAndResources/policy_variable_in_action_matches === RUN TestPolicyVariableMatchingInActionsAndResources/policy_variable_in_resource_matches === RUN TestPolicyVariableMatchingInActionsAndResources/saml_username_variable_in_resource === RUN TestPolicyVariableMatchingInActionsAndResources/policy_variable_no_match_wrong_user === RUN TestPolicyVariableMatchingInActionsAndResources/missing_policy_variable_context --- PASS: TestPolicyVariableMatchingInActionsAndResources (0.00s) --- PASS: TestPolicyVariableMatchingInActionsAndResources/policy_variable_in_action_matches (0.00s) --- PASS: TestPolicyVariableMatchingInActionsAndResources/policy_variable_in_resource_matches (0.00s) --- PASS: TestPolicyVariableMatchingInActionsAndResources/saml_username_variable_in_resource (0.00s) --- PASS: TestPolicyVariableMatchingInActionsAndResources/policy_variable_no_match_wrong_user (0.00s) --- PASS: TestPolicyVariableMatchingInActionsAndResources/missing_policy_variable_context (0.00s) === RUN TestActionResourceConsistencyWithStringConditions --- PASS: TestActionResourceConsistencyWithStringConditions (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/iam/policy 0.055s ? github.com/seaweedfs/seaweedfs/weed/iam/providers [no test files] === RUN TestTemporaryCredentialPrefix --- PASS: TestTemporaryCredentialPrefix (0.00s) === RUN TestTemporaryCredentialFormat --- PASS: TestTemporaryCredentialFormat (0.00s) === RUN TestSTSSessionClaimsToSessionInfo --- PASS: TestSTSSessionClaimsToSessionInfo (0.00s) === RUN TestSTSSessionClaimsToSessionInfoCredentialGeneration --- PASS: TestSTSSessionClaimsToSessionInfoCredentialGeneration (0.00s) === RUN TestSTSSessionClaimsToSessionInfoPreservesAllFields --- PASS: TestSTSSessionClaimsToSessionInfoPreservesAllFields (0.00s) === RUN TestSTSSessionClaimsToSessionInfoEmptyFields --- PASS: TestSTSSessionClaimsToSessionInfoEmptyFields (0.00s) === RUN TestSTSSessionClaimsToSessionInfoCredentialExpiration === RUN TestSTSSessionClaimsToSessionInfoCredentialExpiration/future_expiration === RUN TestSTSSessionClaimsToSessionInfoCredentialExpiration/past_expiration === RUN TestSTSSessionClaimsToSessionInfoCredentialExpiration/near_future_expiration --- PASS: TestSTSSessionClaimsToSessionInfoCredentialExpiration (0.00s) --- PASS: TestSTSSessionClaimsToSessionInfoCredentialExpiration/future_expiration (0.00s) --- PASS: TestSTSSessionClaimsToSessionInfoCredentialExpiration/past_expiration (0.00s) --- PASS: TestSTSSessionClaimsToSessionInfoCredentialExpiration/near_future_expiration (0.00s) === RUN TestSessionInfoIntegration --- PASS: TestSessionInfoIntegration (0.00s) === RUN TestSecretAccessKeyDeterminism --- PASS: TestSecretAccessKeyDeterminism (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/iam/sts 0.025s ? github.com/seaweedfs/seaweedfs/weed/iam/util [no test files] === RUN TestExtractRoleNameFromArn === RUN TestExtractRoleNameFromArn/legacy_format_simple_role_name === RUN TestExtractRoleNameFromArn/legacy_format_custom_role_name === RUN TestExtractRoleNameFromArn/legacy_format_with_path === RUN TestExtractRoleNameFromArn/legacy_format_with_nested_path === RUN TestExtractRoleNameFromArn/standard_format_simple_role_name === RUN TestExtractRoleNameFromArn/standard_format_custom_role_name === RUN TestExtractRoleNameFromArn/standard_format_with_path === RUN TestExtractRoleNameFromArn/standard_format_with_nested_path === RUN TestExtractRoleNameFromArn/invalid_arn_missing_prefix === RUN TestExtractRoleNameFromArn/invalid_arn_incomplete === RUN TestExtractRoleNameFromArn/invalid_arn_no_role_marker === RUN TestExtractRoleNameFromArn/invalid_arn_wrong_service === RUN TestExtractRoleNameFromArn/empty_string === RUN TestExtractRoleNameFromArn/role_marker_no_name === RUN TestExtractRoleNameFromArn/standard_format_role_marker_no_name --- PASS: TestExtractRoleNameFromArn (0.00s) --- PASS: TestExtractRoleNameFromArn/legacy_format_simple_role_name (0.00s) --- PASS: TestExtractRoleNameFromArn/legacy_format_custom_role_name (0.00s) --- PASS: TestExtractRoleNameFromArn/legacy_format_with_path (0.00s) --- PASS: TestExtractRoleNameFromArn/legacy_format_with_nested_path (0.00s) --- PASS: TestExtractRoleNameFromArn/standard_format_simple_role_name (0.00s) --- PASS: TestExtractRoleNameFromArn/standard_format_custom_role_name (0.00s) --- PASS: TestExtractRoleNameFromArn/standard_format_with_path (0.00s) --- PASS: TestExtractRoleNameFromArn/standard_format_with_nested_path (0.00s) --- PASS: TestExtractRoleNameFromArn/invalid_arn_missing_prefix (0.00s) --- PASS: TestExtractRoleNameFromArn/invalid_arn_incomplete (0.00s) --- PASS: TestExtractRoleNameFromArn/invalid_arn_no_role_marker (0.00s) --- PASS: TestExtractRoleNameFromArn/invalid_arn_wrong_service (0.00s) --- PASS: TestExtractRoleNameFromArn/empty_string (0.00s) --- PASS: TestExtractRoleNameFromArn/role_marker_no_name (0.00s) --- PASS: TestExtractRoleNameFromArn/standard_format_role_marker_no_name (0.00s) === RUN TestExtractRoleNameFromPrincipal === RUN TestExtractRoleNameFromPrincipal/sts_assumed_role_legacy === RUN TestExtractRoleNameFromPrincipal/sts_assumed_role_legacy_no_session === RUN TestExtractRoleNameFromPrincipal/sts_assumed_role_standard === RUN TestExtractRoleNameFromPrincipal/sts_assumed_role_standard_no_session === RUN TestExtractRoleNameFromPrincipal/iam_role_legacy === RUN TestExtractRoleNameFromPrincipal/iam_role_legacy_with_path === RUN TestExtractRoleNameFromPrincipal/iam_role_standard === RUN TestExtractRoleNameFromPrincipal/iam_role_standard_with_path === RUN TestExtractRoleNameFromPrincipal/invalid_principal === RUN TestExtractRoleNameFromPrincipal/empty_string --- PASS: TestExtractRoleNameFromPrincipal (0.00s) --- PASS: TestExtractRoleNameFromPrincipal/sts_assumed_role_legacy (0.00s) --- PASS: TestExtractRoleNameFromPrincipal/sts_assumed_role_legacy_no_session (0.00s) --- PASS: TestExtractRoleNameFromPrincipal/sts_assumed_role_standard (0.00s) --- PASS: TestExtractRoleNameFromPrincipal/sts_assumed_role_standard_no_session (0.00s) --- PASS: TestExtractRoleNameFromPrincipal/iam_role_legacy (0.00s) --- PASS: TestExtractRoleNameFromPrincipal/iam_role_legacy_with_path (0.00s) --- PASS: TestExtractRoleNameFromPrincipal/iam_role_standard (0.00s) --- PASS: TestExtractRoleNameFromPrincipal/iam_role_standard_with_path (0.00s) --- PASS: TestExtractRoleNameFromPrincipal/invalid_principal (0.00s) --- PASS: TestExtractRoleNameFromPrincipal/empty_string (0.00s) === RUN TestParseRoleARN === RUN TestParseRoleARN/legacy_format_simple_role === RUN TestParseRoleARN/legacy_format_with_path === RUN TestParseRoleARN/standard_format_simple_role === RUN TestParseRoleARN/standard_format_with_path === RUN TestParseRoleARN/invalid_arn_missing_prefix === RUN TestParseRoleARN/invalid_arn_no_role_marker === RUN TestParseRoleARN/invalid_arn_empty_role_name === RUN TestParseRoleARN/invalid_arn_empty_role_name_standard_format --- PASS: TestParseRoleARN (0.00s) --- PASS: TestParseRoleARN/legacy_format_simple_role (0.00s) --- PASS: TestParseRoleARN/legacy_format_with_path (0.00s) --- PASS: TestParseRoleARN/standard_format_simple_role (0.00s) --- PASS: TestParseRoleARN/standard_format_with_path (0.00s) --- PASS: TestParseRoleARN/invalid_arn_missing_prefix (0.00s) --- PASS: TestParseRoleARN/invalid_arn_no_role_marker (0.00s) --- PASS: TestParseRoleARN/invalid_arn_empty_role_name (0.00s) --- PASS: TestParseRoleARN/invalid_arn_empty_role_name_standard_format (0.00s) === RUN TestParsePrincipalARN === RUN TestParsePrincipalARN/sts_assumed_role_legacy === RUN TestParsePrincipalARN/sts_assumed_role_standard === RUN TestParsePrincipalARN/sts_assumed_role_no_session === RUN TestParsePrincipalARN/iam_role_legacy === RUN TestParsePrincipalARN/iam_role_standard === RUN TestParsePrincipalARN/iam_role_with_path === RUN TestParsePrincipalARN/invalid_principal === RUN TestParsePrincipalARN/invalid_sts_empty_role_name === RUN TestParsePrincipalARN/invalid_sts_empty_role_name_standard_format --- PASS: TestParsePrincipalARN (0.00s) --- PASS: TestParsePrincipalARN/sts_assumed_role_legacy (0.00s) --- PASS: TestParsePrincipalARN/sts_assumed_role_standard (0.00s) --- PASS: TestParsePrincipalARN/sts_assumed_role_no_session (0.00s) --- PASS: TestParsePrincipalARN/iam_role_legacy (0.00s) --- PASS: TestParsePrincipalARN/iam_role_standard (0.00s) --- PASS: TestParsePrincipalARN/iam_role_with_path (0.00s) --- PASS: TestParsePrincipalARN/invalid_principal (0.00s) --- PASS: TestParsePrincipalARN/invalid_sts_empty_role_name (0.00s) --- PASS: TestParsePrincipalARN/invalid_sts_empty_role_name_standard_format (0.00s) === RUN TestSecurityMaliciousUserARNs === RUN TestSecurityMaliciousUserARNs/user_ARN_with_role/_in_path === RUN TestSecurityMaliciousUserARNs/policy_ARN_with_role/_in_name === RUN TestSecurityMaliciousUserARNs/group_ARN_with_role/_in_name === RUN TestSecurityMaliciousUserARNs/legacy_user_ARN_with_role/_in_path --- PASS: TestSecurityMaliciousUserARNs (0.00s) --- PASS: TestSecurityMaliciousUserARNs/user_ARN_with_role/_in_path (0.00s) --- PASS: TestSecurityMaliciousUserARNs/policy_ARN_with_role/_in_name (0.00s) --- PASS: TestSecurityMaliciousUserARNs/group_ARN_with_role/_in_name (0.00s) --- PASS: TestSecurityMaliciousUserARNs/legacy_user_ARN_with_role/_in_path (0.00s) === RUN TestSecurityMaliciousSTSUserARNs === RUN TestSecurityMaliciousSTSUserARNs/STS_user_with_assumed-role_in_path === RUN TestSecurityMaliciousSTSUserARNs/legacy_STS_user_with_assumed-role_in_path --- PASS: TestSecurityMaliciousSTSUserARNs (0.00s) --- PASS: TestSecurityMaliciousSTSUserARNs/STS_user_with_assumed-role_in_path (0.00s) --- PASS: TestSecurityMaliciousSTSUserARNs/legacy_STS_user_with_assumed-role_in_path (0.00s) === RUN TestEdgeCaseMultipleRoleMarkers === RUN TestEdgeCaseMultipleRoleMarkers/legacy_format_role_in_path === RUN TestEdgeCaseMultipleRoleMarkers/standard_format_role_in_path === RUN TestEdgeCaseMultipleRoleMarkers/multiple_role_markers_in_path === RUN TestEdgeCaseMultipleRoleMarkers/sts_assumed_role_with_role_in_path --- PASS: TestEdgeCaseMultipleRoleMarkers (0.00s) --- PASS: TestEdgeCaseMultipleRoleMarkers/legacy_format_role_in_path (0.00s) --- PASS: TestEdgeCaseMultipleRoleMarkers/standard_format_role_in_path (0.00s) --- PASS: TestEdgeCaseMultipleRoleMarkers/multiple_role_markers_in_path (0.00s) --- PASS: TestEdgeCaseMultipleRoleMarkers/sts_assumed_role_with_role_in_path (0.00s) === RUN TestEdgeCaseConsecutiveSlashes === RUN TestEdgeCaseConsecutiveSlashes/consecutive_slashes_immediately_after_role === RUN TestEdgeCaseConsecutiveSlashes/consecutive_slashes_in_path === RUN TestEdgeCaseConsecutiveSlashes/multiple_consecutive_slashes --- PASS: TestEdgeCaseConsecutiveSlashes (0.00s) --- PASS: TestEdgeCaseConsecutiveSlashes/consecutive_slashes_immediately_after_role (0.00s) --- PASS: TestEdgeCaseConsecutiveSlashes/consecutive_slashes_in_path (0.00s) --- PASS: TestEdgeCaseConsecutiveSlashes/multiple_consecutive_slashes (0.00s) === RUN TestEdgeCaseSpecialCharactersInRoleName === RUN TestEdgeCaseSpecialCharactersInRoleName/role_name_with_hyphens === RUN TestEdgeCaseSpecialCharactersInRoleName/role_name_with_underscores === RUN TestEdgeCaseSpecialCharactersInRoleName/role_name_with_dots === RUN TestEdgeCaseSpecialCharactersInRoleName/role_name_with_at_sign === RUN TestEdgeCaseSpecialCharactersInRoleName/role_name_with_plus_and_equals === RUN TestEdgeCaseSpecialCharactersInRoleName/role_name_with_commas === RUN TestEdgeCaseSpecialCharactersInRoleName/role_name_with_mixed_special_chars === RUN TestEdgeCaseSpecialCharactersInRoleName/path_with_special_characters --- PASS: TestEdgeCaseSpecialCharactersInRoleName (0.00s) --- PASS: TestEdgeCaseSpecialCharactersInRoleName/role_name_with_hyphens (0.00s) --- PASS: TestEdgeCaseSpecialCharactersInRoleName/role_name_with_underscores (0.00s) --- PASS: TestEdgeCaseSpecialCharactersInRoleName/role_name_with_dots (0.00s) --- PASS: TestEdgeCaseSpecialCharactersInRoleName/role_name_with_at_sign (0.00s) --- PASS: TestEdgeCaseSpecialCharactersInRoleName/role_name_with_plus_and_equals (0.00s) --- PASS: TestEdgeCaseSpecialCharactersInRoleName/role_name_with_commas (0.00s) --- PASS: TestEdgeCaseSpecialCharactersInRoleName/role_name_with_mixed_special_chars (0.00s) --- PASS: TestEdgeCaseSpecialCharactersInRoleName/path_with_special_characters (0.00s) === RUN TestEdgeCaseExtremelyLongRoleName === RUN TestEdgeCaseExtremelyLongRoleName/role_name_at_max_length === RUN TestEdgeCaseExtremelyLongRoleName/role_with_long_path_components --- PASS: TestEdgeCaseExtremelyLongRoleName (0.00s) --- PASS: TestEdgeCaseExtremelyLongRoleName/role_name_at_max_length (0.00s) --- PASS: TestEdgeCaseExtremelyLongRoleName/role_with_long_path_components (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/iam/utils 0.013s === RUN TestGetActionsUserPath --- PASS: TestGetActionsUserPath (0.00s) === RUN TestGetActionsWildcardPath --- PASS: TestGetActionsWildcardPath (0.00s) === RUN TestGetActionsInvalidAction --- PASS: TestGetActionsInvalidAction (0.00s) === RUN TestPutGetUserPolicyPreservesStatements --- PASS: TestPutGetUserPolicyPreservesStatements (0.00s) === RUN TestPutGetUserPolicyIssue9008 --- PASS: TestPutGetUserPolicyIssue9008 (0.00s) === RUN TestMultipleInlinePoliciesAggregateActions --- PASS: TestMultipleInlinePoliciesAggregateActions (0.00s) === RUN TestGetPolicy --- PASS: TestGetPolicy (0.00s) === RUN TestDeletePolicy --- PASS: TestDeletePolicy (0.00s) === RUN TestListPolicies --- PASS: TestListPolicies (0.00s) === RUN TestAttachUserPolicy --- PASS: TestAttachUserPolicy (0.00s) === RUN TestManagedPolicyActionsPreservedAcrossInlineMutations --- PASS: TestManagedPolicyActionsPreservedAcrossInlineMutations (0.00s) === RUN TestDetachUserPolicy --- PASS: TestDetachUserPolicy (0.00s) === RUN TestListAttachedUserPolicies --- PASS: TestListAttachedUserPolicies (0.00s) === RUN TestCreateAccessKeyWithCallerSuppliedKeys --- PASS: TestCreateAccessKeyWithCallerSuppliedKeys (0.00s) === RUN TestCreateAccessKeyRandomGeneration --- PASS: TestCreateAccessKeyRandomGeneration (0.00s) === RUN TestCreateAccessKeyRejectsWeakKeys --- PASS: TestCreateAccessKeyRejectsWeakKeys (0.00s) === RUN TestCreateAccessKeyRejectsCollision === RUN TestCreateAccessKeyRejectsCollision/identity_credential === RUN TestCreateAccessKeyRejectsCollision/service_account_credential --- PASS: TestCreateAccessKeyRejectsCollision (0.00s) --- PASS: TestCreateAccessKeyRejectsCollision/identity_credential (0.00s) --- PASS: TestCreateAccessKeyRejectsCollision/service_account_credential (0.00s) === RUN TestCreateAccessKeyBoundary --- PASS: TestCreateAccessKeyBoundary (0.00s) === RUN TestCreateAccessKeyRejectsPartialSupply --- PASS: TestCreateAccessKeyRejectsPartialSupply (0.00s) === RUN TestCreateUser --- PASS: TestCreateUser (0.00s) === RUN TestListUsers --- PASS: TestListUsers (0.00s) === RUN TestListUsersRequestIdMatchesResponseHeader --- PASS: TestListUsersRequestIdMatchesResponseHeader (0.00s) === RUN TestListAccessKeys --- PASS: TestListAccessKeys (0.00s) === RUN TestUpdateAccessKey --- PASS: TestUpdateAccessKey (0.00s) === RUN TestGetUser --- PASS: TestGetUser (0.00s) === RUN TestCreatePolicy --- PASS: TestCreatePolicy (0.00s) === RUN TestPutUserPolicy --- PASS: TestPutUserPolicy (0.00s) === RUN TestPutUserPolicyError E0505 12:12:52.217053 iamapi_management_handlers.go:1197 PutUserPolicy: the user with name InvalidUser cannot be found E0505 12:12:52.217546 iamapi_handlers.go:30 Response the user with name InvalidUser cannot be found --- PASS: TestPutUserPolicyError (0.00s) === RUN TestGetUserPolicy --- PASS: TestGetUserPolicy (0.00s) === RUN TestUpdateUser --- PASS: TestUpdateUser (0.00s) === RUN TestDeleteUser --- PASS: TestDeleteUser (0.00s) === RUN TestHandleImplicitUsername --- PASS: TestHandleImplicitUsername (0.00s) === RUN TestCreateUserDoesNotSaveAllUsers --- PASS: TestCreateUserDoesNotSaveAllUsers (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/iamapi 0.043s === RUN TestCropping --- PASS: TestCropping (0.10s) === RUN TestXYZ --- PASS: TestXYZ (0.34s) === RUN TestResizing --- PASS: TestResizing (0.03s) PASS ok github.com/seaweedfs/seaweedfs/weed/images 0.485s === RUN TestCiphertextEnvelope_CreateAndParse --- PASS: TestCiphertextEnvelope_CreateAndParse (0.00s) === RUN TestCiphertextEnvelope_InvalidFormat --- PASS: TestCiphertextEnvelope_InvalidFormat (0.00s) === RUN TestCiphertextEnvelope_ValidationErrors === RUN TestCiphertextEnvelope_ValidationErrors/Valid === RUN TestCiphertextEnvelope_ValidationErrors/Empty_provider === RUN TestCiphertextEnvelope_ValidationErrors/Empty_keyID === RUN TestCiphertextEnvelope_ValidationErrors/Empty_ciphertext --- PASS: TestCiphertextEnvelope_ValidationErrors (0.00s) --- PASS: TestCiphertextEnvelope_ValidationErrors/Valid (0.00s) --- PASS: TestCiphertextEnvelope_ValidationErrors/Empty_provider (0.00s) --- PASS: TestCiphertextEnvelope_ValidationErrors/Empty_keyID (0.00s) --- PASS: TestCiphertextEnvelope_ValidationErrors/Empty_ciphertext (0.00s) === RUN TestCiphertextEnvelope_MultipleProviders === RUN TestCiphertextEnvelope_MultipleProviders/openbao === RUN TestCiphertextEnvelope_MultipleProviders/gcp === RUN TestCiphertextEnvelope_MultipleProviders/azure === RUN TestCiphertextEnvelope_MultipleProviders/aws --- PASS: TestCiphertextEnvelope_MultipleProviders (0.00s) --- PASS: TestCiphertextEnvelope_MultipleProviders/openbao (0.00s) --- PASS: TestCiphertextEnvelope_MultipleProviders/gcp (0.00s) --- PASS: TestCiphertextEnvelope_MultipleProviders/azure (0.00s) --- PASS: TestCiphertextEnvelope_MultipleProviders/aws (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/kms 0.025s ? github.com/seaweedfs/seaweedfs/weed/kms/aws [no test files] ? github.com/seaweedfs/seaweedfs/weed/kms/gcp [no test files] ? github.com/seaweedfs/seaweedfs/weed/kms/local [no test files] ? github.com/seaweedfs/seaweedfs/weed/kms/openbao [no test files] === RUN TestGrpcErrorToFuseStatusUnwrapsCanceledThroughFmtErrorf --- PASS: TestGrpcErrorToFuseStatusUnwrapsCanceledThroughFmtErrorf (0.00s) === RUN TestGrpcErrorToFuseStatusDropsCanceledThroughPercentV --- PASS: TestGrpcErrorToFuseStatusDropsCanceledThroughPercentV (0.00s) === RUN TestIsRetryableFilerError === RUN TestIsRetryableFilerError/nil === RUN TestIsRetryableFilerError/canceled === RUN TestIsRetryableFilerError/unavailable === RUN TestIsRetryableFilerError/deadline_exceeded === RUN TestIsRetryableFilerError/resource_exhausted === RUN TestIsRetryableFilerError/internal === RUN TestIsRetryableFilerError/not_found === RUN TestIsRetryableFilerError/already_exists === RUN TestIsRetryableFilerError/invalid_argument === RUN TestIsRetryableFilerError/permission_denied === RUN TestIsRetryableFilerError/unauthenticated === RUN TestIsRetryableFilerError/failed_precondition === RUN TestIsRetryableFilerError/plain_error_retries === RUN TestIsRetryableFilerError/wrapped_canceled_still_retries === RUN TestIsRetryableFilerError/wrapped_not_found_still_skipped --- PASS: TestIsRetryableFilerError (0.00s) --- PASS: TestIsRetryableFilerError/nil (0.00s) --- PASS: TestIsRetryableFilerError/canceled (0.00s) --- PASS: TestIsRetryableFilerError/unavailable (0.00s) --- PASS: TestIsRetryableFilerError/deadline_exceeded (0.00s) --- PASS: TestIsRetryableFilerError/resource_exhausted (0.00s) --- PASS: TestIsRetryableFilerError/internal (0.00s) --- PASS: TestIsRetryableFilerError/not_found (0.00s) --- PASS: TestIsRetryableFilerError/already_exists (0.00s) --- PASS: TestIsRetryableFilerError/invalid_argument (0.00s) --- PASS: TestIsRetryableFilerError/permission_denied (0.00s) --- PASS: TestIsRetryableFilerError/unauthenticated (0.00s) --- PASS: TestIsRetryableFilerError/failed_precondition (0.00s) --- PASS: TestIsRetryableFilerError/plain_error_retries (0.00s) --- PASS: TestIsRetryableFilerError/wrapped_canceled_still_retries (0.00s) --- PASS: TestIsRetryableFilerError/wrapped_not_found_still_skipped (0.00s) === RUN TestRetryMetadataFlushIfShortCircuitsOnPermanentError --- PASS: TestRetryMetadataFlushIfShortCircuitsOnPermanentError (0.00s) === RUN TestRetryMetadataFlushIfRetriesTransientErrors --- PASS: TestRetryMetadataFlushIfRetriesTransientErrors (0.00s) === RUN TestFileHandleFullPathFallsBackAfterForget --- PASS: TestFileHandleFullPathFallsBackAfterForget (0.00s) === RUN TestFileHandleFullPathUsesSavedRenamePathAfterForget --- PASS: TestFileHandleFullPathUsesSavedRenamePathAfterForget (0.00s) === RUN TestIsFilerConfUpdateEventMatchesRenameTarget --- PASS: TestIsFilerConfUpdateEventMatchesRenameTarget (0.00s) === RUN TestInodeEntry_removeOnePath === RUN TestInodeEntry_removeOnePath/actual_case === RUN TestInodeEntry_removeOnePath/empty === RUN TestInodeEntry_removeOnePath/single === RUN TestInodeEntry_removeOnePath/first === RUN TestInodeEntry_removeOnePath/middle === RUN TestInodeEntry_removeOnePath/last === RUN TestInodeEntry_removeOnePath/not_found --- PASS: TestInodeEntry_removeOnePath (0.00s) --- PASS: TestInodeEntry_removeOnePath/actual_case (0.00s) --- PASS: TestInodeEntry_removeOnePath/empty (0.00s) --- PASS: TestInodeEntry_removeOnePath/single (0.00s) --- PASS: TestInodeEntry_removeOnePath/first (0.00s) --- PASS: TestInodeEntry_removeOnePath/middle (0.00s) --- PASS: TestInodeEntry_removeOnePath/last (0.00s) --- PASS: TestInodeEntry_removeOnePath/not_found (0.00s) === RUN TestRecordDirectoryUpdateSwitchesDirectoryToReadThrough --- PASS: TestRecordDirectoryUpdateSwitchesDirectoryToReadThrough (0.00s) === RUN TestMarkChildrenCachedClearsReadThroughMode --- PASS: TestMarkChildrenCachedClearsReadThroughMode (0.00s) === RUN TestRetryMetadataFlushEventuallySucceeds --- PASS: TestRetryMetadataFlushEventuallySucceeds (0.00s) === RUN TestRetryMetadataFlushReturnsLastError --- PASS: TestRetryMetadataFlushReturnsLastError (0.00s) === RUN TestResolvePeerAdvertiseAddr === RUN TestResolvePeerAdvertiseAddr/explicit_advertise_wins === RUN TestResolvePeerAdvertiseAddr/bind_host_used_verbatim === RUN TestResolvePeerAdvertiseAddr/wildcard_ipv4_bind === RUN TestResolvePeerAdvertiseAddr/empty_host_bind === RUN TestResolvePeerAdvertiseAddr/ipv6_wildcard === RUN TestResolvePeerAdvertiseAddr/unparseable_listen_errors --- PASS: TestResolvePeerAdvertiseAddr (0.00s) --- PASS: TestResolvePeerAdvertiseAddr/explicit_advertise_wins (0.00s) --- PASS: TestResolvePeerAdvertiseAddr/bind_host_used_verbatim (0.00s) --- PASS: TestResolvePeerAdvertiseAddr/wildcard_ipv4_bind (0.00s) --- PASS: TestResolvePeerAdvertiseAddr/empty_host_bind (0.00s) --- PASS: TestResolvePeerAdvertiseAddr/ipv6_wildcard (0.00s) --- PASS: TestResolvePeerAdvertiseAddr/unparseable_listen_errors (0.00s) === RUN TestIsWildcardHost --- PASS: TestIsWildcardHost (0.00s) === RUN TestPeerAnnouncer_FlushGroupsByOwner --- PASS: TestPeerAnnouncer_FlushGroupsByOwner (0.00s) === RUN TestPeerAnnouncer_SkipOwnerEqualsSelf --- PASS: TestPeerAnnouncer_SkipOwnerEqualsSelf (0.00s) === RUN TestPeerAnnouncer_RequeueOnRejection --- PASS: TestPeerAnnouncer_RequeueOnRejection (0.00s) === RUN TestPeerAnnouncer_TTLRenewal --- PASS: TestPeerAnnouncer_TTLRenewal (0.00s) === RUN TestPeerAnnouncer_ReAnnouncesOnOwnerChange --- PASS: TestPeerAnnouncer_ReAnnouncesOnOwnerChange (0.00s) === RUN TestPeerAnnouncer_DropsEvictedFids --- PASS: TestPeerAnnouncer_DropsEvictedFids (0.00s) === RUN TestPeerAnnouncer_StopWaitsForFlush --- PASS: TestPeerAnnouncer_StopWaitsForFlush (0.00s) === RUN TestPeerAnnouncer_SelfOwnedWritesToLocalDir --- PASS: TestPeerAnnouncer_SelfOwnedWritesToLocalDir (0.00s) === RUN TestPeerAnnouncer_DialerErrorRequeues --- PASS: TestPeerAnnouncer_DialerErrorRequeues (0.00s) === RUN TestPeerDirectory_AnnounceAndLookup --- PASS: TestPeerDirectory_AnnounceAndLookup (0.00s) === RUN TestPeerDirectory_OwnerRejection --- PASS: TestPeerDirectory_OwnerRejection (0.00s) === RUN TestPeerDirectory_MultipleHolders --- PASS: TestPeerDirectory_MultipleHolders (0.00s) === RUN TestPeerDirectory_RenewExtendsExpiry --- PASS: TestPeerDirectory_RenewExtendsExpiry (0.00s) === RUN TestPeerDirectory_TTLExpiry --- PASS: TestPeerDirectory_TTLExpiry (0.00s) === RUN TestPeerDirectory_Sweep --- PASS: TestPeerDirectory_Sweep (0.00s) === RUN TestPeerDirectory_LookupOrdersByRecency --- PASS: TestPeerDirectory_LookupOrdersByRecency (0.00s) === RUN TestPeerDirectory_LookupOrderAfterRenewal --- PASS: TestPeerDirectory_LookupOrderAfterRenewal (0.00s) === RUN TestPeerDirectory_StatsCountersIncrement --- PASS: TestPeerDirectory_StatsCountersIncrement (0.00s) === RUN TestPeerDirectory_LookupCapsHolderList --- PASS: TestPeerDirectory_LookupCapsHolderList (0.00s) === RUN TestFetchChunkFromPeer_Hit I0505 12:12:52.220597 peer_grpc.go:88 peer-grpc listening on 127.0.0.1:41857 --- PASS: TestFetchChunkFromPeer_Hit (0.00s) === RUN TestFetchChunkFromPeer_Base64Etag I0505 12:12:52.222354 peer_grpc.go:88 peer-grpc listening on 127.0.0.1:44095 --- PASS: TestFetchChunkFromPeer_Base64Etag (0.00s) === RUN TestFetchChunkFromPeer_EtagMismatch I0505 12:12:52.223067 peer_grpc.go:88 peer-grpc listening on 127.0.0.1:39235 --- PASS: TestFetchChunkFromPeer_EtagMismatch (0.01s) === RUN TestFetchChunkFromPeer_NotFound I0505 12:12:52.231950 peer_grpc.go:88 peer-grpc listening on 127.0.0.1:44425 --- PASS: TestFetchChunkFromPeer_NotFound (0.00s) === RUN TestSortHoldersByLocality --- PASS: TestSortHoldersByLocality (0.00s) === RUN TestSortHoldersByLocality_NoSelfLabels --- PASS: TestSortHoldersByLocality_NoSelfLabels (0.00s) === RUN TestFetchChunkFromPeer_MultiFrameChunkAssembledCorrectly I0505 12:12:52.235922 peer_grpc.go:88 peer-grpc listening on 127.0.0.1:39619 --- PASS: TestFetchChunkFromPeer_MultiFrameChunkAssembledCorrectly (0.02s) === RUN TestPeerGrpcServer_AnnounceAndLookup --- PASS: TestPeerGrpcServer_AnnounceAndLookup (0.00s) === RUN TestPeerGrpcServer_OwnerMismatch --- PASS: TestPeerGrpcServer_OwnerMismatch (0.00s) === RUN TestPeerGrpcServer_FetchChunk_StreamsHit --- PASS: TestPeerGrpcServer_FetchChunk_StreamsHit (0.01s) === RUN TestPeerGrpcServer_FetchChunk_NotFound --- PASS: TestPeerGrpcServer_FetchChunk_NotFound (0.00s) === RUN TestOwnerFor_EmptySeeds --- PASS: TestOwnerFor_EmptySeeds (0.00s) === RUN TestOwnerFor_Deterministic --- PASS: TestOwnerFor_Deterministic (0.00s) === RUN TestOwnerFor_DistributesEvenly --- PASS: TestOwnerFor_DistributesEvenly (0.00s) === RUN TestOwnerFor_MinimalShuffleOnSeedChange --- PASS: TestOwnerFor_MinimalShuffleOnSeedChange (0.01s) === RUN TestOwnerFor_TieBreakerDeterministic --- PASS: TestOwnerFor_TieBreakerDeterministic (0.00s) === RUN TestPeerRegistrar_StartPopulatesSeedsFromFiler --- PASS: TestPeerRegistrar_StartPopulatesSeedsFromFiler (0.00s) === RUN TestPeerRegistrar_HeartbeatTTLMatchesConfig --- PASS: TestPeerRegistrar_HeartbeatTTLMatchesConfig (0.00s) === RUN TestPeerRegistrar_StopIsIdempotent --- PASS: TestPeerRegistrar_StopIsIdempotent (0.00s) === RUN TestPeerRegistrar_RegisterBroadcastsToAllFilers --- PASS: TestPeerRegistrar_RegisterBroadcastsToAllFilers (0.00s) === RUN TestPeerRegistrar_ListMergesAcrossFilers --- PASS: TestPeerRegistrar_ListMergesAcrossFilers (0.00s) === RUN TestPeerRegistrar_ListMergeKeepsNewestLastSeen --- PASS: TestPeerRegistrar_ListMergeKeepsNewestLastSeen (0.00s) === RUN TestNonOverlappingLocksFromDifferentOwners --- PASS: TestNonOverlappingLocksFromDifferentOwners (0.00s) === RUN TestOverlappingReadLocksFromDifferentOwners --- PASS: TestOverlappingReadLocksFromDifferentOwners (0.00s) === RUN TestOverlappingWriteReadConflict --- PASS: TestOverlappingWriteReadConflict (0.00s) === RUN TestOverlappingWriteWriteConflict --- PASS: TestOverlappingWriteWriteConflict (0.00s) === RUN TestSameOwnerUpgradeReadToWrite --- PASS: TestSameOwnerUpgradeReadToWrite (0.00s) === RUN TestSameOwnerDowngradeWriteToRead --- PASS: TestSameOwnerDowngradeWriteToRead (0.00s) === RUN TestLockCoalescing --- PASS: TestLockCoalescing (0.00s) === RUN TestLockSplitting --- PASS: TestLockSplitting (0.00s) === RUN TestGetLkConflict --- PASS: TestGetLkConflict (0.00s) === RUN TestGetLkNoConflict --- PASS: TestGetLkNoConflict (0.00s) === RUN TestGetLkSameOwnerNoConflict --- PASS: TestGetLkSameOwnerNoConflict (0.00s) === RUN TestReleaseOwner --- PASS: TestReleaseOwner (0.00s) === RUN TestDifferentLockKindsDoNotConflict --- PASS: TestDifferentLockKindsDoNotConflict (0.00s) === RUN TestReleasePosixOwnerReleasesPosixLocksAndWakesWaiters --- PASS: TestReleasePosixOwnerReleasesPosixLocksAndWakesWaiters (0.05s) === RUN TestReleasePosixOwnerDoesNotReleaseFlockLocks --- PASS: TestReleasePosixOwnerDoesNotReleaseFlockLocks (0.00s) === RUN TestHasPosixOwnerIgnoresMissingOwnerAndFlock --- PASS: TestHasPosixOwnerIgnoresMissingOwnerAndFlock (0.00s) === RUN TestWakeEligibleWaitersKeepsInodeUntilWakeRefReleased --- PASS: TestWakeEligibleWaitersKeepsInodeUntilWakeRefReleased (0.00s) === RUN TestReleaseFlockOwnerDoesNotReleasePosixLocks --- PASS: TestReleaseFlockOwnerDoesNotReleasePosixLocks (0.00s) === RUN TestReleaseOwnerWakesWaiters --- PASS: TestReleaseOwnerWakesWaiters (0.05s) === RUN TestSetLkwBlocksAndSucceeds --- PASS: TestSetLkwBlocksAndSucceeds (0.05s) === RUN TestSetLkwCancellation --- PASS: TestSetLkwCancellation (0.05s) === RUN TestWholeFileLock --- PASS: TestWholeFileLock (0.00s) === RUN TestUnlockNoExistingLocks --- PASS: TestUnlockNoExistingLocks (0.00s) === RUN TestMultipleInodesIndependent --- PASS: TestMultipleInodesIndependent (0.00s) === RUN TestMemoryCleanup --- PASS: TestMemoryCleanup (0.00s) === RUN TestSelectiveWaking --- PASS: TestSelectiveWaking (0.15s) === RUN TestSameOwnerReplaceDifferentType --- PASS: TestSameOwnerReplaceDifferentType (0.00s) === RUN TestNonAdjacentRangesNotCoalesced --- PASS: TestNonAdjacentRangesNotCoalesced (0.00s) === RUN TestAdjacencyNoOverflowAtMaxUint64 --- PASS: TestAdjacencyNoOverflowAtMaxUint64 (0.00s) === RUN TestSetLkRetriesPastDeadInodeLocks --- PASS: TestSetLkRetriesPastDeadInodeLocks (0.00s) === RUN TestGetInodeLocksEvictsDeadEntry --- PASS: TestGetInodeLocksEvictsDeadEntry (0.00s) === RUN TestConcurrentFlockChurnPreservesMutualExclusion --- PASS: TestConcurrentFlockChurnPreservesMutualExclusion (0.05s) === RUN TestLoadDirectoryEntriesDirectFiltersHiddenEntriesAndMapsIds --- PASS: TestLoadDirectoryEntriesDirectFiltersHiddenEntriesAndMapsIds (0.00s) === RUN TestLoadDirectoryEntriesDirectShowsSystemEntriesWhenEnabled --- PASS: TestLoadDirectoryEntriesDirectShowsSystemEntriesWhenEnabled (0.00s) === RUN TestWholeFileServerCopyCandidate --- PASS: TestWholeFileServerCopyCandidate (0.00s) === RUN TestCopyFileRangeUsesServerSideWholeFileCopy --- PASS: TestCopyFileRangeUsesServerSideWholeFileCopy (0.00s) === RUN TestCopyFileRangeDoesNotFallbackAfterCommittedServerCopyRefreshFailure I0505 12:12:52.668738 leveldb_store.go:48 filer store dir: /tmp/TestCopyFileRangeDoesNotFallbackAfterCommittedServerCopyRefreshF2094758250/001/meta I0505 12:12:52.668769 file_util.go:28 Folder /tmp/TestCopyFileRangeDoesNotFallbackAfterCommittedServerCopyRefreshF2094758250/001/meta Permission: -rwxr-xr-x W0505 12:12:52.671438 weedfs_file_copy_range.go:223 CopyFileRange server-side copy /src.txt => /dst.txt committed but local refresh failed: reload copied entry: transient filer read failure --- PASS: TestCopyFileRangeDoesNotFallbackAfterCommittedServerCopyRefreshFailure (0.00s) === RUN TestCopyFileRangeReturnsEIOForAmbiguousServerSideCopy W0505 12:12:52.672042 weedfs_file_copy_range.go:230 CopyFileRange server-side copy /src.txt => /dst.txt outcome ambiguous: transport timeout after request dispatch --- PASS: TestCopyFileRangeReturnsEIOForAmbiguousServerSideCopy (0.00s) === RUN TestOpenKeepCache_FirstOpen --- PASS: TestOpenKeepCache_FirstOpen (0.00s) === RUN TestOpenKeepCache_SecondOpenSameMtime --- PASS: TestOpenKeepCache_SecondOpenSameMtime (0.00s) === RUN TestOpenKeepCache_MtimeChanged --- PASS: TestOpenKeepCache_MtimeChanged (0.00s) === RUN TestOpenKeepCache_NanosecondPrecision --- PASS: TestOpenKeepCache_NanosecondPrecision (0.00s) === RUN TestOpenKeepCache_WriteInvalidation --- PASS: TestOpenKeepCache_WriteInvalidation (0.00s) === RUN TestOpenKeepCache_WriteOpenSkipped --- PASS: TestOpenKeepCache_WriteOpenSkipped (0.00s) === RUN TestOpenKeepCache_BoundedEviction --- PASS: TestOpenKeepCache_BoundedEviction (0.00s) === RUN TestCreateCreatesAndOpensFile I0505 12:12:52.672568 leveldb_store.go:48 filer store dir: /tmp/TestCreateCreatesAndOpensFile3500155207/002/meta I0505 12:12:52.672576 file_util.go:28 Folder /tmp/TestCreateCreatesAndOpensFile3500155207/002/meta Permission: -rwxr-xr-x W0505 12:12:52.673261 weedfs_access.go:15 hasAccess: user.LookupId for uid 123 failed: user: unknown userid 123 --- PASS: TestCreateCreatesAndOpensFile (0.00s) === RUN TestReleaseFlushesDirtyCreateIfFlushWasSkipped I0505 12:12:52.674585 leveldb_store.go:48 filer store dir: /tmp/TestReleaseFlushesDirtyCreateIfFlushWasSkipped659347195/002/meta I0505 12:12:52.674595 file_util.go:28 Folder /tmp/TestReleaseFlushesDirtyCreateIfFlushWasSkipped659347195/002/meta Permission: -rwxr-xr-x W0505 12:12:52.675952 weedfs_access.go:15 hasAccess: user.LookupId for uid 123 failed: user: unknown userid 123 --- PASS: TestReleaseFlushesDirtyCreateIfFlushWasSkipped (0.00s) === RUN TestTruncateEntryClearsDirtyPagesForOpenHandle I0505 12:12:52.677232 leveldb_store.go:48 filer store dir: /tmp/TestTruncateEntryClearsDirtyPagesForOpenHandle654023585/002/meta I0505 12:12:52.677243 file_util.go:28 Folder /tmp/TestTruncateEntryClearsDirtyPagesForOpenHandle654023585/002/meta Permission: -rwxr-xr-x --- PASS: TestTruncateEntryClearsDirtyPagesForOpenHandle (0.00s) === RUN TestAccessChecksPermissions --- PASS: TestAccessChecksPermissions (0.00s) === RUN TestHasAccessUsesSupplementaryGroups --- PASS: TestHasAccessUsesSupplementaryGroups (0.00s) === RUN TestCreateExistingFileIgnoresQuotaPreflight I0505 12:12:52.681127 leveldb_store.go:48 filer store dir: /tmp/TestCreateExistingFileIgnoresQuotaPreflight4138745031/002/meta I0505 12:12:52.681149 file_util.go:28 Folder /tmp/TestCreateExistingFileIgnoresQuotaPreflight4138745031/002/meta Permission: -rwxr-xr-x I0505 12:12:52.682284 weedfs_file_mkrm.go:49 Create O_EXCL /existing.txt: already exists (uid=123 gid=456 mode=644) --- PASS: TestCreateExistingFileIgnoresQuotaPreflight (0.00s) === RUN TestShouldMergeChunks_NoChunks --- PASS: TestShouldMergeChunks_NoChunks (0.00s) === RUN TestShouldMergeChunks_SingleChunk --- PASS: TestShouldMergeChunks_SingleChunk (0.00s) === RUN TestShouldMergeChunks_NonOverlapping --- PASS: TestShouldMergeChunks_NonOverlapping (0.00s) === RUN TestShouldMergeChunks_ExactlyDouble --- PASS: TestShouldMergeChunks_ExactlyDouble (0.00s) === RUN TestShouldMergeChunks_JustOverDouble --- PASS: TestShouldMergeChunks_JustOverDouble (0.00s) === RUN TestShouldMergeChunks_ManifestExtendFileSize --- PASS: TestShouldMergeChunks_ManifestExtendFileSize (0.00s) === RUN TestShouldMergeChunks_ManifestSizesCounted --- PASS: TestShouldMergeChunks_ManifestSizesCounted (0.00s) === RUN TestShouldMergeChunks_AccumulatedManifests --- PASS: TestShouldMergeChunks_AccumulatedManifests (0.00s) === RUN TestShouldMergeChunks_DoesNotMutateInput --- PASS: TestShouldMergeChunks_DoesNotMutateInput (0.00s) === RUN TestCompactThenMergeCondition === RUN TestCompactThenMergeCondition/fully_superseded_chunks_removed,_no_bloat === RUN TestCompactThenMergeCondition/repeated_full_overwrites_all_compacted_away === RUN TestCompactThenMergeCondition/non-overlapping_small_chunks,_no_bloat === RUN TestCompactThenMergeCondition/staggered_partial_overlaps_create_bloat === RUN TestCompactThenMergeCondition/overlapping_writes_with_75pct_overlap === RUN TestCompactThenMergeCondition/many_4K_writes_at_1K_step_over_large_range --- PASS: TestCompactThenMergeCondition (0.00s) --- PASS: TestCompactThenMergeCondition/fully_superseded_chunks_removed,_no_bloat (0.00s) --- PASS: TestCompactThenMergeCondition/repeated_full_overwrites_all_compacted_away (0.00s) --- PASS: TestCompactThenMergeCondition/non-overlapping_small_chunks,_no_bloat (0.00s) --- PASS: TestCompactThenMergeCondition/staggered_partial_overlaps_create_bloat (0.00s) --- PASS: TestCompactThenMergeCondition/overlapping_writes_with_75pct_overlap (0.00s) --- PASS: TestCompactThenMergeCondition/many_4K_writes_at_1K_step_over_large_range (0.00s) === RUN TestRandomWritesBloatDetection --- PASS: TestRandomWritesBloatDetection (0.00s) === RUN TestFlushCycleManifestAccumulation weedfs_file_sync_test.go:344: cycle 2: merge correctly triggered (4 manifests, 10 regular chunks) --- PASS: TestFlushCycleManifestAccumulation (0.00s) === RUN TestVisibleContentPreservedAfterCompact --- PASS: TestVisibleContentPreservedAfterCompact (0.00s) === RUN TestUncommittedBytesTracking --- PASS: TestUncommittedBytesTracking (0.00s) === RUN TestUncommittedBytesDoesNotGoNegative --- PASS: TestUncommittedBytesDoesNotGoNegative (0.00s) === RUN TestIsOverQuotaWithUncommitted === RUN TestIsOverQuotaWithUncommitted/no_quota_set === RUN TestIsOverQuotaWithUncommitted/under_quota === RUN TestIsOverQuotaWithUncommitted/over_quota_with_uncommitted === RUN TestIsOverQuotaWithUncommitted/already_over_quota_flag_set === RUN TestIsOverQuotaWithUncommitted/exactly_at_quota === RUN TestIsOverQuotaWithUncommitted/one_byte_over_quota --- PASS: TestIsOverQuotaWithUncommitted (0.00s) --- PASS: TestIsOverQuotaWithUncommitted/no_quota_set (0.00s) --- PASS: TestIsOverQuotaWithUncommitted/under_quota (0.00s) --- PASS: TestIsOverQuotaWithUncommitted/over_quota_with_uncommitted (0.00s) --- PASS: TestIsOverQuotaWithUncommitted/already_over_quota_flag_set (0.00s) --- PASS: TestIsOverQuotaWithUncommitted/exactly_at_quota (0.00s) --- PASS: TestIsOverQuotaWithUncommitted/one_byte_over_quota (0.00s) === RUN TestGetQuotaCheckInterval === RUN TestGetQuotaCheckInterval/no_quota === RUN TestGetQuotaCheckInterval/under_90%_threshold === RUN TestGetQuotaCheckInterval/at_90%_threshold === RUN TestGetQuotaCheckInterval/over_90%_with_uncommitted --- PASS: TestGetQuotaCheckInterval (0.00s) --- PASS: TestGetQuotaCheckInterval/no_quota (0.00s) --- PASS: TestGetQuotaCheckInterval/under_90%_threshold (0.00s) --- PASS: TestGetQuotaCheckInterval/at_90%_threshold (0.00s) --- PASS: TestGetQuotaCheckInterval/over_90%_with_uncommitted (0.00s) === RUN TestNoQuotaTrackingWhenDisabled --- PASS: TestNoQuotaTrackingWhenDisabled (0.00s) === RUN TestHandleRenameResponseLeavesUncachedTargetOutOfCache I0505 12:12:52.687739 leveldb_store.go:48 filer store dir: /tmp/TestHandleRenameResponseLeavesUncachedTargetOutOfCache1859886630/001/meta I0505 12:12:52.687751 file_util.go:28 Folder /tmp/TestHandleRenameResponseLeavesUncachedTargetOutOfCache1859886630/001/meta Permission: -rwxr-xr-x --- PASS: TestHandleRenameResponseLeavesUncachedTargetOutOfCache (0.00s) === RUN TestSetXAttrCopiesValueBuffer --- PASS: TestSetXAttrCopiesValueBuffer (0.00s) === RUN TestSanitizeFuseName_InvalidBytesReplaced --- PASS: TestSanitizeFuseName_InvalidBytesReplaced (0.00s) === RUN TestSanitizeFuseName_PassThroughValidUTF8 --- PASS: TestSanitizeFuseName_PassThroughValidUTF8 (0.00s) === RUN TestCheckName_SanitizesBeforeLengthCheck --- PASS: TestCheckName_SanitizesBeforeLengthCheck (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/mount 0.509s === RUN TestApplyMetadataResponseAppliesEventsInOrder I0505 12:12:52.206439 leveldb_store.go:48 filer store dir: /tmp/TestApplyMetadataResponseAppliesEventsInOrder3959076992/001/meta I0505 12:12:52.206629 file_util.go:28 Folder /tmp/TestApplyMetadataResponseAppliesEventsInOrder3959076992/001/meta Permission: -rwxr-xr-x --- PASS: TestApplyMetadataResponseAppliesEventsInOrder (0.00s) === RUN TestApplyMetadataResponseRenamesAcrossCachedDirectories I0505 12:12:52.209359 leveldb_store.go:48 filer store dir: /tmp/TestApplyMetadataResponseRenamesAcrossCachedDirectories1945912086/001/meta I0505 12:12:52.209370 file_util.go:28 Folder /tmp/TestApplyMetadataResponseRenamesAcrossCachedDirectories1945912086/001/meta Permission: -rwxr-xr-x --- PASS: TestApplyMetadataResponseRenamesAcrossCachedDirectories (0.00s) === RUN TestApplyMetadataResponseLocalOptionsSkipInvalidations I0505 12:12:52.210198 leveldb_store.go:48 filer store dir: /tmp/TestApplyMetadataResponseLocalOptionsSkipInvalidations2183746059/001/meta I0505 12:12:52.210207 file_util.go:28 Folder /tmp/TestApplyMetadataResponseLocalOptionsSkipInvalidations2183746059/001/meta Permission: -rwxr-xr-x --- PASS: TestApplyMetadataResponseLocalOptionsSkipInvalidations (0.00s) === RUN TestApplyMetadataResponseDeduplicatesRepeatedFilerEvent I0505 12:12:52.212370 leveldb_store.go:48 filer store dir: /tmp/TestApplyMetadataResponseDeduplicatesRepeatedFilerEvent821835870/001/meta I0505 12:12:52.212381 file_util.go:28 Folder /tmp/TestApplyMetadataResponseDeduplicatesRepeatedFilerEvent821835870/001/meta Permission: -rwxr-xr-x --- PASS: TestApplyMetadataResponseDeduplicatesRepeatedFilerEvent (0.00s) === RUN TestApplyMetadataResponseSkipsHiddenSystemEntryWhenDisabled I0505 12:12:52.214531 leveldb_store.go:48 filer store dir: /tmp/TestApplyMetadataResponseSkipsHiddenSystemEntryWhenDisabled4050151682/001/meta I0505 12:12:52.214541 file_util.go:28 Folder /tmp/TestApplyMetadataResponseSkipsHiddenSystemEntryWhenDisabled4050151682/001/meta Permission: -rwxr-xr-x --- PASS: TestApplyMetadataResponseSkipsHiddenSystemEntryWhenDisabled (0.00s) === RUN TestApplyMetadataResponsePurgesHiddenDestinationPath I0505 12:12:52.218649 leveldb_store.go:48 filer store dir: /tmp/TestApplyMetadataResponsePurgesHiddenDestinationPath2635689743/001/meta I0505 12:12:52.218662 file_util.go:28 Folder /tmp/TestApplyMetadataResponsePurgesHiddenDestinationPath2635689743/001/meta Permission: -rwxr-xr-x --- PASS: TestApplyMetadataResponsePurgesHiddenDestinationPath (0.00s) === RUN TestEnsureVisitedReplaysBufferedEventsAfterSnapshot I0505 12:12:52.220093 leveldb_store.go:48 filer store dir: /tmp/TestEnsureVisitedReplaysBufferedEventsAfterSnapshot2250301515/001/meta I0505 12:12:52.220102 file_util.go:28 Folder /tmp/TestEnsureVisitedReplaysBufferedEventsAfterSnapshot2250301515/001/meta Permission: -rwxr-xr-x --- PASS: TestEnsureVisitedReplaysBufferedEventsAfterSnapshot (0.00s) === RUN TestDirectoryNotificationsSuppressedDuringBuild I0505 12:12:52.224383 leveldb_store.go:48 filer store dir: /tmp/TestDirectoryNotificationsSuppressedDuringBuild2867012298/001/meta I0505 12:12:52.224397 file_util.go:28 Folder /tmp/TestDirectoryNotificationsSuppressedDuringBuild2867012298/001/meta Permission: -rwxr-xr-x --- PASS: TestDirectoryNotificationsSuppressedDuringBuild (0.00s) === RUN TestEmptyDirectoryBuildReplaysAllBufferedEvents I0505 12:12:52.225767 leveldb_store.go:48 filer store dir: /tmp/TestEmptyDirectoryBuildReplaysAllBufferedEvents748476296/001/meta I0505 12:12:52.225776 file_util.go:28 Folder /tmp/TestEmptyDirectoryBuildReplaysAllBufferedEvents748476296/001/meta Permission: -rwxr-xr-x --- PASS: TestEmptyDirectoryBuildReplaysAllBufferedEvents (0.00s) === RUN TestBuildCompletionSurvivesCallerCancellation I0505 12:12:52.229594 leveldb_store.go:48 filer store dir: /tmp/TestBuildCompletionSurvivesCallerCancellation3651986198/001/meta I0505 12:12:52.229605 file_util.go:28 Folder /tmp/TestBuildCompletionSurvivesCallerCancellation3651986198/001/meta Permission: -rwxr-xr-x --- PASS: TestBuildCompletionSurvivesCallerCancellation (0.01s) === RUN TestBufferedRenameUpdatesOtherDirectoryBeforeBuildCompletes I0505 12:12:52.236921 leveldb_store.go:48 filer store dir: /tmp/TestBufferedRenameUpdatesOtherDirectoryBeforeBuildCompletes2888875544/001/meta I0505 12:12:52.236934 file_util.go:28 Folder /tmp/TestBufferedRenameUpdatesOtherDirectoryBeforeBuildCompletes2888875544/001/meta Permission: -rwxr-xr-x --- PASS: TestBufferedRenameUpdatesOtherDirectoryBeforeBuildCompletes (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/mount/meta_cache 0.055s === RUN Test_PageChunkWrittenIntervalList --- PASS: Test_PageChunkWrittenIntervalList (0.00s) === RUN Test_PageChunkWrittenIntervalList1 --- PASS: Test_PageChunkWrittenIntervalList1 (0.00s) === RUN TestIsComplete_AdjacentIntervals === RUN TestIsComplete_AdjacentIntervals/single_full_write === RUN TestIsComplete_AdjacentIntervals/two_adjacent_halves_in_order === RUN TestIsComplete_AdjacentIntervals/two_adjacent_halves_out_of_order === RUN TestIsComplete_AdjacentIntervals/eight_adjacent_eighths === RUN TestIsComplete_AdjacentIntervals/gap_in_the_middle === RUN TestIsComplete_AdjacentIntervals/missing_last_byte === RUN TestIsComplete_AdjacentIntervals/missing_first_byte === RUN TestIsComplete_AdjacentIntervals/overlapping_intervals_covering_everything --- PASS: TestIsComplete_AdjacentIntervals (0.00s) --- PASS: TestIsComplete_AdjacentIntervals/single_full_write (0.00s) --- PASS: TestIsComplete_AdjacentIntervals/two_adjacent_halves_in_order (0.00s) --- PASS: TestIsComplete_AdjacentIntervals/two_adjacent_halves_out_of_order (0.00s) --- PASS: TestIsComplete_AdjacentIntervals/eight_adjacent_eighths (0.00s) --- PASS: TestIsComplete_AdjacentIntervals/gap_in_the_middle (0.00s) --- PASS: TestIsComplete_AdjacentIntervals/missing_last_byte (0.00s) --- PASS: TestIsComplete_AdjacentIntervals/missing_first_byte (0.00s) --- PASS: TestIsComplete_AdjacentIntervals/overlapping_intervals_covering_everything (0.00s) === RUN TestSwapFile_NewSwapFileChunk_Concurrent --- PASS: TestSwapFile_NewSwapFileChunk_Concurrent (0.00s) === RUN TestSwapFile_MkdirAll_Permissions --- PASS: TestSwapFile_MkdirAll_Permissions (0.00s) === RUN TestSwapFile_RecreateDir --- PASS: TestSwapFile_RecreateDir (0.00s) === RUN TestShutdown_ReleasesWritableReservation --- PASS: TestShutdown_ReleasesWritableReservation (0.00s) === RUN TestSealedChunk_FreeReferenceIsIdempotent --- PASS: TestSealedChunk_FreeReferenceIsIdempotent (0.00s) === RUN TestUploadPipeline --- PASS: TestUploadPipeline (24.61s) === RUN TestWriteBufferAccountant_Unlimited --- PASS: TestWriteBufferAccountant_Unlimited (0.00s) === RUN TestWriteBufferAccountant_Nil --- PASS: TestWriteBufferAccountant_Nil (0.00s) === RUN TestWriteBufferAccountant_ReserveAndRelease --- PASS: TestWriteBufferAccountant_ReserveAndRelease (0.00s) === RUN TestWriteBufferAccountant_BlocksWhenOverCap --- PASS: TestWriteBufferAccountant_BlocksWhenOverCap (0.05s) === RUN TestWriteBufferAccountant_SoftThrottle --- PASS: TestWriteBufferAccountant_SoftThrottle (0.01s) === RUN TestWriteBufferAccountant_HardThrottle --- PASS: TestWriteBufferAccountant_HardThrottle (0.05s) === RUN TestWriteBufferAccountant_NoThrottleBelowSoft --- PASS: TestWriteBufferAccountant_NoThrottleBelowSoft (0.00s) === RUN TestWriteBufferAccountant_ThrottleCounters --- PASS: TestWriteBufferAccountant_ThrottleCounters (0.06s) === RUN TestWriteBufferAccountant_GraduatedRecovery --- PASS: TestWriteBufferAccountant_GraduatedRecovery (0.06s) === RUN TestWriteBufferAccountant_AllowsOversizeWhenEmpty --- PASS: TestWriteBufferAccountant_AllowsOversizeWhenEmpty (0.00s) === RUN TestWriteBufferCap_SharedAcrossPipelines write_buffer_cap_integration_test.go:167: peak inflight uploads=4, peak Used()=262144 bytes (cap=262144) --- PASS: TestWriteBufferCap_SharedAcrossPipelines (0.46s) PASS ok github.com/seaweedfs/seaweedfs/weed/mount/page_writer 25.330s ? github.com/seaweedfs/seaweedfs/weed/mount/unmount [no test files] ? github.com/seaweedfs/seaweedfs/weed/mq [no test files] ? github.com/seaweedfs/seaweedfs/weed/mq/agent [no test files] === RUN TestConvertOffsetToMessagePosition === RUN TestConvertOffsetToMessagePosition/reset_to_earliest === RUN TestConvertOffsetToMessagePosition/reset_to_latest === RUN TestConvertOffsetToMessagePosition/exact_offset_zero === RUN TestConvertOffsetToMessagePosition/exact_offset_non-zero === RUN TestConvertOffsetToMessagePosition/exact_timestamp --- PASS: TestConvertOffsetToMessagePosition (0.00s) --- PASS: TestConvertOffsetToMessagePosition/reset_to_earliest (0.00s) --- PASS: TestConvertOffsetToMessagePosition/reset_to_latest (0.00s) --- PASS: TestConvertOffsetToMessagePosition/exact_offset_zero (0.00s) --- PASS: TestConvertOffsetToMessagePosition/exact_offset_non-zero (0.00s) --- PASS: TestConvertOffsetToMessagePosition/exact_timestamp (0.00s) === RUN TestConvertOffsetToMessagePosition_OffsetEncoding === RUN TestConvertOffsetToMessagePosition_OffsetEncoding/offset_10 === RUN TestConvertOffsetToMessagePosition_OffsetEncoding/offset_100 === RUN TestConvertOffsetToMessagePosition_OffsetEncoding/offset_0 === RUN TestConvertOffsetToMessagePosition_OffsetEncoding/offset_42 --- PASS: TestConvertOffsetToMessagePosition_OffsetEncoding (0.00s) --- PASS: TestConvertOffsetToMessagePosition_OffsetEncoding/offset_10 (0.00s) --- PASS: TestConvertOffsetToMessagePosition_OffsetEncoding/offset_100 (0.00s) --- PASS: TestConvertOffsetToMessagePosition_OffsetEncoding/offset_0 (0.00s) --- PASS: TestConvertOffsetToMessagePosition_OffsetEncoding/offset_42 (0.00s) === RUN TestConvertOffsetToMessagePosition_ConsistentResults --- PASS: TestConvertOffsetToMessagePosition_ConsistentResults (0.01s) === RUN TestConvertOffsetToMessagePosition_FixVerification --- PASS: TestConvertOffsetToMessagePosition_FixVerification (0.03s) === RUN TestPartitionIdentityConsistency --- PASS: TestPartitionIdentityConsistency (0.00s) === RUN TestBrokerOffsetManager_GetSubscription_Fixed --- PASS: TestBrokerOffsetManager_GetSubscription_Fixed (0.00s) === RUN TestBrokerOffsetManager_ListActiveSubscriptions_Fixed --- PASS: TestBrokerOffsetManager_ListActiveSubscriptions_Fixed (0.00s) === RUN TestMessageQueueBroker_ListActiveSubscriptions_Fixed --- PASS: TestMessageQueueBroker_ListActiveSubscriptions_Fixed (0.00s) === RUN TestSingleWriterPerPartitionCorrectness --- PASS: TestSingleWriterPerPartitionCorrectness (0.00s) === RUN TestEndToEndWorkflowAfterFixes --- PASS: TestEndToEndWorkflowAfterFixes (0.00s) === RUN TestValidateRecordValue --- PASS: TestValidateRecordValue (0.00s) === RUN TestValidateRecordValueEmptyFields --- PASS: TestValidateRecordValueEmptyFields (0.00s) === RUN TestValidateRecordValueNonKafkaTopic --- PASS: TestValidateRecordValueNonKafkaTopic (0.00s) === RUN TestValidateRecordValueNilInputs --- PASS: TestValidateRecordValueNilInputs (0.00s) === RUN TestRecordValueMarshalUnmarshalIntegration --- PASS: TestRecordValueMarshalUnmarshalIntegration (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/mq/broker 0.073s ? github.com/seaweedfs/seaweedfs/weed/mq/client/agent_client [no test files] ? github.com/seaweedfs/seaweedfs/weed/mq/client/pub_client [no test files] ? github.com/seaweedfs/seaweedfs/weed/mq/client/sub_client [no test files] ? github.com/seaweedfs/seaweedfs/weed/mq/kafka [no test files] === RUN TestCompressionCodec_String === RUN TestCompressionCodec_String/none === RUN TestCompressionCodec_String/gzip === RUN TestCompressionCodec_String/snappy === RUN TestCompressionCodec_String/lz4 === RUN TestCompressionCodec_String/zstd === RUN TestCompressionCodec_String/unknown(99) --- PASS: TestCompressionCodec_String (0.00s) --- PASS: TestCompressionCodec_String/none (0.00s) --- PASS: TestCompressionCodec_String/gzip (0.00s) --- PASS: TestCompressionCodec_String/snappy (0.00s) --- PASS: TestCompressionCodec_String/lz4 (0.00s) --- PASS: TestCompressionCodec_String/zstd (0.00s) --- PASS: TestCompressionCodec_String/unknown(99) (0.00s) === RUN TestCompressionCodec_IsValid === RUN TestCompressionCodec_IsValid/none === RUN TestCompressionCodec_IsValid/gzip === RUN TestCompressionCodec_IsValid/snappy === RUN TestCompressionCodec_IsValid/lz4 === RUN TestCompressionCodec_IsValid/zstd === RUN TestCompressionCodec_IsValid/unknown(-1) === RUN TestCompressionCodec_IsValid/unknown(5) === RUN TestCompressionCodec_IsValid/unknown(99) --- PASS: TestCompressionCodec_IsValid (0.00s) --- PASS: TestCompressionCodec_IsValid/none (0.00s) --- PASS: TestCompressionCodec_IsValid/gzip (0.00s) --- PASS: TestCompressionCodec_IsValid/snappy (0.00s) --- PASS: TestCompressionCodec_IsValid/lz4 (0.00s) --- PASS: TestCompressionCodec_IsValid/zstd (0.00s) --- PASS: TestCompressionCodec_IsValid/unknown(-1) (0.00s) --- PASS: TestCompressionCodec_IsValid/unknown(5) (0.00s) --- PASS: TestCompressionCodec_IsValid/unknown(99) (0.00s) === RUN TestExtractCompressionCodec === RUN TestExtractCompressionCodec/None === RUN TestExtractCompressionCodec/Gzip === RUN TestExtractCompressionCodec/Snappy === RUN TestExtractCompressionCodec/Lz4 === RUN TestExtractCompressionCodec/Zstd === RUN TestExtractCompressionCodec/Gzip_with_transactional === RUN TestExtractCompressionCodec/Snappy_with_control === RUN TestExtractCompressionCodec/Lz4_with_both_flags --- PASS: TestExtractCompressionCodec (0.00s) --- PASS: TestExtractCompressionCodec/None (0.00s) --- PASS: TestExtractCompressionCodec/Gzip (0.00s) --- PASS: TestExtractCompressionCodec/Snappy (0.00s) --- PASS: TestExtractCompressionCodec/Lz4 (0.00s) --- PASS: TestExtractCompressionCodec/Zstd (0.00s) --- PASS: TestExtractCompressionCodec/Gzip_with_transactional (0.00s) --- PASS: TestExtractCompressionCodec/Snappy_with_control (0.00s) --- PASS: TestExtractCompressionCodec/Lz4_with_both_flags (0.00s) === RUN TestSetCompressionCodec === RUN TestSetCompressionCodec/Set_None === RUN TestSetCompressionCodec/Set_Gzip === RUN TestSetCompressionCodec/Set_Snappy === RUN TestSetCompressionCodec/Set_Lz4 === RUN TestSetCompressionCodec/Set_Zstd === RUN TestSetCompressionCodec/Replace_Gzip_with_Snappy === RUN TestSetCompressionCodec/Set_Gzip_preserving_transactional === RUN TestSetCompressionCodec/Set_Lz4_preserving_control === RUN TestSetCompressionCodec/Set_Zstd_preserving_both_flags --- PASS: TestSetCompressionCodec (0.00s) --- PASS: TestSetCompressionCodec/Set_None (0.00s) --- PASS: TestSetCompressionCodec/Set_Gzip (0.00s) --- PASS: TestSetCompressionCodec/Set_Snappy (0.00s) --- PASS: TestSetCompressionCodec/Set_Lz4 (0.00s) --- PASS: TestSetCompressionCodec/Set_Zstd (0.00s) --- PASS: TestSetCompressionCodec/Replace_Gzip_with_Snappy (0.00s) --- PASS: TestSetCompressionCodec/Set_Gzip_preserving_transactional (0.00s) --- PASS: TestSetCompressionCodec/Set_Lz4_preserving_control (0.00s) --- PASS: TestSetCompressionCodec/Set_Zstd_preserving_both_flags (0.00s) === RUN TestCompress_None --- PASS: TestCompress_None (0.00s) === RUN TestCompress_Gzip --- PASS: TestCompress_Gzip (0.00s) === RUN TestCompress_Snappy --- PASS: TestCompress_Snappy (0.00s) === RUN TestCompress_Lz4 --- PASS: TestCompress_Lz4 (0.02s) === RUN TestCompress_Zstd --- PASS: TestCompress_Zstd (0.00s) === RUN TestCompress_InvalidCodec --- PASS: TestCompress_InvalidCodec (0.00s) === RUN TestDecompress_None --- PASS: TestDecompress_None (0.00s) === RUN TestRoundTrip === RUN TestRoundTrip/none === RUN TestRoundTrip/none/data_0 === RUN TestRoundTrip/none/data_1 === RUN TestRoundTrip/none/data_2 === RUN TestRoundTrip/none/data_3 === RUN TestRoundTrip/none/data_4 === RUN TestRoundTrip/none/data_5 === RUN TestRoundTrip/gzip === RUN TestRoundTrip/gzip/data_0 === RUN TestRoundTrip/gzip/data_1 === RUN TestRoundTrip/gzip/data_2 === RUN TestRoundTrip/gzip/data_3 === RUN TestRoundTrip/gzip/data_4 === RUN TestRoundTrip/gzip/data_5 === RUN TestRoundTrip/snappy === RUN TestRoundTrip/snappy/data_0 === RUN TestRoundTrip/snappy/data_1 === RUN TestRoundTrip/snappy/data_2 === RUN TestRoundTrip/snappy/data_3 === RUN TestRoundTrip/snappy/data_4 === RUN TestRoundTrip/snappy/data_5 === RUN TestRoundTrip/lz4 === RUN TestRoundTrip/lz4/data_0 === RUN TestRoundTrip/lz4/data_1 === RUN TestRoundTrip/lz4/data_2 === RUN TestRoundTrip/lz4/data_3 === RUN TestRoundTrip/lz4/data_4 === RUN TestRoundTrip/lz4/data_5 === RUN TestRoundTrip/zstd === RUN TestRoundTrip/zstd/data_0 === RUN TestRoundTrip/zstd/data_1 === RUN TestRoundTrip/zstd/data_2 === RUN TestRoundTrip/zstd/data_3 === RUN TestRoundTrip/zstd/data_4 === RUN TestRoundTrip/zstd/data_5 --- PASS: TestRoundTrip (0.01s) --- PASS: TestRoundTrip/none (0.00s) --- PASS: TestRoundTrip/none/data_0 (0.00s) --- PASS: TestRoundTrip/none/data_1 (0.00s) --- PASS: TestRoundTrip/none/data_2 (0.00s) --- PASS: TestRoundTrip/none/data_3 (0.00s) --- PASS: TestRoundTrip/none/data_4 (0.00s) --- PASS: TestRoundTrip/none/data_5 (0.00s) --- PASS: TestRoundTrip/gzip (0.00s) --- PASS: TestRoundTrip/gzip/data_0 (0.00s) --- PASS: TestRoundTrip/gzip/data_1 (0.00s) --- PASS: TestRoundTrip/gzip/data_2 (0.00s) --- PASS: TestRoundTrip/gzip/data_3 (0.00s) --- PASS: TestRoundTrip/gzip/data_4 (0.00s) --- PASS: TestRoundTrip/gzip/data_5 (0.00s) --- PASS: TestRoundTrip/snappy (0.00s) --- PASS: TestRoundTrip/snappy/data_0 (0.00s) --- PASS: TestRoundTrip/snappy/data_1 (0.00s) --- PASS: TestRoundTrip/snappy/data_2 (0.00s) --- PASS: TestRoundTrip/snappy/data_3 (0.00s) --- PASS: TestRoundTrip/snappy/data_4 (0.00s) --- PASS: TestRoundTrip/snappy/data_5 (0.00s) --- PASS: TestRoundTrip/lz4 (0.00s) --- PASS: TestRoundTrip/lz4/data_0 (0.00s) --- PASS: TestRoundTrip/lz4/data_1 (0.00s) --- PASS: TestRoundTrip/lz4/data_2 (0.00s) --- PASS: TestRoundTrip/lz4/data_3 (0.00s) --- PASS: TestRoundTrip/lz4/data_4 (0.00s) --- PASS: TestRoundTrip/lz4/data_5 (0.00s) --- PASS: TestRoundTrip/zstd (0.01s) --- PASS: TestRoundTrip/zstd/data_0 (0.00s) --- PASS: TestRoundTrip/zstd/data_1 (0.01s) --- PASS: TestRoundTrip/zstd/data_2 (0.00s) --- PASS: TestRoundTrip/zstd/data_3 (0.00s) --- PASS: TestRoundTrip/zstd/data_4 (0.00s) --- PASS: TestRoundTrip/zstd/data_5 (0.00s) === RUN TestDecompress_InvalidCodec --- PASS: TestDecompress_InvalidCodec (0.00s) === RUN TestDecompress_CorruptedData === RUN TestDecompress_CorruptedData/gzip === RUN TestDecompress_CorruptedData/snappy === RUN TestDecompress_CorruptedData/lz4 === RUN TestDecompress_CorruptedData/zstd --- PASS: TestDecompress_CorruptedData (0.00s) --- PASS: TestDecompress_CorruptedData/gzip (0.00s) --- PASS: TestDecompress_CorruptedData/snappy (0.00s) --- PASS: TestDecompress_CorruptedData/lz4 (0.00s) --- PASS: TestDecompress_CorruptedData/zstd (0.00s) === RUN TestCompressRecordBatch === RUN TestCompressRecordBatch/None_codec === RUN TestCompressRecordBatch/Gzip_codec === RUN TestCompressRecordBatch/Snappy_codec --- PASS: TestCompressRecordBatch (0.00s) --- PASS: TestCompressRecordBatch/None_codec (0.00s) --- PASS: TestCompressRecordBatch/Gzip_codec (0.00s) --- PASS: TestCompressRecordBatch/Snappy_codec (0.00s) === RUN TestDecompressRecordBatch === RUN TestDecompressRecordBatch/None_codec === RUN TestDecompressRecordBatch/Round_trip_with_Gzip === RUN TestDecompressRecordBatch/Round_trip_with_Snappy --- PASS: TestDecompressRecordBatch (0.00s) --- PASS: TestDecompressRecordBatch/None_codec (0.00s) --- PASS: TestDecompressRecordBatch/Round_trip_with_Gzip (0.00s) --- PASS: TestDecompressRecordBatch/Round_trip_with_Snappy (0.00s) === RUN TestCompressionEfficiency === RUN TestCompressionEfficiency/gzip compression_test.go:304: Codec: gzip, Original: 5100 bytes, Compressed: 98 bytes, Ratio: 0.02 === RUN TestCompressionEfficiency/snappy compression_test.go:304: Codec: snappy, Original: 5100 bytes, Compressed: 291 bytes, Ratio: 0.06 === RUN TestCompressionEfficiency/lz4 compression_test.go:304: Codec: lz4, Original: 5100 bytes, Compressed: 112 bytes, Ratio: 0.02 === RUN TestCompressionEfficiency/zstd compression_test.go:304: Codec: zstd, Original: 5100 bytes, Compressed: 68 bytes, Ratio: 0.01 --- PASS: TestCompressionEfficiency (0.01s) --- PASS: TestCompressionEfficiency/gzip (0.00s) --- PASS: TestCompressionEfficiency/snappy (0.00s) --- PASS: TestCompressionEfficiency/lz4 (0.01s) --- PASS: TestCompressionEfficiency/zstd (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/mq/kafka/compression 0.049s === RUN TestRangeAssignmentStrategy --- PASS: TestRangeAssignmentStrategy (0.00s) === RUN TestRangeAssignmentStrategy_UnevenPartitions --- PASS: TestRangeAssignmentStrategy_UnevenPartitions (0.00s) === RUN TestRangeAssignmentStrategy_MultipleTopics --- PASS: TestRangeAssignmentStrategy_MultipleTopics (0.00s) === RUN TestRoundRobinAssignmentStrategy --- PASS: TestRoundRobinAssignmentStrategy (0.00s) === RUN TestRoundRobinAssignmentStrategy_MultipleTopics --- PASS: TestRoundRobinAssignmentStrategy_MultipleTopics (0.00s) === RUN TestGetAssignmentStrategy --- PASS: TestGetAssignmentStrategy (0.00s) === RUN TestConsumerGroup_AssignPartitions --- PASS: TestConsumerGroup_AssignPartitions (0.00s) === RUN TestConsumerGroup_GetMemberAssignments --- PASS: TestConsumerGroup_GetMemberAssignments (0.00s) === RUN TestConsumerGroup_UpdateMemberSubscription --- PASS: TestConsumerGroup_UpdateMemberSubscription (0.00s) === RUN TestAssignmentStrategy_EmptyMembers --- PASS: TestAssignmentStrategy_EmptyMembers (0.00s) === RUN TestCooperativeStickyAssignmentStrategy_Name --- PASS: TestCooperativeStickyAssignmentStrategy_Name (0.00s) === RUN TestCooperativeStickyAssignmentStrategy_InitialAssignment --- PASS: TestCooperativeStickyAssignmentStrategy_InitialAssignment (0.00s) === RUN TestCooperativeStickyAssignmentStrategy_StickyBehavior --- PASS: TestCooperativeStickyAssignmentStrategy_StickyBehavior (0.00s) === RUN TestCooperativeStickyAssignmentStrategy_NewMemberJoin cooperative_sticky_test.go:187: Member1 retained 2 out of 4 original partitions --- PASS: TestCooperativeStickyAssignmentStrategy_NewMemberJoin (0.00s) === RUN TestCooperativeStickyAssignmentStrategy_MemberLeave --- PASS: TestCooperativeStickyAssignmentStrategy_MemberLeave (0.00s) === RUN TestCooperativeStickyAssignmentStrategy_MultipleTopics --- PASS: TestCooperativeStickyAssignmentStrategy_MultipleTopics (0.00s) === RUN TestCooperativeStickyAssignmentStrategy_UnevenPartitions --- PASS: TestCooperativeStickyAssignmentStrategy_UnevenPartitions (0.00s) === RUN TestCooperativeStickyAssignmentStrategy_PartialSubscription --- PASS: TestCooperativeStickyAssignmentStrategy_PartialSubscription (0.00s) === RUN TestGetAssignmentStrategy_CooperativeSticky --- PASS: TestGetAssignmentStrategy_CooperativeSticky (0.00s) === RUN TestGroupCoordinator_CreateGroup --- PASS: TestGroupCoordinator_CreateGroup (0.00s) === RUN TestGroupCoordinator_ValidateSessionTimeout --- PASS: TestGroupCoordinator_ValidateSessionTimeout (0.00s) === RUN TestGroupCoordinator_MemberManagement --- PASS: TestGroupCoordinator_MemberManagement (0.00s) === RUN TestGroupCoordinator_Stats --- PASS: TestGroupCoordinator_Stats (0.00s) === RUN TestGroupCoordinator_Cleanup --- PASS: TestGroupCoordinator_Cleanup (0.00s) === RUN TestGroupCoordinator_GenerateMemberID --- PASS: TestGroupCoordinator_GenerateMemberID (0.00s) === RUN TestGroupCoordinator_EvictExpiredMembersLocked --- PASS: TestGroupCoordinator_EvictExpiredMembersLocked (0.00s) === RUN TestGroupCoordinator_Cleanup_SurvivorsRebalance --- PASS: TestGroupCoordinator_Cleanup_SurvivorsRebalance (0.00s) === RUN TestGroupCoordinator_EvictExpiredMembersLocked_ZeroSessionTimeout --- PASS: TestGroupCoordinator_EvictExpiredMembersLocked_ZeroSessionTimeout (0.00s) === RUN TestIncrementalCooperativeAssignmentStrategy_BasicAssignment incremental_rebalancing_test.go:41: Member member-1 assigned 2 partitions: [{topic-1 0} {topic-1 1}] incremental_rebalancing_test.go:41: Member member-2 assigned 2 partitions: [{topic-1 2} {topic-1 3}] --- PASS: TestIncrementalCooperativeAssignmentStrategy_BasicAssignment (0.00s) === RUN TestIncrementalCooperativeAssignmentStrategy_RebalanceWithRevocation incremental_rebalancing_test.go:106: Revocation phase - Member-1: 2 partitions, Member-2: 0 partitions incremental_rebalancing_test.go:139: Final assignment - Member-1: 2 partitions, Member-2: 2 partitions --- PASS: TestIncrementalCooperativeAssignmentStrategy_RebalanceWithRevocation (0.01s) === RUN TestIncrementalCooperativeAssignmentStrategy_NoRevocationNeeded --- PASS: TestIncrementalCooperativeAssignmentStrategy_NoRevocationNeeded (0.00s) === RUN TestIncrementalCooperativeAssignmentStrategy_MultipleTopics incremental_rebalancing_test.go:244: All assigned partitions: map[topic-1:0:true topic-1:1:true topic-1:2:true topic-2:0:true topic-2:1:true] --- PASS: TestIncrementalCooperativeAssignmentStrategy_MultipleTopics (0.00s) === RUN TestIncrementalCooperativeAssignmentStrategy_ForceComplete --- PASS: TestIncrementalCooperativeAssignmentStrategy_ForceComplete (0.00s) === RUN TestIncrementalCooperativeAssignmentStrategy_RevocationTimeout --- PASS: TestIncrementalCooperativeAssignmentStrategy_RevocationTimeout (0.01s) === RUN TestIncrementalCooperativeAssignmentStrategy_StateTransitions --- PASS: TestIncrementalCooperativeAssignmentStrategy_StateTransitions (0.00s) === RUN TestRebalanceTimeoutManager_CheckRebalanceTimeouts --- PASS: TestRebalanceTimeoutManager_CheckRebalanceTimeouts (0.00s) === RUN TestRebalanceTimeoutManager_SessionTimeoutFallback --- PASS: TestRebalanceTimeoutManager_SessionTimeoutFallback (0.00s) === RUN TestRebalanceTimeoutManager_LeaderEviction --- PASS: TestRebalanceTimeoutManager_LeaderEviction (0.00s) === RUN TestRebalanceTimeoutManager_IsRebalanceStuck --- PASS: TestRebalanceTimeoutManager_IsRebalanceStuck (0.00s) === RUN TestRebalanceTimeoutManager_ForceCompleteRebalance --- PASS: TestRebalanceTimeoutManager_ForceCompleteRebalance (0.00s) === RUN TestRebalanceTimeoutManager_GetRebalanceStatus --- PASS: TestRebalanceTimeoutManager_GetRebalanceStatus (0.00s) === RUN TestRebalanceTimeoutManager_DefaultRebalanceTimeout --- PASS: TestRebalanceTimeoutManager_DefaultRebalanceTimeout (0.00s) === RUN TestGroupCoordinator_StaticMembership --- PASS: TestGroupCoordinator_StaticMembership (0.00s) === RUN TestGroupCoordinator_StaticMemberReconnection --- PASS: TestGroupCoordinator_StaticMemberReconnection (0.00s) === RUN TestGroupCoordinator_StaticMembershipEdgeCases --- PASS: TestGroupCoordinator_StaticMembershipEdgeCases (0.00s) === RUN TestGroupCoordinator_StaticMembershipConcurrency --- PASS: TestGroupCoordinator_StaticMembershipConcurrency (0.01s) PASS ok github.com/seaweedfs/seaweedfs/weed/mq/kafka/consumer 0.035s === RUN TestMemoryStorageCommitAndFetch --- PASS: TestMemoryStorageCommitAndFetch (0.00s) === RUN TestMemoryStorageFetchNonExistent --- PASS: TestMemoryStorageFetchNonExistent (0.00s) === RUN TestMemoryStorageFetchAllOffsets --- PASS: TestMemoryStorageFetchAllOffsets (0.00s) === RUN TestMemoryStorageDeleteGroup --- PASS: TestMemoryStorageDeleteGroup (0.00s) === RUN TestMemoryStorageListGroups --- PASS: TestMemoryStorageListGroups (0.00s) === RUN TestMemoryStorageConcurrency --- PASS: TestMemoryStorageConcurrency (0.00s) === RUN TestMemoryStorageInvalidInputs --- PASS: TestMemoryStorageInvalidInputs (0.00s) === RUN TestMemoryStorageClosedOperations --- PASS: TestMemoryStorageClosedOperations (0.00s) === RUN TestMemoryStorageOverwrite --- PASS: TestMemoryStorageOverwrite (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/mq/kafka/consumer_offset 0.030s === RUN TestCoordinatorRegistry_DeterministicNodeID --- PASS: TestCoordinatorRegistry_DeterministicNodeID (0.00s) === RUN TestCoordinatorRegistry_BasicOperations --- PASS: TestCoordinatorRegistry_BasicOperations (0.00s) === RUN TestCoordinatorRegistry_AssignCoordinator --- PASS: TestCoordinatorRegistry_AssignCoordinator (0.00s) === RUN TestCoordinatorRegistry_HealthyGateways --- PASS: TestCoordinatorRegistry_HealthyGateways (0.00s) === RUN TestCoordinatorRegistry_ConsistentHashing --- PASS: TestCoordinatorRegistry_ConsistentHashing (0.00s) === RUN TestCoordinatorRegistry_CleanupStaleEntries --- PASS: TestCoordinatorRegistry_CleanupStaleEntries (0.00s) === RUN TestCoordinatorRegistry_GetStats --- PASS: TestCoordinatorRegistry_GetStats (0.00s) === RUN TestCoordinatorRegistry_HeartbeatGateway --- PASS: TestCoordinatorRegistry_HeartbeatGateway (0.01s) PASS ok github.com/seaweedfs/seaweedfs/weed/mq/kafka/gateway 0.035s === RUN TestNeedsRestart === RUN TestNeedsRestart/Stream_is_nil_-_needs_restart === RUN TestNeedsRestart/Offset_in_cache_-_no_restart_needed === RUN TestNeedsRestart/Offset_before_current_-_needs_restart === RUN TestNeedsRestart/Large_gap_ahead_-_needs_restart === RUN TestNeedsRestart/Small_gap_ahead_-_no_restart_needed === RUN TestNeedsRestart/Exact_match_-_no_restart_needed === RUN TestNeedsRestart/Context_is_nil_-_needs_restart --- PASS: TestNeedsRestart (0.00s) --- PASS: TestNeedsRestart/Stream_is_nil_-_needs_restart (0.00s) --- PASS: TestNeedsRestart/Offset_in_cache_-_no_restart_needed (0.00s) --- PASS: TestNeedsRestart/Offset_before_current_-_needs_restart (0.00s) --- PASS: TestNeedsRestart/Large_gap_ahead_-_needs_restart (0.00s) --- PASS: TestNeedsRestart/Small_gap_ahead_-_no_restart_needed (0.00s) --- PASS: TestNeedsRestart/Exact_match_-_no_restart_needed (0.00s) --- PASS: TestNeedsRestart/Context_is_nil_-_needs_restart (0.00s) === RUN TestNeedsRestart_CacheLogic === RUN TestNeedsRestart_CacheLogic/First_offset_in_cache === RUN TestNeedsRestart_CacheLogic/Middle_offset_in_cache === RUN TestNeedsRestart_CacheLogic/Last_offset_in_cache === RUN TestNeedsRestart_CacheLogic/Before_cache_start === RUN TestNeedsRestart_CacheLogic/Current_position === RUN TestNeedsRestart_CacheLogic/One_ahead === RUN TestNeedsRestart_CacheLogic/Large_gap_>_1000 --- PASS: TestNeedsRestart_CacheLogic (0.00s) --- PASS: TestNeedsRestart_CacheLogic/First_offset_in_cache (0.00s) --- PASS: TestNeedsRestart_CacheLogic/Middle_offset_in_cache (0.00s) --- PASS: TestNeedsRestart_CacheLogic/Last_offset_in_cache (0.00s) --- PASS: TestNeedsRestart_CacheLogic/Before_cache_start (0.00s) --- PASS: TestNeedsRestart_CacheLogic/Current_position (0.00s) --- PASS: TestNeedsRestart_CacheLogic/One_ahead (0.00s) --- PASS: TestNeedsRestart_CacheLogic/Large_gap_>_1000 (0.00s) === RUN TestNeedsRestart_EmptyCache === RUN TestNeedsRestart_EmptyCache/Before_current === RUN TestNeedsRestart_EmptyCache/At_current === RUN TestNeedsRestart_EmptyCache/Small_gap_ahead === RUN TestNeedsRestart_EmptyCache/Large_gap_ahead --- PASS: TestNeedsRestart_EmptyCache (0.00s) --- PASS: TestNeedsRestart_EmptyCache/Before_current (0.00s) --- PASS: TestNeedsRestart_EmptyCache/At_current (0.00s) --- PASS: TestNeedsRestart_EmptyCache/Small_gap_ahead (0.00s) --- PASS: TestNeedsRestart_EmptyCache/Large_gap_ahead (0.00s) === RUN TestNeedsRestart_ThreadSafety --- PASS: TestNeedsRestart_ThreadSafety (0.00s) === RUN TestRestartSubscriber_StateManagement --- PASS: TestRestartSubscriber_StateManagement (0.00s) === RUN TestMapBrokerErrorToKafka === RUN TestMapBrokerErrorToKafka/No_error === RUN TestMapBrokerErrorToKafka/Unknown_server_error === RUN TestMapBrokerErrorToKafka/Topic_not_found === RUN TestMapBrokerErrorToKafka/Partition_not_found === RUN TestMapBrokerErrorToKafka/Not_leader_or_follower === RUN TestMapBrokerErrorToKafka/Request_timed_out === RUN TestMapBrokerErrorToKafka/Broker_not_available === RUN TestMapBrokerErrorToKafka/Message_too_large === RUN TestMapBrokerErrorToKafka/Network_exception === RUN TestMapBrokerErrorToKafka/Offset_load_in_progress === RUN TestMapBrokerErrorToKafka/Invalid_record === RUN TestMapBrokerErrorToKafka/Topic_already_exists === RUN TestMapBrokerErrorToKafka/Invalid_partitions === RUN TestMapBrokerErrorToKafka/Invalid_config === RUN TestMapBrokerErrorToKafka/Publisher_not_found === RUN TestMapBrokerErrorToKafka/Connection_failed === RUN TestMapBrokerErrorToKafka/Follower_connection_failed === RUN TestMapBrokerErrorToKafka/Unknown_error_code --- PASS: TestMapBrokerErrorToKafka (0.00s) --- PASS: TestMapBrokerErrorToKafka/No_error (0.00s) --- PASS: TestMapBrokerErrorToKafka/Unknown_server_error (0.00s) --- PASS: TestMapBrokerErrorToKafka/Topic_not_found (0.00s) --- PASS: TestMapBrokerErrorToKafka/Partition_not_found (0.00s) --- PASS: TestMapBrokerErrorToKafka/Not_leader_or_follower (0.00s) --- PASS: TestMapBrokerErrorToKafka/Request_timed_out (0.00s) --- PASS: TestMapBrokerErrorToKafka/Broker_not_available (0.00s) --- PASS: TestMapBrokerErrorToKafka/Message_too_large (0.00s) --- PASS: TestMapBrokerErrorToKafka/Network_exception (0.00s) --- PASS: TestMapBrokerErrorToKafka/Offset_load_in_progress (0.00s) --- PASS: TestMapBrokerErrorToKafka/Invalid_record (0.00s) --- PASS: TestMapBrokerErrorToKafka/Topic_already_exists (0.00s) --- PASS: TestMapBrokerErrorToKafka/Invalid_partitions (0.00s) --- PASS: TestMapBrokerErrorToKafka/Invalid_config (0.00s) --- PASS: TestMapBrokerErrorToKafka/Publisher_not_found (0.00s) --- PASS: TestMapBrokerErrorToKafka/Connection_failed (0.00s) --- PASS: TestMapBrokerErrorToKafka/Follower_connection_failed (0.00s) --- PASS: TestMapBrokerErrorToKafka/Unknown_error_code (0.00s) === RUN TestHandleBrokerResponse === RUN TestHandleBrokerResponse/No_error === RUN TestHandleBrokerResponse/Structured_error_-_Not_leader === RUN TestHandleBrokerResponse/Structured_error_-_Topic_not_found === RUN TestHandleBrokerResponse/Fallback_string_parsing_-_Not_leader === RUN TestHandleBrokerResponse/Fallback_string_parsing_-_Topic_not_found === RUN TestHandleBrokerResponse/Fallback_string_parsing_-_Unknown_error --- PASS: TestHandleBrokerResponse (0.00s) --- PASS: TestHandleBrokerResponse/No_error (0.00s) --- PASS: TestHandleBrokerResponse/Structured_error_-_Not_leader (0.00s) --- PASS: TestHandleBrokerResponse/Structured_error_-_Topic_not_found (0.00s) --- PASS: TestHandleBrokerResponse/Fallback_string_parsing_-_Not_leader (0.00s) --- PASS: TestHandleBrokerResponse/Fallback_string_parsing_-_Topic_not_found (0.00s) --- PASS: TestHandleBrokerResponse/Fallback_string_parsing_-_Unknown_error (0.00s) === RUN TestParseStringErrorToKafkaCode === RUN TestParseStringErrorToKafkaCode/Empty_error === RUN TestParseStringErrorToKafkaCode/Not_leader_error === RUN TestParseStringErrorToKafkaCode/Not_leader_error_variant === RUN TestParseStringErrorToKafkaCode/Topic_not_found === RUN TestParseStringErrorToKafkaCode/Topic_does_not_exist === RUN TestParseStringErrorToKafkaCode/Partition_not_found === RUN TestParseStringErrorToKafkaCode/Timeout_error === RUN TestParseStringErrorToKafkaCode/Timeout_error_variant === RUN TestParseStringErrorToKafkaCode/Network_error === RUN TestParseStringErrorToKafkaCode/Connection_error === RUN TestParseStringErrorToKafkaCode/Message_too_large === RUN TestParseStringErrorToKafkaCode/Size_error === RUN TestParseStringErrorToKafkaCode/Unknown_error --- PASS: TestParseStringErrorToKafkaCode (0.00s) --- PASS: TestParseStringErrorToKafkaCode/Empty_error (0.00s) --- PASS: TestParseStringErrorToKafkaCode/Not_leader_error (0.00s) --- PASS: TestParseStringErrorToKafkaCode/Not_leader_error_variant (0.00s) --- PASS: TestParseStringErrorToKafkaCode/Topic_not_found (0.00s) --- PASS: TestParseStringErrorToKafkaCode/Topic_does_not_exist (0.00s) --- PASS: TestParseStringErrorToKafkaCode/Partition_not_found (0.00s) --- PASS: TestParseStringErrorToKafkaCode/Timeout_error (0.00s) --- PASS: TestParseStringErrorToKafkaCode/Timeout_error_variant (0.00s) --- PASS: TestParseStringErrorToKafkaCode/Network_error (0.00s) --- PASS: TestParseStringErrorToKafkaCode/Connection_error (0.00s) --- PASS: TestParseStringErrorToKafkaCode/Message_too_large (0.00s) --- PASS: TestParseStringErrorToKafkaCode/Size_error (0.00s) --- PASS: TestParseStringErrorToKafkaCode/Unknown_error (0.00s) === RUN TestAdaptiveFetchTimeout fetch_performance_test.go:11: Testing adaptive fetch timeout strategy... === RUN TestAdaptiveFetchTimeout/OldStrategy_50ms_Timeout fetch_performance_test.go:32: Record 1 timed out (readTime=150ms > timeout=50ms) fetch_performance_test.go:38: Old strategy: received 0/4 records in 31.769µs fetch_performance_test.go:43: ✓ Bug reproduced: old strategy times out too quickly === RUN TestAdaptiveFetchTimeout/NewStrategy_1s_Timeout fetch_performance_test.go:56: Record 1 received (readTime=150ms) fetch_performance_test.go:56: Record 2 received (readTime=150ms) fetch_performance_test.go:56: Record 3 received (readTime=150ms) fetch_performance_test.go:56: Record 4 received (readTime=150ms) fetch_performance_test.go:64: New strategy: received 4/4 records in 23.113µs fetch_performance_test.go:69: ✓ Fix verified: new strategy receives all records === RUN TestAdaptiveFetchTimeout/SchemaRegistry_CatchUp_Scenario fetch_performance_test.go:99: Schema Registry catch-up simulation: fetch_performance_test.go:100: Old strategy: 4 round trips, ~800ms total time fetch_performance_test.go:101: New strategy: 1 round trip, ~600ms total time fetch_performance_test.go:102: Schema Registry timeout: 500ms fetch_performance_test.go:108: ✓ Old strategy exceeds timeout: 800ms > 500ms fetch_performance_test.go:112: ✓ New strategy completes within timeout: 600ms <= 700ms --- PASS: TestAdaptiveFetchTimeout (0.00s) --- PASS: TestAdaptiveFetchTimeout/OldStrategy_50ms_Timeout (0.00s) --- PASS: TestAdaptiveFetchTimeout/NewStrategy_1s_Timeout (0.00s) --- PASS: TestAdaptiveFetchTimeout/SchemaRegistry_CatchUp_Scenario (0.00s) === RUN TestFetchTimeoutProgression fetch_performance_test.go:121: Testing fetch timeout progression... fetch_performance_test.go:134: Timeout progression: fetch_performance_test.go:137: Record 1: timeout = 1s fetch_performance_test.go:137: Record 2: timeout = 1s fetch_performance_test.go:137: Record 3: timeout = 1s fetch_performance_test.go:137: Record 4: timeout = 1s fetch_performance_test.go:137: Record 5: timeout = 1s fetch_performance_test.go:137: Record 6: timeout = 100ms fetch_performance_test.go:137: Record 7: timeout = 100ms fetch_performance_test.go:137: Record 8: timeout = 100ms fetch_performance_test.go:137: Record 9: timeout = 100ms fetch_performance_test.go:137: Record 10: timeout = 100ms fetch_performance_test.go:154: ✓ Timeout progression is correct --- PASS: TestFetchTimeoutProgression (0.00s) === RUN TestSeaweedSMQRecord_Interface --- PASS: TestSeaweedSMQRecord_Interface (0.00s) === RUN TestSeaweedMQHandler_GetStoredRecords_EmptyTopic record_retrieval_test.go:96: Test obsolete: ledgers removed, SMQ broker handles offset management --- SKIP: TestSeaweedMQHandler_GetStoredRecords_EmptyTopic (0.00s) === RUN TestSeaweedMQHandler_GetStoredRecords_EmptyPartition record_retrieval_test.go:102: Test obsolete: ledgers removed, SMQ broker handles offset management --- SKIP: TestSeaweedMQHandler_GetStoredRecords_EmptyPartition (0.00s) === RUN TestSeaweedMQHandler_GetStoredRecords_OffsetBeyondHighWaterMark record_retrieval_test.go:108: Test obsolete: ledgers removed, SMQ broker handles offset management --- SKIP: TestSeaweedMQHandler_GetStoredRecords_OffsetBeyondHighWaterMark (0.00s) === RUN TestSeaweedMQHandler_GetStoredRecords_MaxRecordsLimit record_retrieval_test.go:114: Test obsolete: ledgers removed, SMQ broker handles offset management --- SKIP: TestSeaweedMQHandler_GetStoredRecords_MaxRecordsLimit (0.00s) === RUN TestSeaweedMQHandler_MapSeaweedToKafkaOffsets seaweedmq_handler_test.go:15: Test obsolete: ledger system removed, SMQ uses native offsets --- SKIP: TestSeaweedMQHandler_MapSeaweedToKafkaOffsets (0.00s) === RUN TestSeaweedMQHandler_MapSeaweedToKafkaOffsets_EmptyRecords seaweedmq_handler_test.go:21: Test obsolete: ledger system removed, SMQ uses native offsets --- SKIP: TestSeaweedMQHandler_MapSeaweedToKafkaOffsets_EmptyRecords (0.00s) === RUN TestSeaweedMQHandler_ConvertSeaweedToKafkaRecordBatch seaweedmq_handler_test.go:68: Successfully converted 2 records to 119 byte batch --- PASS: TestSeaweedMQHandler_ConvertSeaweedToKafkaRecordBatch (0.00s) === RUN TestSeaweedMQHandler_ConvertSeaweedToKafkaRecordBatch_EmptyRecords --- PASS: TestSeaweedMQHandler_ConvertSeaweedToKafkaRecordBatch_EmptyRecords (0.00s) === RUN TestSeaweedMQHandler_ConvertSingleSeaweedRecord === RUN TestSeaweedMQHandler_ConvertSingleSeaweedRecord/Record_with_key_and_value seaweedmq_handler_test.go:161: Successfully converted single record: 24 bytes === RUN TestSeaweedMQHandler_ConvertSingleSeaweedRecord/Record_with_null_key seaweedmq_handler_test.go:161: Successfully converted single record: 23 bytes === RUN TestSeaweedMQHandler_ConvertSingleSeaweedRecord/Record_with_empty_value seaweedmq_handler_test.go:161: Successfully converted single record: 26 bytes --- PASS: TestSeaweedMQHandler_ConvertSingleSeaweedRecord (0.00s) --- PASS: TestSeaweedMQHandler_ConvertSingleSeaweedRecord/Record_with_key_and_value (0.00s) --- PASS: TestSeaweedMQHandler_ConvertSingleSeaweedRecord/Record_with_null_key (0.00s) --- PASS: TestSeaweedMQHandler_ConvertSingleSeaweedRecord/Record_with_empty_value (0.00s) === RUN TestSeaweedMQHandler_Creation seaweedmq_handler_test.go:171: Integration test requires real SeaweedMQ Broker - run manually with broker available --- SKIP: TestSeaweedMQHandler_Creation (0.00s) === RUN TestSeaweedMQHandler_TopicLifecycle seaweedmq_handler_test.go:190: Integration test requires real SeaweedMQ Broker - run manually with broker available --- SKIP: TestSeaweedMQHandler_TopicLifecycle (0.00s) === RUN TestSeaweedMQHandler_ProduceRecord seaweedmq_handler_test.go:252: Integration test requires real SeaweedMQ Broker - run manually with broker available --- SKIP: TestSeaweedMQHandler_ProduceRecord (0.00s) === RUN TestSeaweedMQHandler_MultiplePartitions seaweedmq_handler_test.go:297: Integration test requires real SeaweedMQ Broker - run manually with broker available --- SKIP: TestSeaweedMQHandler_MultiplePartitions (0.00s) === RUN TestSeaweedMQHandler_FetchRecords seaweedmq_handler_test.go:341: Integration test requires real SeaweedMQ Broker - run manually with broker available --- SKIP: TestSeaweedMQHandler_FetchRecords (0.00s) === RUN TestSeaweedMQHandler_FetchRecords_ErrorHandling seaweedmq_handler_test.go:435: Integration test requires real SeaweedMQ Broker - run manually with broker available --- SKIP: TestSeaweedMQHandler_FetchRecords_ErrorHandling (0.00s) === RUN TestSeaweedMQHandler_ErrorHandling seaweedmq_handler_test.go:485: Integration test requires real SeaweedMQ Broker - run manually with broker available --- SKIP: TestSeaweedMQHandler_ErrorHandling (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/mq/kafka/integration 0.021s === RUN TestBatchConstruction batch_crc_compat_test.go:24: Batch size: 86 bytes batch_crc_compat_test.go:25: Batch hex: 0000: 00000000000000000000004affffffff 0016: 02bb54aa740000000000000000019df8 0032: 0e2e8b0000019df80e2e8bffffffffff 0048: ffffffffffffffffff00000001300000 0064: 0010746573742d6b657914746573742d 0080: 76616c756500 batch_crc_compat_test.go:33: Stored CRC: 0xbb54aa74 batch_crc_compat_test.go:38: Calculated CRC: 0xbb54aa74 (over 65 bytes) batch_crc_compat_test.go:57: CRC verification PASSED batch_crc_compat_test.go:61: === Batch Structure === batch_crc_compat_test.go:238: Base Offset: 0000000000000000 (value: 0) batch_crc_compat_test.go:238: Batch Length: 0000004a (value: 74) batch_crc_compat_test.go:238: Leader Epoch: ffffffff (value: -1) batch_crc_compat_test.go:238: Magic: 02 (value: 2) batch_crc_compat_test.go:238: CRC: bb54aa74 (value: 3142888052) batch_crc_compat_test.go:238: Attributes: 0000 (value: 0) batch_crc_compat_test.go:238: Last Offset Delta: 00000000 (value: 0) batch_crc_compat_test.go:238: Base Timestamp: 0000019df80e2e8b (value: 1777983172235) batch_crc_compat_test.go:238: Max Timestamp: 0000019df80e2e8b (value: 1777983172235) batch_crc_compat_test.go:238: Record Count: 00000001 (value: 1) batch_crc_compat_test.go:79: Batch length correct: 74 --- PASS: TestBatchConstruction (0.00s) === RUN TestMultipleRecordsBatch batch_crc_compat_test.go:93: Batch 1 size: 78, CRC: 0x1dd3e43e batch_crc_compat_test.go:94: Batch 2 size: 78, CRC: 0x309b408e batch_crc_compat_test.go:104: Batch 1 CRC valid batch_crc_compat_test.go:104: Batch 2 CRC valid --- PASS: TestMultipleRecordsBatch (0.00s) === RUN TestVarintEncoding batch_crc_compat_test.go:131: encodeVarint(0) = 00 batch_crc_compat_test.go:131: encodeVarint(1) = 02 batch_crc_compat_test.go:131: encodeVarint(-1) = 01 batch_crc_compat_test.go:131: encodeVarint(5) = 0a batch_crc_compat_test.go:131: encodeVarint(-5) = 09 batch_crc_compat_test.go:131: encodeVarint(127) = fe01 batch_crc_compat_test.go:131: encodeVarint(128) = 8002 batch_crc_compat_test.go:131: encodeVarint(-127) = fd01 batch_crc_compat_test.go:131: encodeVarint(-128) = ff01 --- PASS: TestVarintEncoding (0.00s) === RUN TestClientSideCRCValidation batch_crc_compat_test.go:259: Constructed batch: 86 bytes batch_crc_compat_test.go:268: Client read CRC from header: 0xbb54aa74 batch_crc_compat_test.go:272: Client calculated CRC: 0xbb54aa74 batch_crc_compat_test.go:280: CLIENT WOULD ACCEPT: CRC valid --- PASS: TestClientSideCRCValidation (0.00s) === RUN TestConcurrentBatchConstruction batch_crc_compat_test.go:316: All 10 concurrent batches have valid CRCs --- PASS: TestConcurrentBatchConstruction (0.00s) === RUN TestProductionBatchConstruction batch_crc_compat_test.go:338: Production batch size: 86 bytes batch_crc_compat_test.go:348: Production batch CRC: stored=0x9e5079e0 calculated=0x9e5079e0 batch_crc_compat_test.go:354: PRODUCTION CODE CRC VALID --- PASS: TestProductionBatchConstruction (0.00s) === RUN TestHeartbeatResponseFormat_V0 --- PASS: TestHeartbeatResponseFormat_V0 (0.00s) === RUN TestHeartbeatResponseFormat_V1ToV3 === RUN TestHeartbeatResponseFormat_V1ToV3/v1 === RUN TestHeartbeatResponseFormat_V1ToV3/v2 === RUN TestHeartbeatResponseFormat_V1ToV3/v3 --- PASS: TestHeartbeatResponseFormat_V1ToV3 (0.00s) --- PASS: TestHeartbeatResponseFormat_V1ToV3/v1 (0.00s) --- PASS: TestHeartbeatResponseFormat_V1ToV3/v2 (0.00s) --- PASS: TestHeartbeatResponseFormat_V1ToV3/v3 (0.00s) === RUN TestHeartbeatResponseFormat_V4Plus === RUN TestHeartbeatResponseFormat_V4Plus/v4 --- PASS: TestHeartbeatResponseFormat_V4Plus (0.00s) --- PASS: TestHeartbeatResponseFormat_V4Plus/v4 (0.00s) === RUN TestHeartbeatResponseFormat_ErrorCode === RUN TestHeartbeatResponseFormat_ErrorCode/None === RUN TestHeartbeatResponseFormat_ErrorCode/UnknownMemberID === RUN TestHeartbeatResponseFormat_ErrorCode/IllegalGeneration === RUN TestHeartbeatResponseFormat_ErrorCode/RebalanceInProgress --- PASS: TestHeartbeatResponseFormat_ErrorCode (0.00s) --- PASS: TestHeartbeatResponseFormat_ErrorCode/None (0.00s) --- PASS: TestHeartbeatResponseFormat_ErrorCode/UnknownMemberID (0.00s) --- PASS: TestHeartbeatResponseFormat_ErrorCode/IllegalGeneration (0.00s) --- PASS: TestHeartbeatResponseFormat_ErrorCode/RebalanceInProgress (0.00s) === RUN TestHeartbeatResponseFormat_BugReproduce heartbeat_response_format_test.go:157: This test documents the original bug - skip to avoid false failures --- SKIP: TestHeartbeatResponseFormat_BugReproduce (0.00s) === RUN TestMetadataRequestBlocking metadata_blocking_test.go:22: This test documents the original bug. The fix is in the broker's ListTopics with filer timeout. Run TestMetadataRequestWithFastMock to verify fast path works. --- SKIP: TestMetadataRequestBlocking (0.00s) === RUN TestMetadataRequestWithFastMock metadata_blocking_test.go:68: Testing Metadata handler with fast-responding backend... metadata_blocking_test.go:88: ✓ Metadata completed in 4.008µs (283 bytes) --- PASS: TestMetadataRequestWithFastMock (0.00s) === RUN TestMetadataRequestWithTimeoutFix metadata_blocking_test.go:98: Testing Metadata handler with timeout-aware backend... metadata_blocking_test.go:115: Metadata completed in 2.007904349s metadata_blocking_test.go:121: ✓ Metadata returned response (33 bytes) without blocking --- PASS: TestMetadataRequestWithTimeoutFix (2.01s) === RUN TestOffsetCommitFetchPattern offset_fetch_pattern_test.go:18: Integration test - requires mock broker setup --- SKIP: TestOffsetCommitFetchPattern (0.00s) === RUN TestOffsetFetchAfterCommit offset_fetch_pattern_test.go:98: Integration test - requires mock broker setup --- SKIP: TestOffsetFetchAfterCommit (0.00s) === RUN TestOffsetPersistencePattern offset_fetch_pattern_test.go:136: Integration test - requires mock broker setup --- SKIP: TestOffsetPersistencePattern (0.00s) === RUN TestOffsetCommitConsistency offset_fetch_pattern_test.go:177: Integration test - requires mock broker setup --- SKIP: TestOffsetCommitConsistency (0.00s) === RUN TestLongPollWithOffsetCommit offset_fetch_pattern_test.go:210: Integration test - requires mock broker setup --- SKIP: TestLongPollWithOffsetCommit (0.00s) === RUN TestRecordBatchParser_ParseRecordBatch --- PASS: TestRecordBatchParser_ParseRecordBatch (0.00s) === RUN TestRecordBatchParser_ParseRecordBatch_TooSmall --- PASS: TestRecordBatchParser_ParseRecordBatch_TooSmall (0.00s) === RUN TestRecordBatchParser_ParseRecordBatch_InvalidMagic --- PASS: TestRecordBatchParser_ParseRecordBatch_InvalidMagic (0.00s) === RUN TestRecordBatchParser_Compression === RUN TestRecordBatchParser_Compression/none === RUN TestRecordBatchParser_Compression/gzip === RUN TestRecordBatchParser_Compression/snappy === RUN TestRecordBatchParser_Compression/lz4 === RUN TestRecordBatchParser_Compression/zstd --- PASS: TestRecordBatchParser_Compression (0.00s) --- PASS: TestRecordBatchParser_Compression/none (0.00s) --- PASS: TestRecordBatchParser_Compression/gzip (0.00s) --- PASS: TestRecordBatchParser_Compression/snappy (0.00s) --- PASS: TestRecordBatchParser_Compression/lz4 (0.00s) --- PASS: TestRecordBatchParser_Compression/zstd (0.00s) === RUN TestRecordBatchParser_CRCValidation === RUN TestRecordBatchParser_CRCValidation/Valid_CRC === RUN TestRecordBatchParser_CRCValidation/Invalid_CRC === RUN TestRecordBatchParser_CRCValidation/Skip_CRC_validation --- PASS: TestRecordBatchParser_CRCValidation (0.00s) --- PASS: TestRecordBatchParser_CRCValidation/Valid_CRC (0.00s) --- PASS: TestRecordBatchParser_CRCValidation/Invalid_CRC (0.00s) --- PASS: TestRecordBatchParser_CRCValidation/Skip_CRC_validation (0.00s) === RUN TestRecordBatchParser_ExtractRecords --- PASS: TestRecordBatchParser_ExtractRecords (0.00s) === RUN TestCompressRecordBatch === RUN TestCompressRecordBatch/No_compression === RUN TestCompressRecordBatch/Gzip_compression --- PASS: TestCompressRecordBatch (0.00s) --- PASS: TestCompressRecordBatch/No_compression (0.00s) --- PASS: TestCompressRecordBatch/Gzip_compression (0.00s) === RUN TestCreateRecordBatch === RUN TestCreateRecordBatch/Uncompressed_batch === RUN TestCreateRecordBatch/Compressed_batch --- PASS: TestCreateRecordBatch (0.00s) --- PASS: TestCreateRecordBatch/Uncompressed_batch (0.00s) --- PASS: TestCreateRecordBatch/Compressed_batch (0.00s) === RUN TestRecordBatchParser_InvalidRecordCount --- PASS: TestRecordBatchParser_InvalidRecordCount (0.00s) === RUN TestExtractAllRecords_RealKafkaFormat record_extraction_test.go:125: Created batch of 85 bytes, record value: {"type":"string"} record_extraction_test.go:150: Successfully extracted record with value: {"type":"string"} --- PASS: TestExtractAllRecords_RealKafkaFormat (0.00s) === RUN TestExtractAllRecords_CompressedBatch record_extraction_test.go:157: Compressed batch test - implement after uncompressed works --- SKIP: TestExtractAllRecords_CompressedBatch (0.00s) === RUN TestResponseFormatsNoCorrelationID === RUN TestResponseFormatsNoCorrelationID/ApiVersions_v0 response_format_test.go:153: Testing ApiVersions_v0: ApiVersions v0 should not include correlation ID in body response_format_test.go:160: ✓ API Key 18 Version 0: Correlation ID should be handled by writeResponseWithHeader === RUN TestResponseFormatsNoCorrelationID/ApiVersions_v4 response_format_test.go:153: Testing ApiVersions_v4: ApiVersions v4 (flexible) should not include correlation ID in body response_format_test.go:160: ✓ API Key 18 Version 4: Correlation ID should be handled by writeResponseWithHeader === RUN TestResponseFormatsNoCorrelationID/Metadata_v0 response_format_test.go:153: Testing Metadata_v0: Metadata v0 should not include correlation ID in body response_format_test.go:160: ✓ API Key 3 Version 0: Correlation ID should be handled by writeResponseWithHeader === RUN TestResponseFormatsNoCorrelationID/Metadata_v7 response_format_test.go:153: Testing Metadata_v7: Metadata v7 should not include correlation ID in body response_format_test.go:160: ✓ API Key 3 Version 7: Correlation ID should be handled by writeResponseWithHeader === RUN TestResponseFormatsNoCorrelationID/FindCoordinator_v0 response_format_test.go:153: Testing FindCoordinator_v0: FindCoordinator v0 should not include correlation ID in body response_format_test.go:160: ✓ API Key 10 Version 0: Correlation ID should be handled by writeResponseWithHeader === RUN TestResponseFormatsNoCorrelationID/FindCoordinator_v2 response_format_test.go:153: Testing FindCoordinator_v2: FindCoordinator v2 should not include correlation ID in body response_format_test.go:160: ✓ API Key 10 Version 2: Correlation ID should be handled by writeResponseWithHeader === RUN TestResponseFormatsNoCorrelationID/DescribeConfigs_v0 response_format_test.go:153: Testing DescribeConfigs_v0: DescribeConfigs v0 should not include correlation ID in body response_format_test.go:160: ✓ API Key 32 Version 0: Correlation ID should be handled by writeResponseWithHeader === RUN TestResponseFormatsNoCorrelationID/DescribeConfigs_v4 response_format_test.go:153: Testing DescribeConfigs_v4: DescribeConfigs v4 (flexible) should not include correlation ID in body response_format_test.go:160: ✓ API Key 32 Version 4: Correlation ID should be handled by writeResponseWithHeader === RUN TestResponseFormatsNoCorrelationID/DescribeCluster_v0 response_format_test.go:153: Testing DescribeCluster_v0: DescribeCluster v0 (flexible) should not include correlation ID in body response_format_test.go:160: ✓ API Key 60 Version 0: Correlation ID should be handled by writeResponseWithHeader === RUN TestResponseFormatsNoCorrelationID/InitProducerId_v0 response_format_test.go:153: Testing InitProducerId_v0: InitProducerId v0 should not include correlation ID in body response_format_test.go:160: ✓ API Key 22 Version 0: Correlation ID should be handled by writeResponseWithHeader === RUN TestResponseFormatsNoCorrelationID/InitProducerId_v4 response_format_test.go:153: Testing InitProducerId_v4: InitProducerId v4 (flexible) should not include correlation ID in body response_format_test.go:160: ✓ API Key 22 Version 4: Correlation ID should be handled by writeResponseWithHeader === RUN TestResponseFormatsNoCorrelationID/JoinGroup_v0 response_format_test.go:153: Testing JoinGroup_v0: JoinGroup v0 should not include correlation ID in body response_format_test.go:160: ✓ API Key 11 Version 0: Correlation ID should be handled by writeResponseWithHeader === RUN TestResponseFormatsNoCorrelationID/SyncGroup_v0 response_format_test.go:153: Testing SyncGroup_v0: SyncGroup v0 should not include correlation ID in body response_format_test.go:160: ✓ API Key 14 Version 0: Correlation ID should be handled by writeResponseWithHeader === RUN TestResponseFormatsNoCorrelationID/Heartbeat_v0 response_format_test.go:153: Testing Heartbeat_v0: Heartbeat v0 should not include correlation ID in body response_format_test.go:160: ✓ API Key 12 Version 0: Correlation ID should be handled by writeResponseWithHeader === RUN TestResponseFormatsNoCorrelationID/LeaveGroup_v0 response_format_test.go:153: Testing LeaveGroup_v0: LeaveGroup v0 should not include correlation ID in body response_format_test.go:160: ✓ API Key 13 Version 0: Correlation ID should be handled by writeResponseWithHeader === RUN TestResponseFormatsNoCorrelationID/OffsetFetch_v0 response_format_test.go:153: Testing OffsetFetch_v0: OffsetFetch v0 should not include correlation ID in body response_format_test.go:160: ✓ API Key 9 Version 0: Correlation ID should be handled by writeResponseWithHeader === RUN TestResponseFormatsNoCorrelationID/OffsetCommit_v0 response_format_test.go:153: Testing OffsetCommit_v0: OffsetCommit v0 should not include correlation ID in body response_format_test.go:160: ✓ API Key 8 Version 0: Correlation ID should be handled by writeResponseWithHeader === RUN TestResponseFormatsNoCorrelationID/Produce_v0 response_format_test.go:153: Testing Produce_v0: Produce v0 should not include correlation ID in body response_format_test.go:160: ✓ API Key 0 Version 0: Correlation ID should be handled by writeResponseWithHeader === RUN TestResponseFormatsNoCorrelationID/Produce_v7 response_format_test.go:153: Testing Produce_v7: Produce v7 should not include correlation ID in body response_format_test.go:160: ✓ API Key 0 Version 7: Correlation ID should be handled by writeResponseWithHeader === RUN TestResponseFormatsNoCorrelationID/Fetch_v0 response_format_test.go:153: Testing Fetch_v0: Fetch v0 should not include correlation ID in body response_format_test.go:160: ✓ API Key 1 Version 0: Correlation ID should be handled by writeResponseWithHeader === RUN TestResponseFormatsNoCorrelationID/Fetch_v7 response_format_test.go:153: Testing Fetch_v7: Fetch v7 should not include correlation ID in body response_format_test.go:160: ✓ API Key 1 Version 7: Correlation ID should be handled by writeResponseWithHeader --- PASS: TestResponseFormatsNoCorrelationID (0.00s) --- PASS: TestResponseFormatsNoCorrelationID/ApiVersions_v0 (0.00s) --- PASS: TestResponseFormatsNoCorrelationID/ApiVersions_v4 (0.00s) --- PASS: TestResponseFormatsNoCorrelationID/Metadata_v0 (0.00s) --- PASS: TestResponseFormatsNoCorrelationID/Metadata_v7 (0.00s) --- PASS: TestResponseFormatsNoCorrelationID/FindCoordinator_v0 (0.00s) --- PASS: TestResponseFormatsNoCorrelationID/FindCoordinator_v2 (0.00s) --- PASS: TestResponseFormatsNoCorrelationID/DescribeConfigs_v0 (0.00s) --- PASS: TestResponseFormatsNoCorrelationID/DescribeConfigs_v4 (0.00s) --- PASS: TestResponseFormatsNoCorrelationID/DescribeCluster_v0 (0.00s) --- PASS: TestResponseFormatsNoCorrelationID/InitProducerId_v0 (0.00s) --- PASS: TestResponseFormatsNoCorrelationID/InitProducerId_v4 (0.00s) --- PASS: TestResponseFormatsNoCorrelationID/JoinGroup_v0 (0.00s) --- PASS: TestResponseFormatsNoCorrelationID/SyncGroup_v0 (0.00s) --- PASS: TestResponseFormatsNoCorrelationID/Heartbeat_v0 (0.00s) --- PASS: TestResponseFormatsNoCorrelationID/LeaveGroup_v0 (0.00s) --- PASS: TestResponseFormatsNoCorrelationID/OffsetFetch_v0 (0.00s) --- PASS: TestResponseFormatsNoCorrelationID/OffsetCommit_v0 (0.00s) --- PASS: TestResponseFormatsNoCorrelationID/Produce_v0 (0.00s) --- PASS: TestResponseFormatsNoCorrelationID/Produce_v7 (0.00s) --- PASS: TestResponseFormatsNoCorrelationID/Fetch_v0 (0.00s) --- PASS: TestResponseFormatsNoCorrelationID/Fetch_v7 (0.00s) === RUN TestFlexibleResponseHeaderFormat === RUN TestFlexibleResponseHeaderFormat/ApiVersions_v0 response_format_test.go:252: ✓ ApiVersions_v0: correctly identified as flexible=false === RUN TestFlexibleResponseHeaderFormat/ApiVersions_v3 response_format_test.go:252: ✓ ApiVersions_v3: correctly identified as flexible=false === RUN TestFlexibleResponseHeaderFormat/ApiVersions_v4 response_format_test.go:252: ✓ ApiVersions_v4: correctly identified as flexible=false === RUN TestFlexibleResponseHeaderFormat/Metadata_v0 response_format_test.go:252: ✓ Metadata_v0: correctly identified as flexible=false === RUN TestFlexibleResponseHeaderFormat/Metadata_v7 response_format_test.go:252: ✓ Metadata_v7: correctly identified as flexible=false === RUN TestFlexibleResponseHeaderFormat/Metadata_v9 response_format_test.go:252: ✓ Metadata_v9: correctly identified as flexible=true === RUN TestFlexibleResponseHeaderFormat/Produce_v0 response_format_test.go:252: ✓ Produce_v0: correctly identified as flexible=false === RUN TestFlexibleResponseHeaderFormat/Produce_v7 response_format_test.go:252: ✓ Produce_v7: correctly identified as flexible=false === RUN TestFlexibleResponseHeaderFormat/Produce_v9 response_format_test.go:252: ✓ Produce_v9: correctly identified as flexible=true === RUN TestFlexibleResponseHeaderFormat/Fetch_v0 response_format_test.go:252: ✓ Fetch_v0: correctly identified as flexible=false === RUN TestFlexibleResponseHeaderFormat/Fetch_v7 response_format_test.go:252: ✓ Fetch_v7: correctly identified as flexible=false === RUN TestFlexibleResponseHeaderFormat/Fetch_v12 response_format_test.go:252: ✓ Fetch_v12: correctly identified as flexible=true === RUN TestFlexibleResponseHeaderFormat/FindCoordinator_v0 response_format_test.go:252: ✓ FindCoordinator_v0: correctly identified as flexible=false === RUN TestFlexibleResponseHeaderFormat/FindCoordinator_v2 response_format_test.go:252: ✓ FindCoordinator_v2: correctly identified as flexible=false === RUN TestFlexibleResponseHeaderFormat/FindCoordinator_v3 response_format_test.go:252: ✓ FindCoordinator_v3: correctly identified as flexible=true === RUN TestFlexibleResponseHeaderFormat/JoinGroup_v0 response_format_test.go:252: ✓ JoinGroup_v0: correctly identified as flexible=false === RUN TestFlexibleResponseHeaderFormat/JoinGroup_v5 response_format_test.go:252: ✓ JoinGroup_v5: correctly identified as flexible=false === RUN TestFlexibleResponseHeaderFormat/JoinGroup_v6 response_format_test.go:252: ✓ JoinGroup_v6: correctly identified as flexible=true === RUN TestFlexibleResponseHeaderFormat/SyncGroup_v0 response_format_test.go:252: ✓ SyncGroup_v0: correctly identified as flexible=false === RUN TestFlexibleResponseHeaderFormat/SyncGroup_v3 response_format_test.go:252: ✓ SyncGroup_v3: correctly identified as flexible=false === RUN TestFlexibleResponseHeaderFormat/SyncGroup_v4 response_format_test.go:252: ✓ SyncGroup_v4: correctly identified as flexible=true === RUN TestFlexibleResponseHeaderFormat/Heartbeat_v0 response_format_test.go:252: ✓ Heartbeat_v0: correctly identified as flexible=false === RUN TestFlexibleResponseHeaderFormat/Heartbeat_v3 response_format_test.go:252: ✓ Heartbeat_v3: correctly identified as flexible=false === RUN TestFlexibleResponseHeaderFormat/Heartbeat_v4 response_format_test.go:252: ✓ Heartbeat_v4: correctly identified as flexible=true === RUN TestFlexibleResponseHeaderFormat/LeaveGroup_v0 response_format_test.go:252: ✓ LeaveGroup_v0: correctly identified as flexible=false === RUN TestFlexibleResponseHeaderFormat/LeaveGroup_v3 response_format_test.go:252: ✓ LeaveGroup_v3: correctly identified as flexible=false === RUN TestFlexibleResponseHeaderFormat/LeaveGroup_v4 response_format_test.go:252: ✓ LeaveGroup_v4: correctly identified as flexible=true === RUN TestFlexibleResponseHeaderFormat/OffsetFetch_v0 response_format_test.go:252: ✓ OffsetFetch_v0: correctly identified as flexible=false === RUN TestFlexibleResponseHeaderFormat/OffsetFetch_v5 response_format_test.go:252: ✓ OffsetFetch_v5: correctly identified as flexible=false === RUN TestFlexibleResponseHeaderFormat/OffsetFetch_v6 response_format_test.go:252: ✓ OffsetFetch_v6: correctly identified as flexible=true === RUN TestFlexibleResponseHeaderFormat/OffsetCommit_v0 response_format_test.go:252: ✓ OffsetCommit_v0: correctly identified as flexible=false === RUN TestFlexibleResponseHeaderFormat/OffsetCommit_v7 response_format_test.go:252: ✓ OffsetCommit_v7: correctly identified as flexible=false === RUN TestFlexibleResponseHeaderFormat/OffsetCommit_v8 response_format_test.go:252: ✓ OffsetCommit_v8: correctly identified as flexible=true === RUN TestFlexibleResponseHeaderFormat/DescribeConfigs_v0 response_format_test.go:252: ✓ DescribeConfigs_v0: correctly identified as flexible=false === RUN TestFlexibleResponseHeaderFormat/DescribeConfigs_v3 response_format_test.go:252: ✓ DescribeConfigs_v3: correctly identified as flexible=false === RUN TestFlexibleResponseHeaderFormat/DescribeConfigs_v4 response_format_test.go:252: ✓ DescribeConfigs_v4: correctly identified as flexible=true === RUN TestFlexibleResponseHeaderFormat/InitProducerId_v0 response_format_test.go:252: ✓ InitProducerId_v0: correctly identified as flexible=false === RUN TestFlexibleResponseHeaderFormat/InitProducerId_v1 response_format_test.go:252: ✓ InitProducerId_v1: correctly identified as flexible=false === RUN TestFlexibleResponseHeaderFormat/InitProducerId_v2 response_format_test.go:252: ✓ InitProducerId_v2: correctly identified as flexible=true === RUN TestFlexibleResponseHeaderFormat/DescribeCluster_v0 response_format_test.go:252: ✓ DescribeCluster_v0: correctly identified as flexible=true === RUN TestFlexibleResponseHeaderFormat/DescribeCluster_v1 response_format_test.go:252: ✓ DescribeCluster_v1: correctly identified as flexible=true --- PASS: TestFlexibleResponseHeaderFormat (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/ApiVersions_v0 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/ApiVersions_v3 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/ApiVersions_v4 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/Metadata_v0 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/Metadata_v7 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/Metadata_v9 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/Produce_v0 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/Produce_v7 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/Produce_v9 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/Fetch_v0 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/Fetch_v7 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/Fetch_v12 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/FindCoordinator_v0 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/FindCoordinator_v2 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/FindCoordinator_v3 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/JoinGroup_v0 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/JoinGroup_v5 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/JoinGroup_v6 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/SyncGroup_v0 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/SyncGroup_v3 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/SyncGroup_v4 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/Heartbeat_v0 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/Heartbeat_v3 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/Heartbeat_v4 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/LeaveGroup_v0 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/LeaveGroup_v3 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/LeaveGroup_v4 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/OffsetFetch_v0 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/OffsetFetch_v5 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/OffsetFetch_v6 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/OffsetCommit_v0 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/OffsetCommit_v7 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/OffsetCommit_v8 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/DescribeConfigs_v0 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/DescribeConfigs_v3 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/DescribeConfigs_v4 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/InitProducerId_v0 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/InitProducerId_v1 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/InitProducerId_v2 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/DescribeCluster_v0 (0.00s) --- PASS: TestFlexibleResponseHeaderFormat/DescribeCluster_v1 (0.00s) === RUN TestCorrelationIDNotInResponseBody === RUN TestCorrelationIDNotInResponseBody/DetectCorrelationIDInBody response_format_test.go:283: ✓ Successfully detected correlation ID in body (bad response) response_format_test.go:294: ✓ Correctly identified response without correlation ID --- PASS: TestCorrelationIDNotInResponseBody (0.00s) --- PASS: TestCorrelationIDNotInResponseBody/DetectCorrelationIDInBody (0.00s) === RUN TestWireProtocolFormat response_format_test.go:301: Kafka Wire Protocol Format (KIP-482): response_format_test.go:302: Non-flexible responses: response_format_test.go:303: [Size: 4 bytes][Correlation ID: 4 bytes][Response Body] response_format_test.go:304: response_format_test.go:305: Flexible responses (header version 1+): response_format_test.go:306: [Size: 4 bytes][Correlation ID: 4 bytes][Tagged Fields: 1+ bytes][Response Body] response_format_test.go:307: response_format_test.go:308: Size field: includes correlation ID + tagged fields + body response_format_test.go:309: Tagged Fields: varint-encoded, 0x00 for empty response_format_test.go:310: response_format_test.go:311: CRITICAL: Response body should NEVER include correlation ID! response_format_test.go:312: It is written ONLY by writeResponseWithHeader --- PASS: TestWireProtocolFormat (0.00s) === RUN TestJoinGroupResponseStructure response_validation_example_test.go:14: This is a demonstration test - shows what we SHOULD check --- SKIP: TestJoinGroupResponseStructure (0.00s) === RUN TestProduceResponseStructure response_validation_example_test.go:48: This is a demonstration test - shows what we SHOULD check --- SKIP: TestProduceResponseStructure (0.00s) === RUN TestCompareWithReferenceImplementation response_validation_example_test.go:64: This would require a reference Kafka broker or client library --- SKIP: TestCompareWithReferenceImplementation (0.00s) === RUN TestCurrentTestingApproach response_validation_example_test.go:82: Current testing strategy (as of Oct 2025): response_validation_example_test.go:83: response_validation_example_test.go:84: LEVEL 1: Static Code Analysis response_validation_example_test.go:85: Tool: check_responses.sh response_validation_example_test.go:86: Checks: Correlation ID patterns response_validation_example_test.go:87: Coverage: Good for known issues response_validation_example_test.go:88: response_validation_example_test.go:89: LEVEL 2: Protocol Format Tests response_validation_example_test.go:90: Tool: TestFlexibleResponseHeaderFormat response_validation_example_test.go:91: Checks: Flexible vs non-flexible classification response_validation_example_test.go:92: Coverage: Header format only response_validation_example_test.go:93: response_validation_example_test.go:94: LEVEL 3: Integration Testing response_validation_example_test.go:95: Tool: Schema Registry, kafka-go, Sarama, Java client response_validation_example_test.go:96: Checks: Real client compatibility response_validation_example_test.go:97: Coverage: Complete but requires manual debugging response_validation_example_test.go:98: response_validation_example_test.go:99: MISSING: Field-level response body validation response_validation_example_test.go:100: This is why JoinGroup issue wasn't caught by unit tests --- PASS: TestCurrentTestingApproach (0.00s) === RUN TestMetadataResponseHasBrokers response_validation_example_test.go:115: Example of what a real field-level test would look like --- SKIP: TestMetadataResponseHasBrokers (0.00s) === RUN TestSyncGroup_RaceCondition_BugDocumentation syncgroup_assignment_test.go:52: Original bug: Non-leader in Stable state would trigger server-side assignment syncgroup_assignment_test.go:53: This caused duplicate partition assignments and message re-reads (66.7% duplicates) syncgroup_assignment_test.go:54: Fix: Check if member is non-leader with empty assignments, regardless of group state --- PASS: TestSyncGroup_RaceCondition_BugDocumentation (0.00s) === RUN TestSyncGroup_FixVerification === RUN TestSyncGroup_FixVerification/Leader_with_assignments syncgroup_assignment_test.go:125: ✓ Leader provides client-side assignments, processes them: isLeader=true hasAssignments=true shouldWait=false === RUN TestSyncGroup_FixVerification/Non-leader_without_assignments_(PreparingRebalance) syncgroup_assignment_test.go:125: ✓ Non-leader waits for leader to provide assignments: isLeader=false hasAssignments=false shouldWait=true === RUN TestSyncGroup_FixVerification/Non-leader_without_assignments_(Stable)_-_THE_BUG_CASE syncgroup_assignment_test.go:125: ✓ Non-leader retrieves assignment from leader (already processed): isLeader=false hasAssignments=false shouldWait=true === RUN TestSyncGroup_FixVerification/Leader_without_assignments syncgroup_assignment_test.go:125: ✓ Edge case: server-side assignment (should not happen with Sarama): isLeader=true hasAssignments=false shouldWait=false --- PASS: TestSyncGroup_FixVerification (0.00s) --- PASS: TestSyncGroup_FixVerification/Leader_with_assignments (0.00s) --- PASS: TestSyncGroup_FixVerification/Non-leader_without_assignments_(PreparingRebalance) (0.00s) --- PASS: TestSyncGroup_FixVerification/Non-leader_without_assignments_(Stable)_-_THE_BUG_CASE (0.00s) --- PASS: TestSyncGroup_FixVerification/Leader_without_assignments (0.00s) === RUN TestParseSyncGroupRequestV5SkipsProtocolFields --- PASS: TestParseSyncGroupRequestV5SkipsProtocolFields (0.00s) === RUN TestSyncGroupSchemaRegistryV5LeaderAssignmentDoesNotRebalance --- PASS: TestSyncGroupSchemaRegistryV5LeaderAssignmentDoesNotRebalance (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/mq/kafka/protocol 2.045s === RUN TestNewAvroDecoder === RUN TestNewAvroDecoder/valid_record_schema === RUN TestNewAvroDecoder/valid_enum_schema === RUN TestNewAvroDecoder/invalid_schema === RUN TestNewAvroDecoder/empty_schema --- PASS: TestNewAvroDecoder (0.00s) --- PASS: TestNewAvroDecoder/valid_record_schema (0.00s) --- PASS: TestNewAvroDecoder/valid_enum_schema (0.00s) --- PASS: TestNewAvroDecoder/invalid_schema (0.00s) --- PASS: TestNewAvroDecoder/empty_schema (0.00s) === RUN TestAvroDecoder_Decode --- PASS: TestAvroDecoder_Decode (0.00s) === RUN TestAvroDecoder_DecodeToRecordValue --- PASS: TestAvroDecoder_DecodeToRecordValue (0.00s) === RUN TestMapToRecordValue --- PASS: TestMapToRecordValue (0.00s) === RUN TestGoValueToSchemaValue === RUN TestGoValueToSchemaValue/nil_value === RUN TestGoValueToSchemaValue/bool_value === RUN TestGoValueToSchemaValue/int32_value === RUN TestGoValueToSchemaValue/int64_value === RUN TestGoValueToSchemaValue/string_value === RUN TestGoValueToSchemaValue/bytes_value === RUN TestGoValueToSchemaValue/time_value --- PASS: TestGoValueToSchemaValue (0.00s) --- PASS: TestGoValueToSchemaValue/nil_value (0.00s) --- PASS: TestGoValueToSchemaValue/bool_value (0.00s) --- PASS: TestGoValueToSchemaValue/int32_value (0.00s) --- PASS: TestGoValueToSchemaValue/int64_value (0.00s) --- PASS: TestGoValueToSchemaValue/string_value (0.00s) --- PASS: TestGoValueToSchemaValue/bytes_value (0.00s) --- PASS: TestGoValueToSchemaValue/time_value (0.00s) === RUN TestInferRecordTypeFromMap --- PASS: TestInferRecordTypeFromMap (0.00s) === RUN TestInferTypeFromValue === RUN TestInferTypeFromValue/nil === RUN TestInferTypeFromValue/bool === RUN TestInferTypeFromValue/int32 === RUN TestInferTypeFromValue/int64 === RUN TestInferTypeFromValue/int === RUN TestInferTypeFromValue/float32 === RUN TestInferTypeFromValue/float64 === RUN TestInferTypeFromValue/string === RUN TestInferTypeFromValue/bytes === RUN TestInferTypeFromValue/time --- PASS: TestInferTypeFromValue (0.00s) --- PASS: TestInferTypeFromValue/nil (0.00s) --- PASS: TestInferTypeFromValue/bool (0.00s) --- PASS: TestInferTypeFromValue/int32 (0.00s) --- PASS: TestInferTypeFromValue/int64 (0.00s) --- PASS: TestInferTypeFromValue/int (0.00s) --- PASS: TestInferTypeFromValue/float32 (0.00s) --- PASS: TestInferTypeFromValue/float64 (0.00s) --- PASS: TestInferTypeFromValue/string (0.00s) --- PASS: TestInferTypeFromValue/bytes (0.00s) --- PASS: TestInferTypeFromValue/time (0.00s) === RUN TestAvroDecoder_Integration --- PASS: TestAvroDecoder_Integration (0.00s) === RUN TestBrokerClient_FetchIntegration === RUN TestBrokerClient_FetchIntegration/Fetch_Schema_Integration I0505 12:12:52.235363 connect_to_sub_coordinator.go:33 broker coordinator on localhost:17777: getOrCreateConnection localhost:17777: fail to dial localhost:17777: grpc: no transport security set (use grpc.WithTransportCredentials(insecure.NewCredentials()) explicitly or set credentials) I0505 12:12:52.235525 connect_to_sub_coordinator.go:100 subscriber kafka.fetch-test-topic/kafka-gateway waiting for more assignments broker_client_fetch_test.go:57: Fetch integration test completed - connection failed as expected with mock broker: failed to get subscriber for topic fetch-test-topic: failed to connect to brokers: connection timeout === RUN TestBrokerClient_FetchIntegration/Envelope_Reconstruction broker_client_fetch_test.go:88: Expected error in envelope reconstruction due to schema mismatch: failed to encode RecordValue: failed to encode to Avro binary: cannot encode binary record "FetchTest" field "id": schema does not specify default value and no value provided === RUN TestBrokerClient_FetchIntegration/Subscriber_Management I0505 12:12:52.336812 connect_to_sub_coordinator.go:33 broker coordinator on localhost:17777: getOrCreateConnection localhost:17777: fail to dial localhost:17777: grpc: no transport security set (use grpc.WithTransportCredentials(insecure.NewCredentials()) explicitly or set credentials) I0505 12:12:52.336819 connect_to_sub_coordinator.go:100 subscriber kafka.subscriber-test-topic/kafka-gateway waiting for more assignments broker_client_fetch_test.go:106: Subscriber creation failed as expected with mock brokers: failed to connect to brokers: connection timeout broker_client_fetch_test.go:118: Active subscribers: 0 --- PASS: TestBrokerClient_FetchIntegration (0.20s) --- PASS: TestBrokerClient_FetchIntegration/Fetch_Schema_Integration (0.10s) --- PASS: TestBrokerClient_FetchIntegration/Envelope_Reconstruction (0.00s) --- PASS: TestBrokerClient_FetchIntegration/Subscriber_Management (0.10s) === RUN TestBrokerClient_RoundTripIntegration === RUN TestBrokerClient_RoundTripIntegration/Complete_Schema_Workflow broker_client_fetch_test.go:182: Round-trip test completed - schema validation and processing successful === RUN TestBrokerClient_RoundTripIntegration/Error_Handling_in_Fetch I0505 12:12:52.438561 connect_to_sub_coordinator.go:33 broker coordinator on localhost:17777: getOrCreateConnection localhost:17777: fail to dial localhost:17777: grpc: no transport security set (use grpc.WithTransportCredentials(insecure.NewCredentials()) explicitly or set credentials) I0505 12:12:52.438567 connect_to_sub_coordinator.go:100 subscriber kafka.non-existent-topic/kafka-gateway waiting for more assignments broker_client_fetch_test.go:200: Reconstruction result: failed to encode RecordValue: failed to get schema for encoding: schema registry error 404: {"error_code": 40403, "message": "Schema not found"} --- PASS: TestBrokerClient_RoundTripIntegration (0.10s) --- PASS: TestBrokerClient_RoundTripIntegration/Complete_Schema_Workflow (0.00s) --- PASS: TestBrokerClient_RoundTripIntegration/Error_Handling_in_Fetch (0.10s) === RUN TestBrokerClient_SubscriberConfiguration === RUN TestBrokerClient_SubscriberConfiguration/Subscriber_Cache_Management I0505 12:12:52.539795 connect_to_sub_coordinator.go:33 broker coordinator on localhost:17777: getOrCreateConnection localhost:17777: fail to dial localhost:17777: grpc: no transport security set (use grpc.WithTransportCredentials(insecure.NewCredentials()) explicitly or set credentials) I0505 12:12:52.539845 connect_to_sub_coordinator.go:100 subscriber kafka.cache-test-topic/kafka-gateway waiting for more assignments I0505 12:12:52.640905 connect_to_sub_coordinator.go:33 broker coordinator on localhost:17777: getOrCreateConnection localhost:17777: fail to dial localhost:17777: grpc: no transport security set (use grpc.WithTransportCredentials(insecure.NewCredentials()) explicitly or set credentials) I0505 12:12:52.640919 connect_to_sub_coordinator.go:100 subscriber kafka.cache-test-topic/kafka-gateway waiting for more assignments broker_client_fetch_test.go:230: Subscriber creation results: err1=failed to connect to brokers: connection timeout, err2=failed to connect to brokers: connection timeout broker_client_fetch_test.go:235: Broker client remains functional after subscriber creation attempts === RUN TestBrokerClient_SubscriberConfiguration/Multiple_Topic_Subscribers I0505 12:12:52.741824 connect_to_sub_coordinator.go:33 broker coordinator on localhost:17777: getOrCreateConnection localhost:17777: fail to dial localhost:17777: grpc: no transport security set (use grpc.WithTransportCredentials(insecure.NewCredentials()) explicitly or set credentials) I0505 12:12:52.741839 connect_to_sub_coordinator.go:100 subscriber kafka.topic-a/kafka-gateway waiting for more assignments broker_client_fetch_test.go:244: Subscriber creation for topic-a: failed to connect to brokers: connection timeout I0505 12:12:52.842725 connect_to_sub_coordinator.go:33 broker coordinator on localhost:17777: getOrCreateConnection localhost:17777: fail to dial localhost:17777: grpc: no transport security set (use grpc.WithTransportCredentials(insecure.NewCredentials()) explicitly or set credentials) I0505 12:12:52.842733 connect_to_sub_coordinator.go:100 subscriber kafka.topic-b/kafka-gateway waiting for more assignments broker_client_fetch_test.go:244: Subscriber creation for topic-b: failed to connect to brokers: connection timeout I0505 12:12:52.942945 connect_to_sub_coordinator.go:33 broker coordinator on localhost:17777: getOrCreateConnection localhost:17777: fail to dial localhost:17777: grpc: no transport security set (use grpc.WithTransportCredentials(insecure.NewCredentials()) explicitly or set credentials) I0505 12:12:52.942958 connect_to_sub_coordinator.go:100 subscriber kafka.topic-c/kafka-gateway waiting for more assignments broker_client_fetch_test.go:244: Subscriber creation for topic-c: failed to connect to brokers: connection timeout --- PASS: TestBrokerClient_SubscriberConfiguration (0.50s) --- PASS: TestBrokerClient_SubscriberConfiguration/Subscriber_Cache_Management (0.20s) --- PASS: TestBrokerClient_SubscriberConfiguration/Multiple_Topic_Subscribers (0.30s) === RUN TestBrokerClient_SchematizedMessage === RUN TestBrokerClient_SchematizedMessage/Avro_Schematized_Message broker_client_test.go:78: Known issue: Integer value decoded as 0 instead of 42 broker_client_test.go:87: Successfully validated schematized message with schema ID 1 === RUN TestBrokerClient_SchematizedMessage/RecordType_Creation === RUN TestBrokerClient_SchematizedMessage/Publisher_Stats --- PASS: TestBrokerClient_SchematizedMessage (0.00s) --- PASS: TestBrokerClient_SchematizedMessage/Avro_Schematized_Message (0.00s) --- PASS: TestBrokerClient_SchematizedMessage/RecordType_Creation (0.00s) --- PASS: TestBrokerClient_SchematizedMessage/Publisher_Stats (0.00s) === RUN TestBrokerClient_ErrorHandling === RUN TestBrokerClient_ErrorHandling/Invalid_Schematized_Message === RUN TestBrokerClient_ErrorHandling/Non-Schematized_Message === RUN TestBrokerClient_ErrorHandling/Unknown_Schema_ID === RUN TestBrokerClient_ErrorHandling/Invalid_RecordType_Creation --- PASS: TestBrokerClient_ErrorHandling (0.00s) --- PASS: TestBrokerClient_ErrorHandling/Invalid_Schematized_Message (0.00s) --- PASS: TestBrokerClient_ErrorHandling/Non-Schematized_Message (0.00s) --- PASS: TestBrokerClient_ErrorHandling/Unknown_Schema_ID (0.00s) --- PASS: TestBrokerClient_ErrorHandling/Invalid_RecordType_Creation (0.00s) === RUN TestBrokerClient_Integration === RUN TestBrokerClient_Integration/Multiple_Schema_Formats broker_client_test.go:251: Successfully validated JSON Schema message with schema ID 11 === RUN TestBrokerClient_Integration/Cache_Behavior --- PASS: TestBrokerClient_Integration (0.00s) --- PASS: TestBrokerClient_Integration/Multiple_Schema_Formats (0.00s) --- PASS: TestBrokerClient_Integration/Cache_Behavior (0.00s) === RUN TestBasicSchemaDecodeEncode === RUN TestBasicSchemaDecodeEncode/Simple_Avro_String_Record === RUN TestBasicSchemaDecodeEncode/JSON_Schema_with_String_Field === RUN TestBasicSchemaDecodeEncode/Cache_Performance --- PASS: TestBasicSchemaDecodeEncode (0.00s) --- PASS: TestBasicSchemaDecodeEncode/Simple_Avro_String_Record (0.00s) --- PASS: TestBasicSchemaDecodeEncode/JSON_Schema_with_String_Field (0.00s) --- PASS: TestBasicSchemaDecodeEncode/Cache_Performance (0.00s) === RUN TestSchemaValidation === RUN TestSchemaValidation/Valid_Schema_Message === RUN TestSchemaValidation/Non-Schematized_Message === RUN TestSchemaValidation/Invalid_Envelope --- PASS: TestSchemaValidation (0.00s) --- PASS: TestSchemaValidation/Valid_Schema_Message (0.00s) --- PASS: TestSchemaValidation/Non-Schematized_Message (0.00s) --- PASS: TestSchemaValidation/Invalid_Envelope (0.00s) === RUN TestSchemaDecodeEncode_Avro === RUN TestSchemaDecodeEncode_Avro/Simple_User_Record === RUN TestSchemaDecodeEncode_Avro/Complex_Record_with_Arrays === RUN TestSchemaDecodeEncode_Avro/Union_Types --- PASS: TestSchemaDecodeEncode_Avro (0.00s) --- PASS: TestSchemaDecodeEncode_Avro/Simple_User_Record (0.00s) --- PASS: TestSchemaDecodeEncode_Avro/Complex_Record_with_Arrays (0.00s) --- PASS: TestSchemaDecodeEncode_Avro/Union_Types (0.00s) === RUN TestSchemaDecodeEncode_JSONSchema === RUN TestSchemaDecodeEncode_JSONSchema/Product_Schema === RUN TestSchemaDecodeEncode_JSONSchema/Nested_Object_Schema --- PASS: TestSchemaDecodeEncode_JSONSchema (0.00s) --- PASS: TestSchemaDecodeEncode_JSONSchema/Product_Schema (0.00s) --- PASS: TestSchemaDecodeEncode_JSONSchema/Nested_Object_Schema (0.00s) === RUN TestSchemaDecodeEncode_Protobuf --- PASS: TestSchemaDecodeEncode_Protobuf (0.00s) === RUN TestSchemaDecodeEncode_ErrorHandling === RUN TestSchemaDecodeEncode_ErrorHandling/Invalid_Confluent_Envelope === RUN TestSchemaDecodeEncode_ErrorHandling/Schema_Not_Found === RUN TestSchemaDecodeEncode_ErrorHandling/Invalid_Avro_Data === RUN TestSchemaDecodeEncode_ErrorHandling/Invalid_JSON_Data --- PASS: TestSchemaDecodeEncode_ErrorHandling (0.00s) --- PASS: TestSchemaDecodeEncode_ErrorHandling/Invalid_Confluent_Envelope (0.00s) --- PASS: TestSchemaDecodeEncode_ErrorHandling/Schema_Not_Found (0.00s) --- PASS: TestSchemaDecodeEncode_ErrorHandling/Invalid_Avro_Data (0.00s) --- PASS: TestSchemaDecodeEncode_ErrorHandling/Invalid_JSON_Data (0.00s) === RUN TestSchemaDecodeEncode_CachePerformance --- PASS: TestSchemaDecodeEncode_CachePerformance (0.00s) === RUN TestParseConfluentEnvelope === RUN TestParseConfluentEnvelope/valid_Avro_message === RUN TestParseConfluentEnvelope/valid_message_with_larger_schema_ID === RUN TestParseConfluentEnvelope/too_short_message === RUN TestParseConfluentEnvelope/no_magic_byte === RUN TestParseConfluentEnvelope/empty_message === RUN TestParseConfluentEnvelope/minimal_valid_message --- PASS: TestParseConfluentEnvelope (0.00s) --- PASS: TestParseConfluentEnvelope/valid_Avro_message (0.00s) --- PASS: TestParseConfluentEnvelope/valid_message_with_larger_schema_ID (0.00s) --- PASS: TestParseConfluentEnvelope/too_short_message (0.00s) --- PASS: TestParseConfluentEnvelope/no_magic_byte (0.00s) --- PASS: TestParseConfluentEnvelope/empty_message (0.00s) --- PASS: TestParseConfluentEnvelope/minimal_valid_message (0.00s) === RUN TestIsSchematized === RUN TestIsSchematized/schematized_message === RUN TestIsSchematized/non-schematized_message === RUN TestIsSchematized/empty_message --- PASS: TestIsSchematized (0.00s) --- PASS: TestIsSchematized/schematized_message (0.00s) --- PASS: TestIsSchematized/non-schematized_message (0.00s) --- PASS: TestIsSchematized/empty_message (0.00s) === RUN TestExtractSchemaID === RUN TestExtractSchemaID/valid_schema_ID === RUN TestExtractSchemaID/large_schema_ID === RUN TestExtractSchemaID/no_magic_byte === RUN TestExtractSchemaID/too_short --- PASS: TestExtractSchemaID (0.00s) --- PASS: TestExtractSchemaID/valid_schema_ID (0.00s) --- PASS: TestExtractSchemaID/large_schema_ID (0.00s) --- PASS: TestExtractSchemaID/no_magic_byte (0.00s) --- PASS: TestExtractSchemaID/too_short (0.00s) === RUN TestCreateConfluentEnvelope === RUN TestCreateConfluentEnvelope/simple_Avro_message === RUN TestCreateConfluentEnvelope/large_schema_ID === RUN TestCreateConfluentEnvelope/empty_payload --- PASS: TestCreateConfluentEnvelope (0.00s) --- PASS: TestCreateConfluentEnvelope/simple_Avro_message (0.00s) --- PASS: TestCreateConfluentEnvelope/large_schema_ID (0.00s) --- PASS: TestCreateConfluentEnvelope/empty_payload (0.00s) === RUN TestEnvelopeValidate === RUN TestEnvelopeValidate/valid_Avro_envelope === RUN TestEnvelopeValidate/zero_schema_ID === RUN TestEnvelopeValidate/empty_payload === RUN TestEnvelopeValidate/unknown_format --- PASS: TestEnvelopeValidate (0.00s) --- PASS: TestEnvelopeValidate/valid_Avro_envelope (0.00s) --- PASS: TestEnvelopeValidate/zero_schema_ID (0.00s) --- PASS: TestEnvelopeValidate/empty_payload (0.00s) --- PASS: TestEnvelopeValidate/unknown_format (0.00s) === RUN TestEnvelopeMetadata --- PASS: TestEnvelopeMetadata (0.00s) === RUN TestEncodeDecodeVarint === RUN TestEncodeDecodeVarint/zero === RUN TestEncodeDecodeVarint/small === RUN TestEncodeDecodeVarint/medium === RUN TestEncodeDecodeVarint/large === RUN TestEncodeDecodeVarint/very_large === RUN TestEncodeDecodeVarint/max_uint32 --- PASS: TestEncodeDecodeVarint (0.00s) --- PASS: TestEncodeDecodeVarint/zero (0.00s) --- PASS: TestEncodeDecodeVarint/small (0.00s) --- PASS: TestEncodeDecodeVarint/medium (0.00s) --- PASS: TestEncodeDecodeVarint/large (0.00s) --- PASS: TestEncodeDecodeVarint/very_large (0.00s) --- PASS: TestEncodeDecodeVarint/max_uint32 (0.00s) === RUN TestCreateConfluentEnvelopeWithProtobufIndexes === RUN TestCreateConfluentEnvelopeWithProtobufIndexes/avro_no_indexes === RUN TestCreateConfluentEnvelopeWithProtobufIndexes/protobuf_no_indexes === RUN TestCreateConfluentEnvelopeWithProtobufIndexes/protobuf_single_index === RUN TestCreateConfluentEnvelopeWithProtobufIndexes/protobuf_multiple_indexes --- PASS: TestCreateConfluentEnvelopeWithProtobufIndexes (0.00s) --- PASS: TestCreateConfluentEnvelopeWithProtobufIndexes/avro_no_indexes (0.00s) --- PASS: TestCreateConfluentEnvelopeWithProtobufIndexes/protobuf_no_indexes (0.00s) --- PASS: TestCreateConfluentEnvelopeWithProtobufIndexes/protobuf_single_index (0.00s) --- PASS: TestCreateConfluentEnvelopeWithProtobufIndexes/protobuf_multiple_indexes (0.00s) === RUN TestProtobufEnvelopeRoundTrip --- PASS: TestProtobufEnvelopeRoundTrip (0.00s) === RUN TestVarintEdgeCases === RUN TestVarintEdgeCases/empty_data === RUN TestVarintEdgeCases/incomplete_varint === RUN TestVarintEdgeCases/max_varint_length --- PASS: TestVarintEdgeCases (0.00s) --- PASS: TestVarintEdgeCases/empty_data (0.00s) --- PASS: TestVarintEdgeCases/incomplete_varint (0.00s) --- PASS: TestVarintEdgeCases/max_varint_length (0.00s) === RUN TestProtobufEnvelopeValidation === RUN TestProtobufEnvelopeValidation/valid_envelope === RUN TestProtobufEnvelopeValidation/zero_schema_id === RUN TestProtobufEnvelopeValidation/empty_payload --- PASS: TestProtobufEnvelopeValidation (0.00s) --- PASS: TestProtobufEnvelopeValidation/valid_envelope (0.00s) --- PASS: TestProtobufEnvelopeValidation/zero_schema_id (0.00s) --- PASS: TestProtobufEnvelopeValidation/empty_payload (0.00s) === RUN TestSchemaEvolutionChecker_AvroBackwardCompatibility === RUN TestSchemaEvolutionChecker_AvroBackwardCompatibility/Compatible_-_Add_optional_field === RUN TestSchemaEvolutionChecker_AvroBackwardCompatibility/Incompatible_-_Remove_field === RUN TestSchemaEvolutionChecker_AvroBackwardCompatibility/Incompatible_-_Add_required_field === RUN TestSchemaEvolutionChecker_AvroBackwardCompatibility/Compatible_-_Type_promotion --- PASS: TestSchemaEvolutionChecker_AvroBackwardCompatibility (0.00s) --- PASS: TestSchemaEvolutionChecker_AvroBackwardCompatibility/Compatible_-_Add_optional_field (0.00s) --- PASS: TestSchemaEvolutionChecker_AvroBackwardCompatibility/Incompatible_-_Remove_field (0.00s) --- PASS: TestSchemaEvolutionChecker_AvroBackwardCompatibility/Incompatible_-_Add_required_field (0.00s) --- PASS: TestSchemaEvolutionChecker_AvroBackwardCompatibility/Compatible_-_Type_promotion (0.00s) === RUN TestSchemaEvolutionChecker_AvroForwardCompatibility === RUN TestSchemaEvolutionChecker_AvroForwardCompatibility/Compatible_-_Remove_optional_field === RUN TestSchemaEvolutionChecker_AvroForwardCompatibility/Incompatible_-_Add_field_without_default_in_old_schema --- PASS: TestSchemaEvolutionChecker_AvroForwardCompatibility (0.00s) --- PASS: TestSchemaEvolutionChecker_AvroForwardCompatibility/Compatible_-_Remove_optional_field (0.00s) --- PASS: TestSchemaEvolutionChecker_AvroForwardCompatibility/Incompatible_-_Add_field_without_default_in_old_schema (0.00s) === RUN TestSchemaEvolutionChecker_AvroFullCompatibility === RUN TestSchemaEvolutionChecker_AvroFullCompatibility/Compatible_-_Add_optional_field_with_default === RUN TestSchemaEvolutionChecker_AvroFullCompatibility/Incompatible_-_Remove_field --- PASS: TestSchemaEvolutionChecker_AvroFullCompatibility (0.00s) --- PASS: TestSchemaEvolutionChecker_AvroFullCompatibility/Compatible_-_Add_optional_field_with_default (0.00s) --- PASS: TestSchemaEvolutionChecker_AvroFullCompatibility/Incompatible_-_Remove_field (0.00s) === RUN TestSchemaEvolutionChecker_JSONSchemaCompatibility === RUN TestSchemaEvolutionChecker_JSONSchemaCompatibility/Compatible_-_Add_optional_property === RUN TestSchemaEvolutionChecker_JSONSchemaCompatibility/Incompatible_-_Add_required_property === RUN TestSchemaEvolutionChecker_JSONSchemaCompatibility/Incompatible_-_Remove_property --- PASS: TestSchemaEvolutionChecker_JSONSchemaCompatibility (0.00s) --- PASS: TestSchemaEvolutionChecker_JSONSchemaCompatibility/Compatible_-_Add_optional_property (0.00s) --- PASS: TestSchemaEvolutionChecker_JSONSchemaCompatibility/Incompatible_-_Add_required_property (0.00s) --- PASS: TestSchemaEvolutionChecker_JSONSchemaCompatibility/Incompatible_-_Remove_property (0.00s) === RUN TestSchemaEvolutionChecker_ProtobufCompatibility === RUN TestSchemaEvolutionChecker_ProtobufCompatibility/Simplified_Protobuf_check --- PASS: TestSchemaEvolutionChecker_ProtobufCompatibility (0.00s) --- PASS: TestSchemaEvolutionChecker_ProtobufCompatibility/Simplified_Protobuf_check (0.00s) === RUN TestSchemaEvolutionChecker_NoCompatibility --- PASS: TestSchemaEvolutionChecker_NoCompatibility (0.00s) === RUN TestSchemaEvolutionChecker_TypePromotion === RUN TestSchemaEvolutionChecker_TypePromotion/int_to_long === RUN TestSchemaEvolutionChecker_TypePromotion/int_to_float === RUN TestSchemaEvolutionChecker_TypePromotion/int_to_double === RUN TestSchemaEvolutionChecker_TypePromotion/long_to_float === RUN TestSchemaEvolutionChecker_TypePromotion/long_to_double === RUN TestSchemaEvolutionChecker_TypePromotion/float_to_double === RUN TestSchemaEvolutionChecker_TypePromotion/string_to_bytes === RUN TestSchemaEvolutionChecker_TypePromotion/bytes_to_string === RUN TestSchemaEvolutionChecker_TypePromotion/long_to_int === RUN TestSchemaEvolutionChecker_TypePromotion/double_to_float === RUN TestSchemaEvolutionChecker_TypePromotion/string_to_int --- PASS: TestSchemaEvolutionChecker_TypePromotion (0.00s) --- PASS: TestSchemaEvolutionChecker_TypePromotion/int_to_long (0.00s) --- PASS: TestSchemaEvolutionChecker_TypePromotion/int_to_float (0.00s) --- PASS: TestSchemaEvolutionChecker_TypePromotion/int_to_double (0.00s) --- PASS: TestSchemaEvolutionChecker_TypePromotion/long_to_float (0.00s) --- PASS: TestSchemaEvolutionChecker_TypePromotion/long_to_double (0.00s) --- PASS: TestSchemaEvolutionChecker_TypePromotion/float_to_double (0.00s) --- PASS: TestSchemaEvolutionChecker_TypePromotion/string_to_bytes (0.00s) --- PASS: TestSchemaEvolutionChecker_TypePromotion/bytes_to_string (0.00s) --- PASS: TestSchemaEvolutionChecker_TypePromotion/long_to_int (0.00s) --- PASS: TestSchemaEvolutionChecker_TypePromotion/double_to_float (0.00s) --- PASS: TestSchemaEvolutionChecker_TypePromotion/string_to_int (0.00s) === RUN TestSchemaEvolutionChecker_SuggestEvolution === RUN TestSchemaEvolutionChecker_SuggestEvolution/Compatible_schema === RUN TestSchemaEvolutionChecker_SuggestEvolution/Incompatible_schema_with_suggestions --- PASS: TestSchemaEvolutionChecker_SuggestEvolution (0.00s) --- PASS: TestSchemaEvolutionChecker_SuggestEvolution/Compatible_schema (0.00s) --- PASS: TestSchemaEvolutionChecker_SuggestEvolution/Incompatible_schema_with_suggestions (0.00s) === RUN TestSchemaEvolutionChecker_CanEvolve --- PASS: TestSchemaEvolutionChecker_CanEvolve (0.00s) === RUN TestSchemaEvolutionChecker_ExtractFields === RUN TestSchemaEvolutionChecker_ExtractFields/Extract_Avro_fields === RUN TestSchemaEvolutionChecker_ExtractFields/Extract_JSON_Schema_required_fields === RUN TestSchemaEvolutionChecker_ExtractFields/Extract_JSON_Schema_properties --- PASS: TestSchemaEvolutionChecker_ExtractFields (0.00s) --- PASS: TestSchemaEvolutionChecker_ExtractFields/Extract_Avro_fields (0.00s) --- PASS: TestSchemaEvolutionChecker_ExtractFields/Extract_JSON_Schema_required_fields (0.00s) --- PASS: TestSchemaEvolutionChecker_ExtractFields/Extract_JSON_Schema_properties (0.00s) === RUN TestFullIntegration_AvroWorkflow === RUN TestFullIntegration_AvroWorkflow/Producer_Workflow integration_test.go:88: Successfully processed producer message with 5 fields === RUN TestFullIntegration_AvroWorkflow/Consumer_Workflow integration_test.go:140: Successfully reconstructed consumer message: 38 bytes === RUN TestFullIntegration_AvroWorkflow/Round_Trip_Integrity integration_test.go:203: Round-trip integrity test passed --- PASS: TestFullIntegration_AvroWorkflow (0.00s) --- PASS: TestFullIntegration_AvroWorkflow/Producer_Workflow (0.00s) --- PASS: TestFullIntegration_AvroWorkflow/Consumer_Workflow (0.00s) --- PASS: TestFullIntegration_AvroWorkflow/Round_Trip_Integrity (0.00s) === RUN TestFullIntegration_MultiFormatSupport === RUN TestFullIntegration_MultiFormatSupport/Avro_Format integration_test.go:281: Successfully processed Avro_Format format === RUN TestFullIntegration_MultiFormatSupport/JSON_Schema_Format integration_test.go:281: Successfully processed JSON_Schema_Format format --- PASS: TestFullIntegration_MultiFormatSupport (0.00s) --- PASS: TestFullIntegration_MultiFormatSupport/Avro_Format (0.00s) --- PASS: TestFullIntegration_MultiFormatSupport/JSON_Schema_Format (0.00s) === RUN TestIntegration_CachePerformance integration_test.go:343: Cache performance: First decode: 228.518µs, Average cached: 40.46µs integration_test.go:345: Cache stats: 1 decoders, 1 schemas, 0 subjects --- PASS: TestIntegration_CachePerformance (0.00s) === RUN TestIntegration_ErrorHandling === RUN TestIntegration_ErrorHandling/Non_Schematized_Message integration_test.go:405: Expected error occurred: message is not schematized === RUN TestIntegration_ErrorHandling/Invalid_Schema_ID integration_test.go:405: Expected error occurred: failed to get schema 999: schema registry error 404: === RUN TestIntegration_ErrorHandling/Empty_Payload integration_test.go:405: Expected error occurred: invalid envelope: empty payload === RUN TestIntegration_ErrorHandling/Corrupted_Avro_Data integration_test.go:405: Expected error occurred: failed to decode Avro message: strict validation failed: failed to decode Avro data: cannot decode binary record "User" field "name": cannot decode binary string: cannot decode binary bytes: short buffer --- PASS: TestIntegration_ErrorHandling (0.00s) --- PASS: TestIntegration_ErrorHandling/Non_Schematized_Message (0.00s) --- PASS: TestIntegration_ErrorHandling/Invalid_Schema_ID (0.00s) --- PASS: TestIntegration_ErrorHandling/Empty_Payload (0.00s) --- PASS: TestIntegration_ErrorHandling/Corrupted_Avro_Data (0.00s) === RUN TestIntegration_SchemaEvolution === RUN TestIntegration_SchemaEvolution/Schema_V1_Message === RUN TestIntegration_SchemaEvolution/Schema_V2_Message --- PASS: TestIntegration_SchemaEvolution (0.00s) --- PASS: TestIntegration_SchemaEvolution/Schema_V1_Message (0.00s) --- PASS: TestIntegration_SchemaEvolution/Schema_V2_Message (0.00s) === RUN TestNewJSONSchemaDecoder === RUN TestNewJSONSchemaDecoder/valid_object_schema === RUN TestNewJSONSchemaDecoder/valid_array_schema === RUN TestNewJSONSchemaDecoder/valid_string_schema_with_format === RUN TestNewJSONSchemaDecoder/invalid_JSON === RUN TestNewJSONSchemaDecoder/empty_schema --- PASS: TestNewJSONSchemaDecoder (0.00s) --- PASS: TestNewJSONSchemaDecoder/valid_object_schema (0.00s) --- PASS: TestNewJSONSchemaDecoder/valid_array_schema (0.00s) --- PASS: TestNewJSONSchemaDecoder/valid_string_schema_with_format (0.00s) --- PASS: TestNewJSONSchemaDecoder/invalid_JSON (0.00s) --- PASS: TestNewJSONSchemaDecoder/empty_schema (0.00s) === RUN TestJSONSchemaDecoder_Decode === RUN TestJSONSchemaDecoder_Decode/valid_complete_data === RUN TestJSONSchemaDecoder_Decode/valid_minimal_data === RUN TestJSONSchemaDecoder_Decode/missing_required_field === RUN TestJSONSchemaDecoder_Decode/invalid_type === RUN TestJSONSchemaDecoder_Decode/invalid_email_format === RUN TestJSONSchemaDecoder_Decode/negative_age --- PASS: TestJSONSchemaDecoder_Decode (0.00s) --- PASS: TestJSONSchemaDecoder_Decode/valid_complete_data (0.00s) --- PASS: TestJSONSchemaDecoder_Decode/valid_minimal_data (0.00s) --- PASS: TestJSONSchemaDecoder_Decode/missing_required_field (0.00s) --- PASS: TestJSONSchemaDecoder_Decode/invalid_type (0.00s) --- PASS: TestJSONSchemaDecoder_Decode/invalid_email_format (0.00s) --- PASS: TestJSONSchemaDecoder_Decode/negative_age (0.00s) === RUN TestJSONSchemaDecoder_DecodeToRecordValue --- PASS: TestJSONSchemaDecoder_DecodeToRecordValue (0.00s) === RUN TestJSONSchemaDecoder_InferRecordType --- PASS: TestJSONSchemaDecoder_InferRecordType (0.00s) === RUN TestJSONSchemaDecoder_EncodeFromRecordValue --- PASS: TestJSONSchemaDecoder_EncodeFromRecordValue (0.00s) === RUN TestJSONSchemaDecoder_ArrayAndPrimitiveSchemas === RUN TestJSONSchemaDecoder_ArrayAndPrimitiveSchemas/array_schema === RUN TestJSONSchemaDecoder_ArrayAndPrimitiveSchemas/string_schema === RUN TestJSONSchemaDecoder_ArrayAndPrimitiveSchemas/number_schema === RUN TestJSONSchemaDecoder_ArrayAndPrimitiveSchemas/boolean_schema --- PASS: TestJSONSchemaDecoder_ArrayAndPrimitiveSchemas (0.00s) --- PASS: TestJSONSchemaDecoder_ArrayAndPrimitiveSchemas/array_schema (0.00s) --- PASS: TestJSONSchemaDecoder_ArrayAndPrimitiveSchemas/string_schema (0.00s) --- PASS: TestJSONSchemaDecoder_ArrayAndPrimitiveSchemas/number_schema (0.00s) --- PASS: TestJSONSchemaDecoder_ArrayAndPrimitiveSchemas/boolean_schema (0.00s) === RUN TestJSONSchemaDecoder_GetSchemaInfo --- PASS: TestJSONSchemaDecoder_GetSchemaInfo (0.00s) === RUN TestAvroLoadTestDecoding loadtest_decode_test.go:127: Avro encoded size: 68 bytes loadtest_decode_test.go:133: Confluent wire format size: 73 bytes loadtest_decode_test.go:170: ✅ Avro decoding successful: 7 fields --- PASS: TestAvroLoadTestDecoding (0.00s) === RUN TestJSONSchemaLoadTestDecoding loadtest_decode_test.go:183: JSON encoded size: 174 bytes loadtest_decode_test.go:184: JSON content: {"id":"msg-test-123","timestamp":1777983173063375244,"producer_id":0,"counter":42,"user_id":"user-789","event_type":"click","properties":{"browser":"chrome","version":"1.0"}} loadtest_decode_test.go:190: Confluent wire format size: 179 bytes loadtest_decode_test.go:227: ✅ JSON Schema decoding successful: 7 fields --- PASS: TestJSONSchemaLoadTestDecoding (0.00s) === RUN TestProtobufLoadTestDecoding loadtest_decode_test.go:241: JSON (for Protobuf) encoded size: 174 bytes loadtest_decode_test.go:242: JSON content: {"id":"msg-test-123","timestamp":1777983173063514566,"producer_id":0,"counter":42,"user_id":"user-789","event_type":"click","properties":{"browser":"chrome","version":"1.0"}} loadtest_decode_test.go:248: Confluent wire format size: 179 bytes loadtest_decode_test.go:275: Unexpectedly succeeded in decoding JSON as Protobuf loadtest_decode_test.go:277: RecordValue has 7 fields --- PASS: TestProtobufLoadTestDecoding (0.00s) === RUN TestManager_SchemaEvolution === RUN TestManager_SchemaEvolution/Compatible_Avro_evolution === RUN TestManager_SchemaEvolution/Incompatible_Avro_evolution === RUN TestManager_SchemaEvolution/Schema_evolution_suggestions === RUN TestManager_SchemaEvolution/JSON_Schema_evolution === RUN TestManager_SchemaEvolution/Full_compatibility_check === RUN TestManager_SchemaEvolution/Type_promotion_compatibility --- PASS: TestManager_SchemaEvolution (0.00s) --- PASS: TestManager_SchemaEvolution/Compatible_Avro_evolution (0.00s) --- PASS: TestManager_SchemaEvolution/Incompatible_Avro_evolution (0.00s) --- PASS: TestManager_SchemaEvolution/Schema_evolution_suggestions (0.00s) --- PASS: TestManager_SchemaEvolution/JSON_Schema_evolution (0.00s) --- PASS: TestManager_SchemaEvolution/Full_compatibility_check (0.00s) --- PASS: TestManager_SchemaEvolution/Type_promotion_compatibility (0.00s) === RUN TestManager_CompatibilityLevels === RUN TestManager_CompatibilityLevels/Get_default_compatibility_level === RUN TestManager_CompatibilityLevels/Set_compatibility_level --- PASS: TestManager_CompatibilityLevels (0.00s) --- PASS: TestManager_CompatibilityLevels/Get_default_compatibility_level (0.00s) --- PASS: TestManager_CompatibilityLevels/Set_compatibility_level (0.00s) === RUN TestManager_CanEvolveSchema === RUN TestManager_CanEvolveSchema/Compatible_evolution === RUN TestManager_CanEvolveSchema/Incompatible_evolution --- PASS: TestManager_CanEvolveSchema (0.00s) --- PASS: TestManager_CanEvolveSchema/Compatible_evolution (0.00s) --- PASS: TestManager_CanEvolveSchema/Incompatible_evolution (0.00s) === RUN TestManager_SchemaEvolutionWorkflow === RUN TestManager_SchemaEvolutionWorkflow/Complete_evolution_workflow --- PASS: TestManager_SchemaEvolutionWorkflow (0.00s) --- PASS: TestManager_SchemaEvolutionWorkflow/Complete_evolution_workflow (0.00s) === RUN TestManager_DecodeMessage --- PASS: TestManager_DecodeMessage (0.00s) === RUN TestManager_IsSchematized === RUN TestManager_IsSchematized/schematized_message === RUN TestManager_IsSchematized/non-schematized_message === RUN TestManager_IsSchematized/empty_message --- PASS: TestManager_IsSchematized (0.00s) --- PASS: TestManager_IsSchematized/schematized_message (0.00s) --- PASS: TestManager_IsSchematized/non-schematized_message (0.00s) --- PASS: TestManager_IsSchematized/empty_message (0.00s) === RUN TestManager_GetSchemaInfo --- PASS: TestManager_GetSchemaInfo (0.00s) === RUN TestManager_CacheManagement --- PASS: TestManager_CacheManagement (0.00s) === RUN TestManager_EncodeMessage --- PASS: TestManager_EncodeMessage (0.00s) === RUN TestProtobufDecoder_BasicDecoding === RUN TestProtobufDecoder_BasicDecoding/NewProtobufDecoder_with_binary_descriptor protobuf_decoder_test.go:40: Protobuf decoder creation succeeded - Phase E3 is working! === RUN TestProtobufDecoder_BasicDecoding/NewProtobufDecoder_with_empty_message_name protobuf_decoder_test.go:60: Empty message name resolution succeeded - Phase E3 is working! --- PASS: TestProtobufDecoder_BasicDecoding (0.00s) --- PASS: TestProtobufDecoder_BasicDecoding/NewProtobufDecoder_with_binary_descriptor (0.00s) --- PASS: TestProtobufDecoder_BasicDecoding/NewProtobufDecoder_with_empty_message_name (0.00s) === RUN TestProtobufDecoder_Integration === RUN TestProtobufDecoder_Integration/Parse_complex_descriptor protobuf_decoder_test.go:86: Empty message name resolution succeeded! protobuf_decoder_test.go:100: Complex message resolution succeeded! --- PASS: TestProtobufDecoder_Integration (0.00s) --- PASS: TestProtobufDecoder_Integration/Parse_complex_descriptor (0.00s) === RUN TestProtobufDecoder_Caching === RUN TestProtobufDecoder_Caching/Decoder_creation_uses_cache --- PASS: TestProtobufDecoder_Caching (0.00s) --- PASS: TestProtobufDecoder_Caching/Decoder_creation_uses_cache (0.00s) === RUN TestProtobufDecoder_ErrorHandling === RUN TestProtobufDecoder_ErrorHandling/Invalid_binary_data === RUN TestProtobufDecoder_ErrorHandling/Empty_binary_data === RUN TestProtobufDecoder_ErrorHandling/FileDescriptorSet_with_no_messages --- PASS: TestProtobufDecoder_ErrorHandling (0.00s) --- PASS: TestProtobufDecoder_ErrorHandling/Invalid_binary_data (0.00s) --- PASS: TestProtobufDecoder_ErrorHandling/Empty_binary_data (0.00s) --- PASS: TestProtobufDecoder_ErrorHandling/FileDescriptorSet_with_no_messages (0.00s) === RUN TestProtobufDescriptorParser_BasicParsing === RUN TestProtobufDescriptorParser_BasicParsing/Parse_Simple_Message_Descriptor protobuf_descriptor_test.go:42: Simple message descriptor resolution succeeded - Phase E3 is working! === RUN TestProtobufDescriptorParser_BasicParsing/Parse_Complex_Message_Descriptor === RUN TestProtobufDescriptorParser_BasicParsing/Cache_Functionality protobuf_descriptor_test.go:101: Cache functionality working with successful descriptor resolution! --- PASS: TestProtobufDescriptorParser_BasicParsing (0.00s) --- PASS: TestProtobufDescriptorParser_BasicParsing/Parse_Simple_Message_Descriptor (0.00s) --- PASS: TestProtobufDescriptorParser_BasicParsing/Parse_Complex_Message_Descriptor (0.00s) --- PASS: TestProtobufDescriptorParser_BasicParsing/Cache_Functionality (0.00s) === RUN TestProtobufDescriptorParser_Validation === RUN TestProtobufDescriptorParser_Validation/Invalid_Binary_Data === RUN TestProtobufDescriptorParser_Validation/Empty_FileDescriptorSet === RUN TestProtobufDescriptorParser_Validation/FileDescriptor_Without_Name === RUN TestProtobufDescriptorParser_Validation/FileDescriptor_Without_Package --- PASS: TestProtobufDescriptorParser_Validation (0.00s) --- PASS: TestProtobufDescriptorParser_Validation/Invalid_Binary_Data (0.00s) --- PASS: TestProtobufDescriptorParser_Validation/Empty_FileDescriptorSet (0.00s) --- PASS: TestProtobufDescriptorParser_Validation/FileDescriptor_Without_Name (0.00s) --- PASS: TestProtobufDescriptorParser_Validation/FileDescriptor_Without_Package (0.00s) === RUN TestProtobufDescriptorParser_MessageSearch === RUN TestProtobufDescriptorParser_MessageSearch/Message_Not_Found === RUN TestProtobufDescriptorParser_MessageSearch/Nested_Message_Search protobuf_descriptor_test.go:235: Nested message resolution succeeded - Phase E3 is working! --- PASS: TestProtobufDescriptorParser_MessageSearch (0.00s) --- PASS: TestProtobufDescriptorParser_MessageSearch/Message_Not_Found (0.00s) --- PASS: TestProtobufDescriptorParser_MessageSearch/Nested_Message_Search (0.00s) === RUN TestProtobufDescriptorParser_Dependencies === RUN TestProtobufDescriptorParser_Dependencies/Extract_Dependencies --- PASS: TestProtobufDescriptorParser_Dependencies (0.00s) --- PASS: TestProtobufDescriptorParser_Dependencies/Extract_Dependencies (0.00s) === RUN TestProtobufSchema_Methods === RUN TestProtobufSchema_Methods/GetMessageFields_Implemented === RUN TestProtobufSchema_Methods/GetFieldByName_Implemented === RUN TestProtobufSchema_Methods/GetFieldByNumber_Implemented === RUN TestProtobufSchema_Methods/ValidateMessage_Requires_MessageDescriptor --- PASS: TestProtobufSchema_Methods (0.00s) --- PASS: TestProtobufSchema_Methods/GetMessageFields_Implemented (0.00s) --- PASS: TestProtobufSchema_Methods/GetFieldByName_Implemented (0.00s) --- PASS: TestProtobufSchema_Methods/GetFieldByNumber_Implemented (0.00s) --- PASS: TestProtobufSchema_Methods/ValidateMessage_Requires_MessageDescriptor (0.00s) === RUN TestProtobufDescriptorParser_CacheManagement --- PASS: TestProtobufDescriptorParser_CacheManagement (0.00s) === RUN TestSchemaReconstruction_Avro reconstruction_test.go:77: Original Avro binary length: 11 reconstruction_test.go:78: Original Confluent message length: 16 reconstruction_test.go:85: Parsed envelope - SchemaID: 1, Format: AVRO, Payload length: 11 reconstruction_test.go:124: Successfully completed round-trip: Original -> Decode -> Encode -> Decode reconstruction_test.go:125: Original message size: 16 bytes reconstruction_test.go:126: Reconstructed message size: 16 bytes --- PASS: TestSchemaReconstruction_Avro (0.00s) === RUN TestSchemaReconstruction_MultipleFormats === RUN TestSchemaReconstruction_MultipleFormats/Avro === RUN TestSchemaReconstruction_MultipleFormats/Protobuf === RUN TestSchemaReconstruction_MultipleFormats/JSON_Schema --- PASS: TestSchemaReconstruction_MultipleFormats (0.00s) --- PASS: TestSchemaReconstruction_MultipleFormats/Avro (0.00s) --- PASS: TestSchemaReconstruction_MultipleFormats/Protobuf (0.00s) --- PASS: TestSchemaReconstruction_MultipleFormats/JSON_Schema (0.00s) === RUN TestConfluentEnvelope_RoundTrip === RUN TestConfluentEnvelope_RoundTrip/Avro_message reconstruction_test.go:259: Successfully round-tripped Avro message envelope: 17 bytes === RUN TestConfluentEnvelope_RoundTrip/Protobuf_message_with_indexes reconstruction_test.go:259: Successfully round-tripped Protobuf message with indexes envelope: 21 bytes === RUN TestConfluentEnvelope_RoundTrip/JSON_Schema_message reconstruction_test.go:259: Successfully round-tripped JSON Schema message envelope: 17 bytes --- PASS: TestConfluentEnvelope_RoundTrip (0.00s) --- PASS: TestConfluentEnvelope_RoundTrip/Avro_message (0.00s) --- PASS: TestConfluentEnvelope_RoundTrip/Protobuf_message_with_indexes (0.00s) --- PASS: TestConfluentEnvelope_RoundTrip/JSON_Schema_message (0.00s) === RUN TestSchemaMetadata_Preservation reconstruction_test.go:306: Successfully preserved and reconstructed schema metadata --- PASS: TestSchemaMetadata_Preservation (0.00s) === RUN TestNewRegistryClient --- PASS: TestNewRegistryClient (0.00s) === RUN TestRegistryClient_GetSchemaByID === RUN TestRegistryClient_GetSchemaByID/successful_fetch === RUN TestRegistryClient_GetSchemaByID/schema_not_found === RUN TestRegistryClient_GetSchemaByID/cache_hit --- PASS: TestRegistryClient_GetSchemaByID (0.00s) --- PASS: TestRegistryClient_GetSchemaByID/successful_fetch (0.00s) --- PASS: TestRegistryClient_GetSchemaByID/schema_not_found (0.00s) --- PASS: TestRegistryClient_GetSchemaByID/cache_hit (0.00s) === RUN TestRegistryClient_GetLatestSchema --- PASS: TestRegistryClient_GetLatestSchema (0.00s) === RUN TestRegistryClient_RegisterSchema --- PASS: TestRegistryClient_RegisterSchema (0.00s) === RUN TestRegistryClient_CheckCompatibility --- PASS: TestRegistryClient_CheckCompatibility (0.00s) === RUN TestRegistryClient_ListSubjects --- PASS: TestRegistryClient_ListSubjects (0.00s) === RUN TestRegistryClient_DetectSchemaFormat === RUN TestRegistryClient_DetectSchemaFormat/Avro_record_schema === RUN TestRegistryClient_DetectSchemaFormat/Avro_enum_schema === RUN TestRegistryClient_DetectSchemaFormat/JSON_Schema === RUN TestRegistryClient_DetectSchemaFormat/Protobuf_(non-JSON) === RUN TestRegistryClient_DetectSchemaFormat/Simple_Avro_primitive --- PASS: TestRegistryClient_DetectSchemaFormat (0.00s) --- PASS: TestRegistryClient_DetectSchemaFormat/Avro_record_schema (0.00s) --- PASS: TestRegistryClient_DetectSchemaFormat/Avro_enum_schema (0.00s) --- PASS: TestRegistryClient_DetectSchemaFormat/JSON_Schema (0.00s) --- PASS: TestRegistryClient_DetectSchemaFormat/Protobuf_(non-JSON) (0.00s) --- PASS: TestRegistryClient_DetectSchemaFormat/Simple_Avro_primitive (0.00s) === RUN TestRegistryClient_CacheManagement --- PASS: TestRegistryClient_CacheManagement (0.00s) === RUN TestRegistryClient_HealthCheck === RUN TestRegistryClient_HealthCheck/healthy_registry === RUN TestRegistryClient_HealthCheck/unhealthy_registry --- PASS: TestRegistryClient_HealthCheck (0.00s) --- PASS: TestRegistryClient_HealthCheck/healthy_registry (0.00s) --- PASS: TestRegistryClient_HealthCheck/unhealthy_registry (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/mq/kafka/schema 0.863s === RUN TestWriteRowsNoPanic --- PASS: TestWriteRowsNoPanic (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/mq/logstore 0.026s === RUN TestConsumerGroupPosition_JSON === RUN TestConsumerGroupPosition_JSON/offset-based_position consumer_group_storage_test.go:53: JSON: {"type":"offset","value":12345,"offset_type":"EXACT_OFFSET","committed_at":1777983172234,"metadata":"test metadata"} === RUN TestConsumerGroupPosition_JSON/timestamp-based_position consumer_group_storage_test.go:53: JSON: {"type":"timestamp","value":1777983172234435551,"offset_type":"EXACT_TS_NS","committed_at":1777983172234,"metadata":"checkpoint at 2024-10-05"} === RUN TestConsumerGroupPosition_JSON/minimal_position consumer_group_storage_test.go:53: JSON: {"type":"offset","value":42,"offset_type":"","committed_at":0,"metadata":""} --- PASS: TestConsumerGroupPosition_JSON (0.00s) --- PASS: TestConsumerGroupPosition_JSON/offset-based_position (0.00s) --- PASS: TestConsumerGroupPosition_JSON/timestamp-based_position (0.00s) --- PASS: TestConsumerGroupPosition_JSON/minimal_position (0.00s) === RUN TestConsumerGroupPosition_JSONExamples consumer_group_storage_test.go:93: Example 0: Type=offset, Value=12345 consumer_group_storage_test.go:93: Example 1: Type=timestamp, Value=1696521600000000000 consumer_group_storage_test.go:93: Example 2: Type=offset, Value=42 --- PASS: TestConsumerGroupPosition_JSONExamples (0.00s) === RUN TestConsumerGroupPosition_TypeValidation --- PASS: TestConsumerGroupPosition_TypeValidation (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/mq/offset 0.015s === RUN Test_allocateOneBroker === RUN Test_allocateOneBroker/test_only_one_broker I0505 12:12:52.250319 allocate.go:54 allocate topic partitions 1: [partition:{ring_size:2520 range_stop:2520 unix_time_ns:1777983172250270003} leader_broker:"localhost:17777"] --- PASS: Test_allocateOneBroker (0.00s) --- PASS: Test_allocateOneBroker/test_only_one_broker (0.00s) === RUN TestEnsureAssignmentsToActiveBrokersX === RUN TestEnsureAssignmentsToActiveBrokersX/test_empty_leader test empty leader before [partition:{} follower_broker:"localhost:2"] test empty leader after [partition:{} leader_broker:"localhost:4" follower_broker:"localhost:2"] === RUN TestEnsureAssignmentsToActiveBrokersX/test_empty_follower test empty follower before [partition:{} leader_broker:"localhost:1"] test empty follower after [partition:{} leader_broker:"localhost:1" follower_broker:"localhost:6"] === RUN TestEnsureAssignmentsToActiveBrokersX/test_dead_follower test dead follower before [partition:{} leader_broker:"localhost:1" follower_broker:"localhost:200"] test dead follower after [partition:{} leader_broker:"localhost:1" follower_broker:"localhost:4"] === RUN TestEnsureAssignmentsToActiveBrokersX/test_dead_leader_and_follower test dead leader and follower before [partition:{} leader_broker:"localhost:100" follower_broker:"localhost:200"] test dead leader and follower after [partition:{} leader_broker:"localhost:6" follower_broker:"localhost:2"] === RUN TestEnsureAssignmentsToActiveBrokersX/test_low_active_brokers test low active brokers before [partition:{} leader_broker:"localhost:1" follower_broker:"localhost:2"] test low active brokers after [partition:{} leader_broker:"localhost:1" follower_broker:"localhost:2"] === RUN TestEnsureAssignmentsToActiveBrokersX/test_low_active_brokers_with_one_follower test low active brokers with one follower before [partition:{} leader_broker:"localhost:1"] test low active brokers with one follower after [partition:{} leader_broker:"localhost:1" follower_broker:"localhost:2"] === RUN TestEnsureAssignmentsToActiveBrokersX/test_single_active_broker test single active broker before [partition:{} leader_broker:"localhost:1" follower_broker:"localhost:2"] test single active broker after [partition:{} leader_broker:"localhost:1" follower_broker:"localhost:1"] --- PASS: TestEnsureAssignmentsToActiveBrokersX (0.00s) --- PASS: TestEnsureAssignmentsToActiveBrokersX/test_empty_leader (0.00s) --- PASS: TestEnsureAssignmentsToActiveBrokersX/test_empty_follower (0.00s) --- PASS: TestEnsureAssignmentsToActiveBrokersX/test_dead_follower (0.00s) --- PASS: TestEnsureAssignmentsToActiveBrokersX/test_dead_leader_and_follower (0.00s) --- PASS: TestEnsureAssignmentsToActiveBrokersX/test_low_active_brokers (0.00s) --- PASS: TestEnsureAssignmentsToActiveBrokersX/test_low_active_brokers_with_one_follower (0.00s) --- PASS: TestEnsureAssignmentsToActiveBrokersX/test_single_active_broker (0.00s) === RUN TestBalanceTopicPartitionOnBrokers === RUN TestBalanceTopicPartitionOnBrokers/test --- PASS: TestBalanceTopicPartitionOnBrokers (0.00s) --- PASS: TestBalanceTopicPartitionOnBrokers/test (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/mq/pub_balancer 0.029s === RUN TestSplitFlatSchemaToKeyValue --- PASS: TestSplitFlatSchemaToKeyValue (0.00s) === RUN TestSplitFlatSchemaToKeyValueMissingColumns --- PASS: TestSplitFlatSchemaToKeyValueMissingColumns (0.00s) === RUN TestCombineFlatSchemaFromKeyValue --- PASS: TestCombineFlatSchemaFromKeyValue (0.00s) === RUN TestExtractKeyColumnsFromCombinedSchema --- PASS: TestExtractKeyColumnsFromCombinedSchema (0.00s) === RUN TestValidateKeyColumns --- PASS: TestValidateKeyColumns (0.00s) === RUN TestEnumScalarType === RUN TestEnumScalarType/Boolean === RUN TestEnumScalarType/Integer === RUN TestEnumScalarType/Long === RUN TestEnumScalarType/Float === RUN TestEnumScalarType/Double === RUN TestEnumScalarType/Bytes === RUN TestEnumScalarType/String --- PASS: TestEnumScalarType (0.00s) --- PASS: TestEnumScalarType/Boolean (0.00s) --- PASS: TestEnumScalarType/Integer (0.00s) --- PASS: TestEnumScalarType/Long (0.00s) --- PASS: TestEnumScalarType/Float (0.00s) --- PASS: TestEnumScalarType/Double (0.00s) --- PASS: TestEnumScalarType/Bytes (0.00s) --- PASS: TestEnumScalarType/String (0.00s) === RUN TestField --- PASS: TestField (0.00s) === RUN TestRecordType fields: < name: "field_key" field_index: 1 type: < scalar_type: INT32 > > fields: < name: "field_record" field_index: 2 type: < record_type: < fields: < name: "field_1" field_index: 1 type: < scalar_type: INT32 > > fields: < name: "field_2" field_index: 2 type: < scalar_type: STRING > > > > > {"fields":[{"name":"field_key","field_index":1,"type":{"Kind":{"ScalarType":1}}},{"name":"field_record","field_index":2,"type":{"Kind":{"RecordType":{"fields":[{"name":"field_1","field_index":1,"type":{"Kind":{"ScalarType":1}}},{"name":"field_2","field_index":2,"type":{"Kind":{"ScalarType":7}}}]}}}}]} --- PASS: TestRecordType (0.00s) === RUN TestStructToSchema === RUN TestStructToSchema/scalar_type === RUN TestStructToSchema/simple_struct_type === RUN TestStructToSchema/simple_list === RUN TestStructToSchema/simple_[]byte === RUN TestStructToSchema/nested_simpe_structs === RUN TestStructToSchema/nested_struct_type --- PASS: TestStructToSchema (0.00s) --- PASS: TestStructToSchema/scalar_type (0.00s) --- PASS: TestStructToSchema/simple_struct_type (0.00s) --- PASS: TestStructToSchema/simple_list (0.00s) --- PASS: TestStructToSchema/simple_[]byte (0.00s) --- PASS: TestStructToSchema/nested_simpe_structs (0.00s) --- PASS: TestStructToSchema/nested_struct_type (0.00s) === RUN TestToParquetLevels === RUN TestToParquetLevels/nested_type --- PASS: TestToParquetLevels (0.00s) --- PASS: TestToParquetLevels/nested_type (0.00s) === RUN TestToParquetValue_BasicTypes === RUN TestToParquetValue_BasicTypes/BoolValue_true === RUN TestToParquetValue_BasicTypes/Int32Value === RUN TestToParquetValue_BasicTypes/Int64Value === RUN TestToParquetValue_BasicTypes/FloatValue === RUN TestToParquetValue_BasicTypes/DoubleValue === RUN TestToParquetValue_BasicTypes/BytesValue === RUN TestToParquetValue_BasicTypes/BytesValue_empty === RUN TestToParquetValue_BasicTypes/StringValue --- PASS: TestToParquetValue_BasicTypes (0.00s) --- PASS: TestToParquetValue_BasicTypes/BoolValue_true (0.00s) --- PASS: TestToParquetValue_BasicTypes/Int32Value (0.00s) --- PASS: TestToParquetValue_BasicTypes/Int64Value (0.00s) --- PASS: TestToParquetValue_BasicTypes/FloatValue (0.00s) --- PASS: TestToParquetValue_BasicTypes/DoubleValue (0.00s) --- PASS: TestToParquetValue_BasicTypes/BytesValue (0.00s) --- PASS: TestToParquetValue_BasicTypes/BytesValue_empty (0.00s) --- PASS: TestToParquetValue_BasicTypes/StringValue (0.00s) === RUN TestToParquetValue_TimestampValue === RUN TestToParquetValue_TimestampValue/Valid_TimestampValue_UTC === RUN TestToParquetValue_TimestampValue/Valid_TimestampValue_local === RUN TestToParquetValue_TimestampValue/TimestampValue_zero === RUN TestToParquetValue_TimestampValue/TimestampValue_negative_(before_epoch) === RUN TestToParquetValue_TimestampValue/TimestampValue_nil_pointer --- PASS: TestToParquetValue_TimestampValue (0.00s) --- PASS: TestToParquetValue_TimestampValue/Valid_TimestampValue_UTC (0.00s) --- PASS: TestToParquetValue_TimestampValue/Valid_TimestampValue_local (0.00s) --- PASS: TestToParquetValue_TimestampValue/TimestampValue_zero (0.00s) --- PASS: TestToParquetValue_TimestampValue/TimestampValue_negative_(before_epoch) (0.00s) --- PASS: TestToParquetValue_TimestampValue/TimestampValue_nil_pointer (0.00s) === RUN TestToParquetValue_DateValue === RUN TestToParquetValue_DateValue/Valid_DateValue_(2024-01-01) === RUN TestToParquetValue_DateValue/DateValue_epoch_(1970-01-01) === RUN TestToParquetValue_DateValue/DateValue_before_epoch === RUN TestToParquetValue_DateValue/DateValue_nil_pointer --- PASS: TestToParquetValue_DateValue (0.00s) --- PASS: TestToParquetValue_DateValue/Valid_DateValue_(2024-01-01) (0.00s) --- PASS: TestToParquetValue_DateValue/DateValue_epoch_(1970-01-01) (0.00s) --- PASS: TestToParquetValue_DateValue/DateValue_before_epoch (0.00s) --- PASS: TestToParquetValue_DateValue/DateValue_nil_pointer (0.00s) === RUN TestToParquetValue_DecimalValue === RUN TestToParquetValue_DecimalValue/Small_Decimal_(precision_<=_9)_-_positive === RUN TestToParquetValue_DecimalValue/Small_Decimal_(precision_<=_9)_-_negative === RUN TestToParquetValue_DecimalValue/Medium_Decimal_(9_<_precision_<=_18) === RUN TestToParquetValue_DecimalValue/Large_Decimal_(precision_>_18) === RUN TestToParquetValue_DecimalValue/Decimal_with_zero_precision === RUN TestToParquetValue_DecimalValue/Decimal_nil_pointer === RUN TestToParquetValue_DecimalValue/Decimal_with_nil_Value_bytes === RUN TestToParquetValue_DecimalValue/Decimal_with_empty_Value_bytes === RUN TestToParquetValue_DecimalValue/Decimal_out_of_int32_range_(stored_as_binary) === RUN TestToParquetValue_DecimalValue/Decimal_out_of_int64_range_(stored_as_binary) === RUN TestToParquetValue_DecimalValue/Decimal_extremely_large_value_(should_be_rejected) --- PASS: TestToParquetValue_DecimalValue (0.00s) --- PASS: TestToParquetValue_DecimalValue/Small_Decimal_(precision_<=_9)_-_positive (0.00s) --- PASS: TestToParquetValue_DecimalValue/Small_Decimal_(precision_<=_9)_-_negative (0.00s) --- PASS: TestToParquetValue_DecimalValue/Medium_Decimal_(9_<_precision_<=_18) (0.00s) --- PASS: TestToParquetValue_DecimalValue/Large_Decimal_(precision_>_18) (0.00s) --- PASS: TestToParquetValue_DecimalValue/Decimal_with_zero_precision (0.00s) --- PASS: TestToParquetValue_DecimalValue/Decimal_nil_pointer (0.00s) --- PASS: TestToParquetValue_DecimalValue/Decimal_with_nil_Value_bytes (0.00s) --- PASS: TestToParquetValue_DecimalValue/Decimal_with_empty_Value_bytes (0.00s) --- PASS: TestToParquetValue_DecimalValue/Decimal_out_of_int32_range_(stored_as_binary) (0.00s) --- PASS: TestToParquetValue_DecimalValue/Decimal_out_of_int64_range_(stored_as_binary) (0.00s) --- PASS: TestToParquetValue_DecimalValue/Decimal_extremely_large_value_(should_be_rejected) (0.00s) === RUN TestToParquetValue_TimeValue === RUN TestToParquetValue_TimeValue/Valid_TimeValue_(12:34:56.789) === RUN TestToParquetValue_TimeValue/TimeValue_midnight === RUN TestToParquetValue_TimeValue/TimeValue_end_of_day_(23:59:59.999999) === RUN TestToParquetValue_TimeValue/TimeValue_nil_pointer --- PASS: TestToParquetValue_TimeValue (0.00s) --- PASS: TestToParquetValue_TimeValue/Valid_TimeValue_(12:34:56.789) (0.00s) --- PASS: TestToParquetValue_TimeValue/TimeValue_midnight (0.00s) --- PASS: TestToParquetValue_TimeValue/TimeValue_end_of_day_(23:59:59.999999) (0.00s) --- PASS: TestToParquetValue_TimeValue/TimeValue_nil_pointer (0.00s) === RUN TestToParquetValue_EdgeCases === RUN TestToParquetValue_EdgeCases/Nil_value === RUN TestToParquetValue_EdgeCases/Completely_nil_value === RUN TestToParquetValue_EdgeCases/BytesValue_with_nil_slice --- PASS: TestToParquetValue_EdgeCases (0.00s) --- PASS: TestToParquetValue_EdgeCases/Nil_value (0.00s) --- PASS: TestToParquetValue_EdgeCases/Completely_nil_value (0.00s) --- PASS: TestToParquetValue_EdgeCases/BytesValue_with_nil_slice (0.00s) === RUN TestWriteReadParquet RecordType: fields:{name:"Address" type:{record_type:{fields:{name:"City" type:{scalar_type:STRING}} fields:{name:"Street" type:{scalar_type:STRING}}}}} fields:{name:"Company" type:{scalar_type:STRING}} fields:{name:"CreatedAt" type:{scalar_type:INT64}} fields:{name:"ID" type:{scalar_type:INT64}} fields:{name:"Person" type:{record_type:{fields:{name:"emails" type:{list_type:{element_type:{scalar_type:STRING}}}} fields:{name:"zName" type:{scalar_type:STRING}}}}} ParquetSchema: message example { optional group Address { optional binary City; optional binary Street; } optional binary Company; optional int64 CreatedAt (INT(64,true)); optional int64 ID (INT(64,true)); optional group Person { repeated binary emails; optional binary zName; } } Go Type: struct { Address *struct { City *[]uint8 "parquet:\"City\""; Street *[]uint8 "parquet:\"Street\"" } "parquet:\"Address\""; Company *[]uint8 "parquet:\"Company\""; CreatedAt *int64 "parquet:\"CreatedAt\""; ID *int64 "parquet:\"ID\""; Person *struct { Emails []*[]uint8 "parquet:\"emails\""; ZName *[]uint8 "parquet:\"zName\"" } "parquet:\"Person\"" } Write RecordValue: fields:{key:"Company" value:{string_value:"company_0"}} fields:{key:"CreatedAt" value:{int64_value:2}} fields:{key:"ID" value:{int64_value:1}} fields:{key:"Person" value:{record_value:{fields:{key:"emails" value:{list_value:{values:{string_value:"john_0@a.com"} values:{string_value:"john_0@b.com"} values:{string_value:"john_0@c.com"} values:{string_value:"john_0@d.com"} values:{string_value:"john_0@e.com"}}}} fields:{key:"zName" value:{string_value:"john_0"}}}}} Build Row: [C:0 D:2 R:0 V: C:1 D:2 R:0 V: C:2 D:1 R:0 V:company_0 C:3 D:1 R:0 V:2 C:4 D:1 R:0 V:1 C:5 D:2 R:0 V:john_0@a.com C:5 D:2 R:1 V:john_0@b.com C:5 D:2 R:1 V:john_0@c.com C:5 D:2 R:1 V:john_0@d.com C:5 D:2 R:1 V:john_0@e.com C:6 D:2 R:0 V:john_0] Write RecordValue: fields:{key:"Company" value:{string_value:"company_1"}} fields:{key:"CreatedAt" value:{int64_value:4}} fields:{key:"ID" value:{int64_value:2}} fields:{key:"Person" value:{record_value:{fields:{key:"emails" value:{list_value:{values:{string_value:"john_1@a.com"} values:{string_value:"john_1@b.com"} values:{string_value:"john_1@c.com"} values:{string_value:"john_1@d.com"} values:{string_value:"john_1@e.com"}}}} fields:{key:"zName" value:{string_value:"john_1"}}}}} Build Row: [C:0 D:2 R:0 V: C:1 D:2 R:0 V: C:2 D:1 R:0 V:company_1 C:3 D:1 R:0 V:4 C:4 D:1 R:0 V:2 C:5 D:2 R:0 V:john_1@a.com C:5 D:2 R:1 V:john_1@b.com C:5 D:2 R:1 V:john_1@c.com C:5 D:2 R:1 V:john_1@d.com C:5 D:2 R:1 V:john_1@e.com C:6 D:2 R:0 V:john_1] Write RecordValue: fields:{key:"Company" value:{string_value:"company_2"}} fields:{key:"CreatedAt" value:{int64_value:6}} fields:{key:"ID" value:{int64_value:3}} fields:{key:"Person" value:{record_value:{fields:{key:"emails" value:{list_value:{values:{string_value:"john_2@a.com"} values:{string_value:"john_2@b.com"} values:{string_value:"john_2@c.com"} values:{string_value:"john_2@d.com"} values:{string_value:"john_2@e.com"}}}} fields:{key:"zName" value:{string_value:"john_2"}}}}} Build Row: [C:0 D:2 R:0 V: C:1 D:2 R:0 V: C:2 D:1 R:0 V:company_2 C:3 D:1 R:0 V:6 C:4 D:1 R:0 V:3 C:5 D:2 R:0 V:john_2@a.com C:5 D:2 R:1 V:john_2@b.com C:5 D:2 R:1 V:john_2@c.com C:5 D:2 R:1 V:john_2@d.com C:5 D:2 R:1 V:john_2@e.com C:6 D:2 R:0 V:john_2] Read RecordValue: fields:{key:"Address" value:{record_value:{fields:{key:"City" value:{string_value:""}} fields:{key:"Street" value:{string_value:""}}}}} fields:{key:"Company" value:{string_value:"company_0"}} fields:{key:"CreatedAt" value:{int64_value:2}} fields:{key:"ID" value:{int64_value:1}} fields:{key:"Person" value:{record_value:{fields:{key:"emails" value:{list_value:{values:{string_value:"john_0@a.com"} values:{string_value:"john_0@b.com"} values:{string_value:"john_0@c.com"} values:{string_value:"john_0@d.com"} values:{string_value:"john_0@e.com"}}}} fields:{key:"zName" value:{string_value:"john_0"}}}}} Read RecordValue: fields:{key:"Address" value:{record_value:{fields:{key:"City" value:{string_value:""}} fields:{key:"Street" value:{string_value:""}}}}} fields:{key:"Company" value:{string_value:"company_1"}} fields:{key:"CreatedAt" value:{int64_value:4}} fields:{key:"ID" value:{int64_value:2}} fields:{key:"Person" value:{record_value:{fields:{key:"emails" value:{list_value:{values:{string_value:"john_1@a.com"} values:{string_value:"john_1@b.com"} values:{string_value:"john_1@c.com"} values:{string_value:"john_1@d.com"} values:{string_value:"john_1@e.com"}}}} fields:{key:"zName" value:{string_value:"john_1"}}}}} Read RecordValue: fields:{key:"Address" value:{record_value:{fields:{key:"City" value:{string_value:""}} fields:{key:"Street" value:{string_value:""}}}}} fields:{key:"Company" value:{string_value:"company_2"}} fields:{key:"CreatedAt" value:{int64_value:6}} fields:{key:"ID" value:{int64_value:3}} fields:{key:"Person" value:{record_value:{fields:{key:"emails" value:{list_value:{values:{string_value:"john_2@a.com"} values:{string_value:"john_2@b.com"} values:{string_value:"john_2@c.com"} values:{string_value:"john_2@d.com"} values:{string_value:"john_2@e.com"}}}} fields:{key:"zName" value:{string_value:"john_2"}}}}} total: 3 --- PASS: TestWriteReadParquet (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/mq/schema 0.027s ? github.com/seaweedfs/seaweedfs/weed/mq/segment [no test files] === RUN TestAddConsumerInstance &{isAssign:true partition:{RangeStart:0 RangeStop:1 RingSize:3 UnixTimeNs:0} consumer:first ts:{wall:14012551741360411428 ext:512354645 loc:0x1c1d0e0}} &{isAssign:true partition:{RangeStart:1 RangeStop:2 RingSize:3 UnixTimeNs:0} consumer:first ts:{wall:14012551741360414855 ext:512358072 loc:0x1c1d0e0}} --- PASS: TestAddConsumerInstance (1.00s) === RUN TestMultipleConsumerInstances &{isAssign:true partition:{RangeStart:0 RangeStop:1 RingSize:3 UnixTimeNs:0} consumer:first ts:{wall:14012551742434554656 ext:1512756039 loc:0x1c1d0e0}} &{isAssign:true partition:{RangeStart:1 RangeStop:2 RingSize:3 UnixTimeNs:0} consumer:second ts:{wall:14012551742434559625 ext:1512761018 loc:0x1c1d0e0}} &{isAssign:true partition:{RangeStart:2 RangeStop:3 RingSize:3 UnixTimeNs:0} consumer:third ts:{wall:14012551742434560427 ext:1512761820 loc:0x1c1d0e0}} --- PASS: TestMultipleConsumerInstances (1.00s) === RUN TestConfirmAdjustment &{isAssign:true partition:{RangeStart:0 RangeStop:1 RingSize:3 UnixTimeNs:0} consumer:first ts:{wall:14012551743509537247 ext:2513996816 loc:0x1c1d0e0}} &{isAssign:true partition:{RangeStart:1 RangeStop:2 RingSize:3 UnixTimeNs:0} consumer:second ts:{wall:14012551743509540634 ext:2514000203 loc:0x1c1d0e0}} &{isAssign:true partition:{RangeStart:2 RangeStop:3 RingSize:3 UnixTimeNs:0} consumer:third ts:{wall:14012551743509541435 ext:2514001004 loc:0x1c1d0e0}} &{isAssign:true partition:{RangeStart:2 RangeStop:3 RingSize:3 UnixTimeNs:0} consumer:second ts:{wall:14012551745656994819 ext:4513970740 loc:0x1c1d0e0}} --- PASS: TestConfirmAdjustment (5.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/mq/sub_coordinator 7.022s === RUN TestOffsetBasedSubscribe_AllDataInMemory === RUN TestOffsetBasedSubscribe_AllDataInMemory/ReadFromOffset0 === RUN TestOffsetBasedSubscribe_AllDataInMemory/ReadFromOffset2 --- PASS: TestOffsetBasedSubscribe_AllDataInMemory (0.00s) --- PASS: TestOffsetBasedSubscribe_AllDataInMemory/ReadFromOffset0 (0.00s) --- PASS: TestOffsetBasedSubscribe_AllDataInMemory/ReadFromOffset2 (0.00s) === RUN TestOffsetBasedSubscribe_DataOnDisk === RUN TestOffsetBasedSubscribe_DataOnDisk/ReadFromOffset0_OnDisk === RUN TestOffsetBasedSubscribe_DataOnDisk/ReadFromOffset5_OnDisk === RUN TestOffsetBasedSubscribe_DataOnDisk/ReadFromOffset11_InMemory --- PASS: TestOffsetBasedSubscribe_DataOnDisk (0.00s) --- PASS: TestOffsetBasedSubscribe_DataOnDisk/ReadFromOffset0_OnDisk (0.00s) --- PASS: TestOffsetBasedSubscribe_DataOnDisk/ReadFromOffset5_OnDisk (0.00s) --- PASS: TestOffsetBasedSubscribe_DataOnDisk/ReadFromOffset11_InMemory (0.00s) === RUN TestTimestampBasedSubscribe === RUN TestTimestampBasedSubscribe/ReadFromBeginning === RUN TestTimestampBasedSubscribe/ReadFromMiddleTimestamp --- PASS: TestTimestampBasedSubscribe (0.00s) --- PASS: TestTimestampBasedSubscribe/ReadFromBeginning (0.00s) --- PASS: TestTimestampBasedSubscribe/ReadFromMiddleTimestamp (0.00s) === RUN TestConcurrentSubscribers --- PASS: TestConcurrentSubscribers (0.00s) === RUN TestResumeFromDiskError --- PASS: TestResumeFromDiskError (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/mq/topic 0.033s ? github.com/seaweedfs/seaweedfs/weed/notification [no test files] ? github.com/seaweedfs/seaweedfs/weed/notification/aws_sqs [no test files] ? github.com/seaweedfs/seaweedfs/weed/notification/gocdk_pub_sub [no test files] ? github.com/seaweedfs/seaweedfs/weed/notification/google_pub_sub [no test files] === RUN TestConfigureSASLTLSRejectsPartialMTLSConfig === RUN TestConfigureSASLTLSRejectsPartialMTLSConfig/missing_key === RUN TestConfigureSASLTLSRejectsPartialMTLSConfig/missing_cert --- PASS: TestConfigureSASLTLSRejectsPartialMTLSConfig (0.00s) --- PASS: TestConfigureSASLTLSRejectsPartialMTLSConfig/missing_key (0.00s) --- PASS: TestConfigureSASLTLSRejectsPartialMTLSConfig/missing_cert (0.00s) === RUN TestConfigureSASLTLSConfiguresSCRAMSHA256 --- PASS: TestConfigureSASLTLSConfiguresSCRAMSHA256 (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/notification/kafka 0.012s ? github.com/seaweedfs/seaweedfs/weed/notification/log [no test files] === RUN TestFilterEventTypes === RUN TestFilterEventTypes/create_event_-_allowed === RUN TestFilterEventTypes/create_event_-_not_allowed === RUN TestFilterEventTypes/delete_event_-_allowed === RUN TestFilterEventTypes/update_event_-_allowed === RUN TestFilterEventTypes/rename_event_-_allowed === RUN TestFilterEventTypes/rename_event_same_name_different_parent_-_allowed === RUN TestFilterEventTypes/rename_event_-_not_allowed === RUN TestFilterEventTypes/all_events_allowed_when_empty --- PASS: TestFilterEventTypes (0.00s) --- PASS: TestFilterEventTypes/create_event_-_allowed (0.00s) --- PASS: TestFilterEventTypes/create_event_-_not_allowed (0.00s) --- PASS: TestFilterEventTypes/delete_event_-_allowed (0.00s) --- PASS: TestFilterEventTypes/update_event_-_allowed (0.00s) --- PASS: TestFilterEventTypes/rename_event_-_allowed (0.00s) --- PASS: TestFilterEventTypes/rename_event_same_name_different_parent_-_allowed (0.00s) --- PASS: TestFilterEventTypes/rename_event_-_not_allowed (0.00s) --- PASS: TestFilterEventTypes/all_events_allowed_when_empty (0.00s) === RUN TestFilterPathPrefixes === RUN TestFilterPathPrefixes/matches_single_prefix === RUN TestFilterPathPrefixes/matches_one_of_multiple_prefixes === RUN TestFilterPathPrefixes/no_match === RUN TestFilterPathPrefixes/empty_prefixes_allows_all === RUN TestFilterPathPrefixes/exact_prefix_match === RUN TestFilterPathPrefixes/partial_match_not_allowed === RUN TestFilterPathPrefixes/rename_matches_destination_prefix --- PASS: TestFilterPathPrefixes (0.00s) --- PASS: TestFilterPathPrefixes/matches_single_prefix (0.00s) --- PASS: TestFilterPathPrefixes/matches_one_of_multiple_prefixes (0.00s) --- PASS: TestFilterPathPrefixes/no_match (0.00s) --- PASS: TestFilterPathPrefixes/empty_prefixes_allows_all (0.00s) --- PASS: TestFilterPathPrefixes/exact_prefix_match (0.00s) --- PASS: TestFilterPathPrefixes/partial_match_not_allowed (0.00s) --- PASS: TestFilterPathPrefixes/rename_matches_destination_prefix (0.00s) === RUN TestFilterCombined === RUN TestFilterCombined/allowed_event_and_path === RUN TestFilterCombined/allowed_event_but_wrong_path === RUN TestFilterCombined/wrong_event_but_allowed_path === RUN TestFilterCombined/wrong_event_and_wrong_path --- PASS: TestFilterCombined (0.00s) --- PASS: TestFilterCombined/allowed_event_and_path (0.00s) --- PASS: TestFilterCombined/allowed_event_but_wrong_path (0.00s) --- PASS: TestFilterCombined/wrong_event_but_allowed_path (0.00s) --- PASS: TestFilterCombined/wrong_event_and_wrong_path (0.00s) === RUN TestHttpClientSendMessage --- PASS: TestHttpClientSendMessage (0.00s) === RUN TestHttpClientSendMessageWithoutToken --- PASS: TestHttpClientSendMessageWithoutToken (0.00s) === RUN TestHttpClientSendMessageServerError --- PASS: TestHttpClientSendMessageServerError (0.00s) === RUN TestHttpClientSendMessageNetworkError --- PASS: TestHttpClientSendMessageNetworkError (0.00s) === RUN TestHttpClientFollowsRedirectAsPost --- PASS: TestHttpClientFollowsRedirectAsPost (0.00s) === RUN TestHttpClientUsesCachedRedirect --- PASS: TestHttpClientUsesCachedRedirect (0.00s) === RUN TestHttpClientPreservesPostMethod --- PASS: TestHttpClientPreservesPostMethod (0.00s) === RUN TestHttpClientInvalidatesCacheOnError --- PASS: TestHttpClientInvalidatesCacheOnError (0.01s) === RUN TestHttpClientInvalidatesCacheOnNetworkError --- PASS: TestHttpClientInvalidatesCacheOnNetworkError (0.00s) === RUN TestConfigValidation === RUN TestConfigValidation/valid_config === RUN TestConfigValidation/empty_endpoint === RUN TestConfigValidation/invalid_URL === RUN TestConfigValidation/timeout_too_large === RUN TestConfigValidation/too_many_retries === RUN TestConfigValidation/too_many_workers === RUN TestConfigValidation/buffer_too_large --- PASS: TestConfigValidation (0.00s) --- PASS: TestConfigValidation/valid_config (0.00s) --- PASS: TestConfigValidation/empty_endpoint (0.00s) --- PASS: TestConfigValidation/invalid_URL (0.00s) --- PASS: TestConfigValidation/timeout_too_large (0.00s) --- PASS: TestConfigValidation/too_many_retries (0.00s) --- PASS: TestConfigValidation/too_many_workers (0.00s) --- PASS: TestConfigValidation/buffer_too_large (0.00s) === RUN TestWebhookMessageSerialization --- PASS: TestWebhookMessageSerialization (0.00s) === RUN TestQueueInitialize [watermill] 2026/05/05 12:12:52.269074 router.go:280: level=INFO msg="Adding handler" handler_name=webhook_handler topic=webhook_topic [watermill] 2026/05/05 12:12:52.269263 router.go:434: level=INFO msg="Running router handlers" count=1 [watermill] 2026/05/05 12:12:52.269283 router.go:648: level=INFO msg="Starting handler" subscriber_name=webhook_handler topic=webhook_topic [watermill] 2026/05/05 12:12:52.269308 router.go:483: level=INFO msg="Subscriber stopped" subscriber_name=webhook_handler topic=webhook_topic [watermill] 2026/05/05 12:12:52.269321 router.go:580: level=INFO msg="Closing router" [watermill] 2026/05/05 12:12:52.269337 router.go:413: level=INFO msg="Waiting for messages" timeout=1m0s [watermill] 2026/05/05 12:12:52.269343 router.go:591: level=INFO msg="Router closed" [watermill] 2026/05/05 12:12:52.269347 router.go:419: level=INFO msg="All messages processed" I0505 12:12:52.269354 webhook_queue.go:170 webhook pubsub worker stopped --- PASS: TestQueueInitialize (0.10s) === RUN TestQueueSendMessage [watermill] 2026/05/05 12:12:52.369960 router.go:280: level=INFO msg="Adding handler" handler_name=webhook_handler topic=webhook_topic [watermill] 2026/05/05 12:12:52.369995 pubsub.go:160: level=INFO msg="No subscribers to send message" message_uuid=8f3a828e-93b2-4033-b193-cc729ef5b40a pubsub_uuid=fbYjRpzKfciCsnUMcP4dBW topic=webhook_topic [watermill] 2026/05/05 12:12:52.370017 router.go:434: level=INFO msg="Running router handlers" count=1 [watermill] 2026/05/05 12:12:52.370037 router.go:648: level=INFO msg="Starting handler" subscriber_name=webhook_handler topic=webhook_topic [watermill] 2026/05/05 12:12:52.370048 router.go:483: level=INFO msg="Subscriber stopped" subscriber_name=webhook_handler topic=webhook_topic [watermill] 2026/05/05 12:12:52.370055 router.go:580: level=INFO msg="Closing router" [watermill] 2026/05/05 12:12:52.370064 router.go:413: level=INFO msg="Waiting for messages" timeout=1m0s [watermill] 2026/05/05 12:12:52.370070 router.go:591: level=INFO msg="Router closed" [watermill] 2026/05/05 12:12:52.370074 router.go:419: level=INFO msg="All messages processed" I0505 12:12:52.370082 webhook_queue.go:170 webhook pubsub worker stopped --- PASS: TestQueueSendMessage (0.10s) === RUN TestQueueHandleWebhook --- PASS: TestQueueHandleWebhook (0.00s) === RUN TestQueueEndToEnd [watermill] 2026/05/05 12:12:52.471249 router.go:280: level=INFO msg="Adding handler" handler_name=webhook_handler topic=webhook_topic [watermill] 2026/05/05 12:12:52.471285 pubsub.go:160: level=INFO msg="No subscribers to send message" message_uuid=30e28c28-5d77-49ea-875c-0174c7161095 pubsub_uuid=57fUy2EnVNiDSzZUnxEH4k topic=webhook_topic [watermill] 2026/05/05 12:12:52.471316 router.go:434: level=INFO msg="Running router handlers" count=1 [watermill] 2026/05/05 12:12:52.471368 router.go:648: level=INFO msg="Starting handler" subscriber_name=webhook_handler topic=webhook_topic [watermill] 2026/05/05 12:12:52.471385 router.go:483: level=INFO msg="Subscriber stopped" subscriber_name=webhook_handler topic=webhook_topic [watermill] 2026/05/05 12:12:52.471396 router.go:580: level=INFO msg="Closing router" [watermill] 2026/05/05 12:12:52.471411 router.go:413: level=INFO msg="Waiting for messages" timeout=1m0s [watermill] 2026/05/05 12:12:52.471419 router.go:591: level=INFO msg="Router closed" [watermill] 2026/05/05 12:12:52.471424 router.go:419: level=INFO msg="All messages processed" I0505 12:12:52.471432 webhook_queue.go:170 webhook pubsub worker stopped --- PASS: TestQueueEndToEnd (0.10s) === RUN TestQueueRetryMechanism [watermill] 2026/05/05 12:12:52.571784 router.go:280: level=INFO msg="Adding handler" handler_name=webhook_handler topic=webhook_topic [watermill] 2026/05/05 12:12:52.571861 router.go:434: level=INFO msg="Running router handlers" count=1 [watermill] 2026/05/05 12:12:52.571879 router.go:648: level=INFO msg="Starting handler" subscriber_name=webhook_handler topic=webhook_topic [watermill] 2026/05/05 12:12:52.571984 router.go:483: level=INFO msg="Subscriber stopped" subscriber_name=webhook_handler topic=webhook_topic [watermill] 2026/05/05 12:12:52.571994 router.go:580: level=INFO msg="Closing router" [watermill] 2026/05/05 12:12:52.572643 router.go:413: level=INFO msg="Waiting for messages" timeout=1m0s E0505 12:12:52.765736 webhook_queue.go:195 failed to send message to webhook /test/retry: webhook returned status code: 405 [watermill] 2026/05/05 12:12:52.766087 pubsub.go:160: level=INFO msg="No subscribers to send message" message_uuid=e5277774-88d0-4317-ab32-b8c0a5b034e1 pubsub_uuid=kzUAJQuuzPXGKCQHjk6oQA topic=webhook_dead_letter [watermill] 2026/05/05 12:12:52.766120 router.go:591: level=INFO msg="Router closed" --- PASS: TestQueueRetryMechanism (0.19s) === RUN TestQueueNoDuplicateWebhooks === RUN TestQueueNoDuplicateWebhooks/1_worker [watermill] 2026/05/05 12:12:52.766290 router.go:280: level=INFO msg="Adding handler" handler_name=webhook_handler topic=webhook_topic [watermill] 2026/05/05 12:12:52.766311 router.go:419: level=INFO msg="All messages processed" I0505 12:12:52.766316 webhook_queue.go:170 webhook pubsub worker stopped [watermill] 2026/05/05 12:12:52.766347 router.go:434: level=INFO msg="Running router handlers" count=1 [watermill] 2026/05/05 12:12:52.766360 router.go:648: level=INFO msg="Starting handler" subscriber_name=webhook_handler topic=webhook_topic [watermill] 2026/05/05 12:12:53.468173 router.go:483: level=INFO msg="Subscriber stopped" subscriber_name=webhook_handler topic=webhook_topic [watermill] 2026/05/05 12:12:53.468207 router.go:580: level=INFO msg="Closing router" [watermill] 2026/05/05 12:12:53.468234 router.go:413: level=INFO msg="Waiting for messages" timeout=1m0s [watermill] 2026/05/05 12:12:53.468243 router.go:591: level=INFO msg="Router closed" [watermill] 2026/05/05 12:12:53.468248 router.go:419: level=INFO msg="All messages processed" I0505 12:12:53.468256 webhook_queue.go:170 webhook pubsub worker stopped === RUN TestQueueNoDuplicateWebhooks/5_workers [watermill] 2026/05/05 12:12:53.568807 router.go:280: level=INFO msg="Adding handler" handler_name=webhook_handler topic=webhook_topic [watermill] 2026/05/05 12:12:53.568854 router.go:434: level=INFO msg="Running router handlers" count=1 [watermill] 2026/05/05 12:12:53.568873 router.go:648: level=INFO msg="Starting handler" subscriber_name=webhook_handler topic=webhook_topic [watermill] 2026/05/05 12:12:54.271640 router.go:483: level=INFO msg="Subscriber stopped" subscriber_name=webhook_handler topic=webhook_topic [watermill] 2026/05/05 12:12:54.271669 router.go:580: level=INFO msg="Closing router" [watermill] 2026/05/05 12:12:54.271679 router.go:591: level=INFO msg="Router closed" [watermill] 2026/05/05 12:12:54.271689 router.go:413: level=INFO msg="Waiting for messages" timeout=1m0s [watermill] 2026/05/05 12:12:54.271703 router.go:419: level=INFO msg="All messages processed" I0505 12:12:54.271712 webhook_queue.go:170 webhook pubsub worker stopped === RUN TestQueueNoDuplicateWebhooks/10_workers [watermill] 2026/05/05 12:12:54.372515 router.go:280: level=INFO msg="Adding handler" handler_name=webhook_handler topic=webhook_topic [watermill] 2026/05/05 12:12:54.372557 router.go:434: level=INFO msg="Running router handlers" count=1 [watermill] 2026/05/05 12:12:54.372569 router.go:648: level=INFO msg="Starting handler" subscriber_name=webhook_handler topic=webhook_topic [watermill] 2026/05/05 12:12:55.072770 router.go:483: level=INFO msg="Subscriber stopped" subscriber_name=webhook_handler topic=webhook_topic [watermill] 2026/05/05 12:12:55.072812 router.go:580: level=INFO msg="Closing router" [watermill] 2026/05/05 12:12:55.072833 router.go:413: level=INFO msg="Waiting for messages" timeout=1m0s [watermill] 2026/05/05 12:12:55.072842 router.go:591: level=INFO msg="Router closed" [watermill] 2026/05/05 12:12:55.072848 router.go:419: level=INFO msg="All messages processed" I0505 12:12:55.072856 webhook_queue.go:170 webhook pubsub worker stopped --- PASS: TestQueueNoDuplicateWebhooks (2.41s) --- PASS: TestQueueNoDuplicateWebhooks/1_worker (0.80s) --- PASS: TestQueueNoDuplicateWebhooks/5_workers (0.80s) --- PASS: TestQueueNoDuplicateWebhooks/10_workers (0.80s) === RUN TestQueueSendMessageWithFilter === RUN TestQueueSendMessageWithFilter/allowed_event_type === RUN TestQueueSendMessageWithFilter/filtered_event_type === RUN TestQueueSendMessageWithFilter/allowed_path_prefix === RUN TestQueueSendMessageWithFilter/filtered_path_prefix === RUN TestQueueSendMessageWithFilter/combined_filters_-_both_pass === RUN TestQueueSendMessageWithFilter/combined_filters_-_event_fails === RUN TestQueueSendMessageWithFilter/combined_filters_-_path_fails --- PASS: TestQueueSendMessageWithFilter (0.00s) --- PASS: TestQueueSendMessageWithFilter/allowed_event_type (0.00s) --- PASS: TestQueueSendMessageWithFilter/filtered_event_type (0.00s) --- PASS: TestQueueSendMessageWithFilter/allowed_path_prefix (0.00s) --- PASS: TestQueueSendMessageWithFilter/filtered_path_prefix (0.00s) --- PASS: TestQueueSendMessageWithFilter/combined_filters_-_both_pass (0.00s) --- PASS: TestQueueSendMessageWithFilter/combined_filters_-_event_fails (0.00s) --- PASS: TestQueueSendMessageWithFilter/combined_filters_-_path_fails (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/notification/webhook 2.938s === RUN TestAssignRetriesOnUnavailable --- PASS: TestAssignRetriesOnUnavailable (4.77s) === RUN TestAssignStopsOnContextCancel --- PASS: TestAssignStopsOnContextCancel (2.00s) === RUN TestCaching vid 123 locations = [{a.com:8080 0}] --- PASS: TestCaching (2.01s) === RUN TestCreateNeedleFromRequest needle: 0f084d17353afda0 Size:0, DataSize:0, Name:t.txt, Mime:text/plain; charset=utf-8 Compressed:true, originalSize: 1422 W0505 12:13:01.042404 upload_content.go:259 uploading 0 to http://localhost:8080/389,0f084d17353afda0: upload t.txt 803 bytes to http://localhost:8080/389,0f084d17353afda0: EOF needle: 0f084d17353afda0 Size:0, DataSize:0, Name:t.txt, Mime:text/plain; charset=utf-8 Compressed:true, originalSize: 1422 W0505 12:13:01.519184 upload_content.go:259 uploading 1 to http://localhost:8080/389,0f084d17353afda0: upload t.txt 803 bytes to http://localhost:8080/389,0f084d17353afda0: EOF needle: 0f084d17353afda0 Size:0, DataSize:0, Name:t.txt, Mime:text/plain; charset=utf-8 Compressed:true, originalSize: 1422 W0505 12:13:02.231746 upload_content.go:259 uploading 2 to http://localhost:8080/389,0f084d17353afda0: upload t.txt 803 bytes to http://localhost:8080/389,0f084d17353afda0: EOF err: upload t.txt 803 bytes to http://localhost:8080/389,0f084d17353afda0: EOF uploadResult: needle: 0f084d17353afda0 Size:0, DataSize:0, Name:t.txt, Mime:text/plain Compressed:true, dataSize:803 originalSize:1422 W0505 12:13:02.231832 upload_content.go:259 uploading 0 to http://localhost:8080/389,0f084d17353afda0: upload t.txt 803 bytes to http://localhost:8080/389,0f084d17353afda0: EOF needle: 0f084d17353afda0 Size:0, DataSize:0, Name:t.txt, Mime:text/plain Compressed:true, dataSize:803 originalSize:1422 W0505 12:13:02.707413 upload_content.go:259 uploading 1 to http://localhost:8080/389,0f084d17353afda0: upload t.txt 803 bytes to http://localhost:8080/389,0f084d17353afda0: EOF needle: 0f084d17353afda0 Size:0, DataSize:0, Name:t.txt, Mime:text/plain Compressed:true, dataSize:803 originalSize:1422 W0505 12:13:03.420793 upload_content.go:259 uploading 2 to http://localhost:8080/389,0f084d17353afda0: upload t.txt 803 bytes to http://localhost:8080/389,0f084d17353afda0: EOF --- PASS: TestCreateNeedleFromRequest (2.38s) === RUN TestUploadReaderInChunksReturnsPartialResultsOnError E0505 12:13:03.420979 upload_chunked.go:263 chunked upload failed: assign volume: simulated volume assignment failure (returning 1 partial chunks for cleanup) upload_chunked_test.go:65: ✓ Got expected error: assign volume: simulated volume assignment failure upload_chunked_test.go:71: ✓ Result is not nil (partial results returned) upload_chunked_test.go:77: ✓ Result contains 1 chunks (may be 0 if all assignments failed) upload_chunked_test.go:83: ✓ Md5Hash is available for partial data upload_chunked_test.go:90: ✓ TotalSize = 40960 bytes read before failure --- PASS: TestUploadReaderInChunksReturnsPartialResultsOnError (0.00s) === RUN TestUploadReaderInChunksSuccessPath upload_chunked_test.go:133: ✓ Upload completed without error upload_chunked_test.go:139: ✓ Result is not nil upload_chunked_test.go:145: ✓ Result contains 1 file chunk(s) upload_chunked_test.go:152: ✓ TotalSize=15 matches input data upload_chunked_test.go:159: ✓ Md5Hash is available upload_chunked_test.go:174: ✓ Chunk properties validated: FileId=test-fid,1234, Offset=0, Size=15 --- PASS: TestUploadReaderInChunksSuccessPath (0.00s) === RUN TestUploadReaderInChunksContextCancellation E0505 12:13:03.421278 upload_chunked.go:263 chunked upload failed: context canceled (returning 0 partial chunks for cleanup) upload_chunked_test.go:228: ✓ Got partial result on cancellation: chunks=0 --- PASS: TestUploadReaderInChunksContextCancellation (0.00s) === RUN TestUploadReaderInChunksReaderFailure E0505 12:13:03.421322 upload_chunked.go:263 chunked upload failed: read chunk at offset 8192 (got 1808 bytes): simulated read failure (returning 1 partial chunks for cleanup) upload_chunked_test.go:310: ✓ Got partial result on read failure: chunks=1, totalSize=8192 --- PASS: TestUploadReaderInChunksReaderFailure (0.00s) === RUN TestIsUploadRetryableAssignError === RUN TestIsUploadRetryableAssignError/nil === RUN TestIsUploadRetryableAssignError/transport === RUN TestIsUploadRetryableAssignError/read_only === RUN TestIsUploadRetryableAssignError/volume_full === RUN TestIsUploadRetryableAssignError/other_permanent --- PASS: TestIsUploadRetryableAssignError (0.00s) --- PASS: TestIsUploadRetryableAssignError/nil (0.00s) --- PASS: TestIsUploadRetryableAssignError/transport (0.00s) --- PASS: TestIsUploadRetryableAssignError/read_only (0.00s) --- PASS: TestIsUploadRetryableAssignError/volume_full (0.00s) --- PASS: TestIsUploadRetryableAssignError/other_permanent (0.00s) === RUN TestUploadWithRetryDataReassignsOnVolumeSizeExceeded W0505 12:13:03.421486 upload_content.go:259 uploading 0 to http://volume-a/1,first: unmarshalled error http://volume-a/1,first: failed to write to local disk: append to volume 1 size 0 actualSize 0: Volume Size 33555976 Exceeded 33554432 W0505 12:13:03.897505 upload_content.go:259 uploading 1 to http://volume-a/1,first: unmarshalled error http://volume-a/1,first: failed to write to local disk: append to volume 1 size 0 actualSize 0: Volume Size 33555976 Exceeded 33554432 W0505 12:13:04.610715 upload_content.go:259 uploading 2 to http://volume-a/1,first: unmarshalled error http://volume-a/1,first: failed to write to local disk: append to volume 1 size 0 actualSize 0: Volume Size 33555976 Exceeded 33554432 I0505 12:13:04.610737 retry.go:51 retry uploadWithRetry: err: unmarshalled error http://volume-a/1,first: failed to write to local disk: append to volume 1 size 0 actualSize 0: Volume Size 33555976 Exceeded 33554432 I0505 12:13:05.614078 retry.go:44 retry uploadWithRetry successfully --- PASS: TestUploadWithRetryDataReassignsOnVolumeSizeExceeded (2.19s) === RUN TestUploadRewindsBodyOnConnectionReset === RUN TestUploadRewindsBodyOnConnectionReset/connection_reset_by_peer === RUN TestUploadRewindsBodyOnConnectionReset/use_of_closed_network_connection --- PASS: TestUploadRewindsBodyOnConnectionReset (0.00s) --- PASS: TestUploadRewindsBodyOnConnectionReset/connection_reset_by_peer (0.00s) --- PASS: TestUploadRewindsBodyOnConnectionReset/use_of_closed_network_connection (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/operation 13.380s === RUN TestReadLogFileRefsMergeOrder filer_pb_direct_read_test.go:177: Verified 300 events from 3 filers in correct timestamp order --- PASS: TestReadLogFileRefsMergeOrder (0.00s) === RUN TestReadLogFileRefsPathFilter filer_pb_direct_read_test.go:206: Total events: 200, matching /data/filer00/: 100 --- PASS: TestReadLogFileRefsPathFilter (0.00s) === RUN TestDirectReadVsServerSideThroughput === RUN TestDirectReadVsServerSideThroughput/server_side_sequential filer_pb_direct_read_test.go:252: server-side: 6300 events 6.778s 929 events/sec (21 files sequential + 20µs send/event) === RUN TestDirectReadVsServerSideThroughput/client_direct_read_parallel_prefetch filer_pb_direct_read_test.go:273: direct-read: 6300 events 42ms 149718 events/sec (3 filers parallel + prefetch, no gRPC) === NAME TestDirectReadVsServerSideThroughput filer_pb_direct_read_test.go:278: Speedup: 161.1x (parallel + prefetch + no gRPC vs server-side sequential) --- PASS: TestDirectReadVsServerSideThroughput (6.83s) --- PASS: TestDirectReadVsServerSideThroughput/server_side_sequential (6.78s) --- PASS: TestDirectReadVsServerSideThroughput/client_direct_read_parallel_prefetch (0.04s) === RUN TestShouldInvalidateConnection_MarshalErrorIsPerRequest --- PASS: TestShouldInvalidateConnection_MarshalErrorIsPerRequest (0.00s) === RUN TestShouldInvalidateConnection_GenuineInternalStillInvalidates --- PASS: TestShouldInvalidateConnection_GenuineInternalStillInvalidates (0.00s) === RUN TestShouldInvalidateConnection_TransportErrorsStillInvalidate --- PASS: TestShouldInvalidateConnection_TransportErrorsStillInvalidate (0.00s) === RUN TestIsClientSideMarshalError_RequiresGrpcStatus --- PASS: TestIsClientSideMarshalError_RequiresGrpcStatus (0.00s) === RUN TestResolveLocalGrpcSocket_RemotePortCollision === RUN TestResolveLocalGrpcSocket_RemotePortCollision/local_advertised_host_routes_to_socket === RUN TestResolveLocalGrpcSocket_RemotePortCollision/loopback_v4_routes_to_socket === RUN TestResolveLocalGrpcSocket_RemotePortCollision/localhost_routes_to_socket === RUN TestResolveLocalGrpcSocket_RemotePortCollision/loopback_v6_routes_to_socket === RUN TestResolveLocalGrpcSocket_RemotePortCollision/empty_host_(bare_port)_routes_to_socket === RUN TestResolveLocalGrpcSocket_RemotePortCollision/remote_host_with_same_port_stays_on_TCP === RUN TestResolveLocalGrpcSocket_RemotePortCollision/unrelated_host_with_same_port_stays_on_TCP === RUN TestResolveLocalGrpcSocket_RemotePortCollision/unregistered_port_stays_on_TCP === RUN TestResolveLocalGrpcSocket_RemotePortCollision/malformed_address_stays_on_TCP --- PASS: TestResolveLocalGrpcSocket_RemotePortCollision (0.00s) --- PASS: TestResolveLocalGrpcSocket_RemotePortCollision/local_advertised_host_routes_to_socket (0.00s) --- PASS: TestResolveLocalGrpcSocket_RemotePortCollision/loopback_v4_routes_to_socket (0.00s) --- PASS: TestResolveLocalGrpcSocket_RemotePortCollision/localhost_routes_to_socket (0.00s) --- PASS: TestResolveLocalGrpcSocket_RemotePortCollision/loopback_v6_routes_to_socket (0.00s) --- PASS: TestResolveLocalGrpcSocket_RemotePortCollision/empty_host_(bare_port)_routes_to_socket (0.00s) --- PASS: TestResolveLocalGrpcSocket_RemotePortCollision/remote_host_with_same_port_stays_on_TCP (0.00s) --- PASS: TestResolveLocalGrpcSocket_RemotePortCollision/unrelated_host_with_same_port_stays_on_TCP (0.00s) --- PASS: TestResolveLocalGrpcSocket_RemotePortCollision/unregistered_port_stays_on_TCP (0.00s) --- PASS: TestResolveLocalGrpcSocket_RemotePortCollision/malformed_address_stays_on_TCP (0.00s) === RUN TestJsonpMarshalUnmarshal marshalled: { "backendType": "aws", "backendId": "", "key": "", "offset": "0", "fileSize": "12", "modifiedTime": "0", "extension": "" } unmarshalled: backend_type:"aws" backend_id:"temp" file_size:12 --- PASS: TestJsonpMarshalUnmarshal (0.00s) === RUN TestServerAddresses_ToAddressMapOrSrv_shouldRemovePrefix --- PASS: TestServerAddresses_ToAddressMapOrSrv_shouldRemovePrefix (0.00s) === RUN TestServerAddresses_ToAddressMapOrSrv_shouldHandleIPPortList --- PASS: TestServerAddresses_ToAddressMapOrSrv_shouldHandleIPPortList (0.00s) === RUN TestServerAddress_ToHost === RUN TestServerAddress_ToHost/hostname_with_port === RUN TestServerAddress_ToHost/IPv4_with_port === RUN TestServerAddress_ToHost/IPv6_with_port === RUN TestServerAddress_ToHost/hostname_without_port === RUN TestServerAddress_ToHost/hostname_with_port.grpcPort === RUN TestServerAddress_ToHost/IPv4_with_port.grpcPort === RUN TestServerAddress_ToHost/IPv6_with_port.grpcPort === RUN TestServerAddress_ToHost/bracketed_IPv6_without_port --- PASS: TestServerAddress_ToHost (0.00s) --- PASS: TestServerAddress_ToHost/hostname_with_port (0.00s) --- PASS: TestServerAddress_ToHost/IPv4_with_port (0.00s) --- PASS: TestServerAddress_ToHost/IPv6_with_port (0.00s) --- PASS: TestServerAddress_ToHost/hostname_without_port (0.00s) --- PASS: TestServerAddress_ToHost/hostname_with_port.grpcPort (0.00s) --- PASS: TestServerAddress_ToHost/IPv4_with_port.grpcPort (0.00s) --- PASS: TestServerAddress_ToHost/IPv6_with_port.grpcPort (0.00s) --- PASS: TestServerAddress_ToHost/bracketed_IPv6_without_port (0.00s) === RUN TestIPv6ServerAddressFormatting === RUN TestIPv6ServerAddressFormatting/unbracketed_IPv6 === RUN TestIPv6ServerAddressFormatting/bracketed_IPv6 --- PASS: TestIPv6ServerAddressFormatting (0.00s) --- PASS: TestIPv6ServerAddressFormatting/unbracketed_IPv6 (0.00s) --- PASS: TestIPv6ServerAddressFormatting/bracketed_IPv6 (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/pb 6.847s === RUN TestReadDirAllEntriesWithSnapshotCarriesSnapshotAcrossPages --- PASS: TestReadDirAllEntriesWithSnapshotCarriesSnapshotAcrossPages (0.01s) === RUN TestReadDirAllEntriesWithSnapshotEmptyDirectory --- PASS: TestReadDirAllEntriesWithSnapshotEmptyDirectory (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/pb/filer_pb 0.031s ? github.com/seaweedfs/seaweedfs/weed/pb/iam_pb [no test files] ? github.com/seaweedfs/seaweedfs/weed/pb/master_pb [no test files] ? github.com/seaweedfs/seaweedfs/weed/pb/message_fbs [no test files] ? github.com/seaweedfs/seaweedfs/weed/pb/mount_pb [no test files] ? github.com/seaweedfs/seaweedfs/weed/pb/mount_peer_pb [no test files] === RUN TestPublishRecordResponseSerialization --- PASS: TestPublishRecordResponseSerialization (0.00s) === RUN TestSubscribeRecordResponseSerialization --- PASS: TestSubscribeRecordResponseSerialization (0.00s) === RUN TestPublishRecordResponseBackwardCompatibility --- PASS: TestPublishRecordResponseBackwardCompatibility (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/pb/mq_agent_pb 0.008s ? github.com/seaweedfs/seaweedfs/weed/pb/mq_pb [no test files] ? github.com/seaweedfs/seaweedfs/weed/pb/plugin_pb [no test files] ? github.com/seaweedfs/seaweedfs/weed/pb/remote_pb [no test files] ? github.com/seaweedfs/seaweedfs/weed/pb/s3_pb [no test files] === RUN TestOffsetTypeEnums === RUN TestOffsetTypeEnums/EXACT_OFFSET === RUN TestOffsetTypeEnums/RESET_TO_OFFSET --- PASS: TestOffsetTypeEnums (0.00s) --- PASS: TestOffsetTypeEnums/EXACT_OFFSET (0.00s) --- PASS: TestOffsetTypeEnums/RESET_TO_OFFSET (0.00s) === RUN TestPartitionOffsetSerialization --- PASS: TestPartitionOffsetSerialization (0.00s) === RUN TestPartitionOffsetBackwardCompatibility --- PASS: TestPartitionOffsetBackwardCompatibility (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/pb/schema_pb 0.003s ? github.com/seaweedfs/seaweedfs/weed/pb/volume_server_pb [no test files] ? github.com/seaweedfs/seaweedfs/weed/pb/worker_pb [no test files] === RUN TestAdminScriptDescriptorDefaults --- PASS: TestAdminScriptDescriptorDefaults (0.00s) === RUN TestAdminScriptDetectSkipsByRunInterval --- PASS: TestAdminScriptDetectSkipsByRunInterval (0.00s) === RUN TestAdminScriptDetectCreatesProposalWhenIntervalElapsed --- PASS: TestAdminScriptDetectCreatesProposalWhenIntervalElapsed (0.00s) === RUN TestBuildVolumeMetricsEmptyFilter --- PASS: TestBuildVolumeMetricsEmptyFilter (0.00s) === RUN TestBuildVolumeMetricsAllCollections --- PASS: TestBuildVolumeMetricsAllCollections (0.00s) === RUN TestBuildVolumeMetricsEachCollection --- PASS: TestBuildVolumeMetricsEachCollection (0.00s) === RUN TestBuildVolumeMetricsRegexFilter --- PASS: TestBuildVolumeMetricsRegexFilter (0.00s) === RUN TestBuildVolumeMetricsInvalidRegex --- PASS: TestBuildVolumeMetricsInvalidRegex (0.00s) === RUN TestWorkerBuildHelloUsesConfiguredConcurrency --- PASS: TestWorkerBuildHelloUsesConfiguredConcurrency (0.00s) === RUN TestWorkerBuildHelloIncludesMultipleCapabilities --- PASS: TestWorkerBuildHelloIncludesMultipleCapabilities (0.00s) === RUN TestWorkerCancelWorkByTargetID --- PASS: TestWorkerCancelWorkByTargetID (0.00s) === RUN TestWorkerHandleCancelRequestAck --- PASS: TestWorkerHandleCancelRequestAck (0.00s) === RUN TestWorkerSchemaRequestRequiresJobTypeWhenMultipleHandlers --- PASS: TestWorkerSchemaRequestRequiresJobTypeWhenMultipleHandlers (0.00s) === RUN TestWorkerHandleDetectionQueuesWhenAtCapacity --- PASS: TestWorkerHandleDetectionQueuesWhenAtCapacity (0.10s) === RUN TestWorkerHeartbeatReflectsActiveDetectionLoad --- PASS: TestWorkerHeartbeatReflectsActiveDetectionLoad (0.00s) === RUN TestWorkerHeartbeatReflectsActiveExecutionLoad --- PASS: TestWorkerHeartbeatReflectsActiveExecutionLoad (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/plugin/worker 0.126s ? github.com/seaweedfs/seaweedfs/weed/plugin/worker/handlers [no test files] === RUN TestAliasTimestampIntegration === RUN TestAliasTimestampIntegration/AliasWithLargeTimestamps === RUN TestAliasTimestampIntegration/AliasWithLargeTimestamps/Timestamp_1 === RUN TestAliasTimestampIntegration/AliasWithLargeTimestamps/Timestamp_2 === RUN TestAliasTimestampIntegration/AliasWithLargeTimestamps/Timestamp_3 === RUN TestAliasTimestampIntegration/AliasWithTimestampRangeQueries === RUN TestAliasTimestampIntegration/AliasWithTimestampPrecisionEdgeCases === RUN TestAliasTimestampIntegration/MultipleAliasesWithTimestamps === RUN TestAliasTimestampIntegration/CompatibilityWithExistingTimestampFixes === RUN TestAliasTimestampIntegration/CompatibilityWithExistingTimestampFixes/ts_=_1756947416566456262 === RUN TestAliasTimestampIntegration/CompatibilityWithExistingTimestampFixes/ts_=_1756947416566456263 === RUN TestAliasTimestampIntegration/CompatibilityWithExistingTimestampFixes/ts_>_1756947416566456261 === RUN TestAliasTimestampIntegration/CompatibilityWithExistingTimestampFixes/ts_>_1756947416566456262 === RUN TestAliasTimestampIntegration/CompatibilityWithExistingTimestampFixes/ts_>=_1756947416566456262 === RUN TestAliasTimestampIntegration/CompatibilityWithExistingTimestampFixes/ts_>=_1756947416566456263 === RUN TestAliasTimestampIntegration/CompatibilityWithExistingTimestampFixes/ts_<_1756947416566456263 === RUN TestAliasTimestampIntegration/CompatibilityWithExistingTimestampFixes/ts_<_1756947416566456262 === RUN TestAliasTimestampIntegration/CompatibilityWithExistingTimestampFixes/ts_<=_1756947416566456262 === RUN TestAliasTimestampIntegration/CompatibilityWithExistingTimestampFixes/ts_<=_1756947416566456261 === RUN TestAliasTimestampIntegration/ProductionScenarioReproduction --- PASS: TestAliasTimestampIntegration (0.00s) --- PASS: TestAliasTimestampIntegration/AliasWithLargeTimestamps (0.00s) --- PASS: TestAliasTimestampIntegration/AliasWithLargeTimestamps/Timestamp_1 (0.00s) --- PASS: TestAliasTimestampIntegration/AliasWithLargeTimestamps/Timestamp_2 (0.00s) --- PASS: TestAliasTimestampIntegration/AliasWithLargeTimestamps/Timestamp_3 (0.00s) --- PASS: TestAliasTimestampIntegration/AliasWithTimestampRangeQueries (0.00s) --- PASS: TestAliasTimestampIntegration/AliasWithTimestampPrecisionEdgeCases (0.00s) --- PASS: TestAliasTimestampIntegration/MultipleAliasesWithTimestamps (0.00s) --- PASS: TestAliasTimestampIntegration/CompatibilityWithExistingTimestampFixes (0.00s) --- PASS: TestAliasTimestampIntegration/CompatibilityWithExistingTimestampFixes/ts_=_1756947416566456262 (0.00s) --- PASS: TestAliasTimestampIntegration/CompatibilityWithExistingTimestampFixes/ts_=_1756947416566456263 (0.00s) --- PASS: TestAliasTimestampIntegration/CompatibilityWithExistingTimestampFixes/ts_>_1756947416566456261 (0.00s) --- PASS: TestAliasTimestampIntegration/CompatibilityWithExistingTimestampFixes/ts_>_1756947416566456262 (0.00s) --- PASS: TestAliasTimestampIntegration/CompatibilityWithExistingTimestampFixes/ts_>=_1756947416566456262 (0.00s) --- PASS: TestAliasTimestampIntegration/CompatibilityWithExistingTimestampFixes/ts_>=_1756947416566456263 (0.00s) --- PASS: TestAliasTimestampIntegration/CompatibilityWithExistingTimestampFixes/ts_<_1756947416566456263 (0.00s) --- PASS: TestAliasTimestampIntegration/CompatibilityWithExistingTimestampFixes/ts_<_1756947416566456262 (0.00s) --- PASS: TestAliasTimestampIntegration/CompatibilityWithExistingTimestampFixes/ts_<=_1756947416566456262 (0.00s) --- PASS: TestAliasTimestampIntegration/CompatibilityWithExistingTimestampFixes/ts_<=_1756947416566456261 (0.00s) --- PASS: TestAliasTimestampIntegration/ProductionScenarioReproduction (0.00s) === RUN TestArithmeticOperations === RUN TestArithmeticOperations/Add_two_integers === RUN TestArithmeticOperations/Add_integer_and_float === RUN TestArithmeticOperations/Subtract_two_integers === RUN TestArithmeticOperations/Multiply_two_integers === RUN TestArithmeticOperations/Multiply_with_float === RUN TestArithmeticOperations/Divide_two_integers === RUN TestArithmeticOperations/Division_by_zero === RUN TestArithmeticOperations/Modulo_operation === RUN TestArithmeticOperations/Modulo_by_zero === RUN TestArithmeticOperations/Add_string_number_to_integer === RUN TestArithmeticOperations/Invalid_string_conversion === RUN TestArithmeticOperations/Add_boolean_to_integer === RUN TestArithmeticOperations/Add_with_null_left_operand === RUN TestArithmeticOperations/Add_with_null_right_operand --- PASS: TestArithmeticOperations (0.00s) --- PASS: TestArithmeticOperations/Add_two_integers (0.00s) --- PASS: TestArithmeticOperations/Add_integer_and_float (0.00s) --- PASS: TestArithmeticOperations/Subtract_two_integers (0.00s) --- PASS: TestArithmeticOperations/Multiply_two_integers (0.00s) --- PASS: TestArithmeticOperations/Multiply_with_float (0.00s) --- PASS: TestArithmeticOperations/Divide_two_integers (0.00s) --- PASS: TestArithmeticOperations/Division_by_zero (0.00s) --- PASS: TestArithmeticOperations/Modulo_operation (0.00s) --- PASS: TestArithmeticOperations/Modulo_by_zero (0.00s) --- PASS: TestArithmeticOperations/Add_string_number_to_integer (0.00s) --- PASS: TestArithmeticOperations/Invalid_string_conversion (0.00s) --- PASS: TestArithmeticOperations/Add_boolean_to_integer (0.00s) --- PASS: TestArithmeticOperations/Add_with_null_left_operand (0.00s) --- PASS: TestArithmeticOperations/Add_with_null_right_operand (0.00s) === RUN TestIndividualArithmeticFunctions --- PASS: TestIndividualArithmeticFunctions (0.00s) === RUN TestMathematicalFunctions === RUN TestMathematicalFunctions/ROUND_function_tests === RUN TestMathematicalFunctions/ROUND_function_tests/Round_float_to_integer === RUN TestMathematicalFunctions/ROUND_function_tests/Round_integer_stays_integer === RUN TestMathematicalFunctions/ROUND_function_tests/Round_with_precision_2 === RUN TestMathematicalFunctions/ROUND_function_tests/Round_negative_number === RUN TestMathematicalFunctions/ROUND_function_tests/Round_null_value === RUN TestMathematicalFunctions/CEIL_function_tests === RUN TestMathematicalFunctions/CEIL_function_tests/Ceil_positive_decimal === RUN TestMathematicalFunctions/CEIL_function_tests/Ceil_negative_decimal === RUN TestMathematicalFunctions/CEIL_function_tests/Ceil_integer === RUN TestMathematicalFunctions/CEIL_function_tests/Ceil_null_value === RUN TestMathematicalFunctions/FLOOR_function_tests === RUN TestMathematicalFunctions/FLOOR_function_tests/Floor_positive_decimal === RUN TestMathematicalFunctions/FLOOR_function_tests/Floor_negative_decimal === RUN TestMathematicalFunctions/FLOOR_function_tests/Floor_integer === RUN TestMathematicalFunctions/FLOOR_function_tests/Floor_null_value === RUN TestMathematicalFunctions/ABS_function_tests === RUN TestMathematicalFunctions/ABS_function_tests/Abs_positive_integer === RUN TestMathematicalFunctions/ABS_function_tests/Abs_negative_integer === RUN TestMathematicalFunctions/ABS_function_tests/Abs_positive_double === RUN TestMathematicalFunctions/ABS_function_tests/Abs_negative_double === RUN TestMathematicalFunctions/ABS_function_tests/Abs_positive_float === RUN TestMathematicalFunctions/ABS_function_tests/Abs_negative_float === RUN TestMathematicalFunctions/ABS_function_tests/Abs_zero === RUN TestMathematicalFunctions/ABS_function_tests/Abs_null_value --- PASS: TestMathematicalFunctions (0.00s) --- PASS: TestMathematicalFunctions/ROUND_function_tests (0.00s) --- PASS: TestMathematicalFunctions/ROUND_function_tests/Round_float_to_integer (0.00s) --- PASS: TestMathematicalFunctions/ROUND_function_tests/Round_integer_stays_integer (0.00s) --- PASS: TestMathematicalFunctions/ROUND_function_tests/Round_with_precision_2 (0.00s) --- PASS: TestMathematicalFunctions/ROUND_function_tests/Round_negative_number (0.00s) --- PASS: TestMathematicalFunctions/ROUND_function_tests/Round_null_value (0.00s) --- PASS: TestMathematicalFunctions/CEIL_function_tests (0.00s) --- PASS: TestMathematicalFunctions/CEIL_function_tests/Ceil_positive_decimal (0.00s) --- PASS: TestMathematicalFunctions/CEIL_function_tests/Ceil_negative_decimal (0.00s) --- PASS: TestMathematicalFunctions/CEIL_function_tests/Ceil_integer (0.00s) --- PASS: TestMathematicalFunctions/CEIL_function_tests/Ceil_null_value (0.00s) --- PASS: TestMathematicalFunctions/FLOOR_function_tests (0.00s) --- PASS: TestMathematicalFunctions/FLOOR_function_tests/Floor_positive_decimal (0.00s) --- PASS: TestMathematicalFunctions/FLOOR_function_tests/Floor_negative_decimal (0.00s) --- PASS: TestMathematicalFunctions/FLOOR_function_tests/Floor_integer (0.00s) --- PASS: TestMathematicalFunctions/FLOOR_function_tests/Floor_null_value (0.00s) --- PASS: TestMathematicalFunctions/ABS_function_tests (0.00s) --- PASS: TestMathematicalFunctions/ABS_function_tests/Abs_positive_integer (0.00s) --- PASS: TestMathematicalFunctions/ABS_function_tests/Abs_negative_integer (0.00s) --- PASS: TestMathematicalFunctions/ABS_function_tests/Abs_positive_double (0.00s) --- PASS: TestMathematicalFunctions/ABS_function_tests/Abs_negative_double (0.00s) --- PASS: TestMathematicalFunctions/ABS_function_tests/Abs_positive_float (0.00s) --- PASS: TestMathematicalFunctions/ABS_function_tests/Abs_negative_float (0.00s) --- PASS: TestMathematicalFunctions/ABS_function_tests/Abs_zero (0.00s) --- PASS: TestMathematicalFunctions/ABS_function_tests/Abs_null_value (0.00s) === RUN TestSQLEngine_ArithmeticOnlyQueryExecution === RUN TestSQLEngine_ArithmeticOnlyQueryExecution/Basic_arithmetic_only_query arithmetic_only_execution_test.go:75: SUCCESS: SELECT id+user_id, id*2 FROM user_events LIMIT 3 returned 3 rows with calculated values === RUN TestSQLEngine_ArithmeticOnlyQueryExecution/With_LIMIT_and_OFFSET_-_original_user_issue arithmetic_only_execution_test.go:75: SUCCESS: SELECT id+user_id, id*2 FROM user_events LIMIT 2 OFFSET 1 returned 2 rows with calculated values === RUN TestSQLEngine_ArithmeticOnlyQueryExecution/Multiple_arithmetic_expressions arithmetic_only_execution_test.go:75: SUCCESS: SELECT user_id+100, id-1000 FROM user_events LIMIT 1 returned 1 rows with calculated values --- PASS: TestSQLEngine_ArithmeticOnlyQueryExecution (0.00s) --- PASS: TestSQLEngine_ArithmeticOnlyQueryExecution/Basic_arithmetic_only_query (0.00s) --- PASS: TestSQLEngine_ArithmeticOnlyQueryExecution/With_LIMIT_and_OFFSET_-_original_user_issue (0.00s) --- PASS: TestSQLEngine_ArithmeticOnlyQueryExecution/Multiple_arithmetic_expressions (0.00s) === RUN TestSQLEngine_ArithmeticOnlyQueryBugReproduction arithmetic_only_execution_test.go:140: SUCCESS: Arithmetic-only query with OFFSET works correctly! arithmetic_only_execution_test.go:141: Query: SELECT id+user_id, id*amount, id*2 FROM user_events LIMIT 10 OFFSET 5 arithmetic_only_execution_test.go:142: Returned 5 rows with correct calculations --- PASS: TestSQLEngine_ArithmeticOnlyQueryBugReproduction (0.00s) === RUN TestArithmeticExpressionParsing === RUN TestArithmeticExpressionParsing/simple_addition === RUN TestArithmeticExpressionParsing/simple_subtraction === RUN TestArithmeticExpressionParsing/multiplication_with_spaces === RUN TestArithmeticExpressionParsing/string_concatenation === RUN TestArithmeticExpressionParsing/string_concatenation_with_spaces === RUN TestArithmeticExpressionParsing/not_arithmetic --- PASS: TestArithmeticExpressionParsing (0.00s) --- PASS: TestArithmeticExpressionParsing/simple_addition (0.00s) --- PASS: TestArithmeticExpressionParsing/simple_subtraction (0.00s) --- PASS: TestArithmeticExpressionParsing/multiplication_with_spaces (0.00s) --- PASS: TestArithmeticExpressionParsing/string_concatenation (0.00s) --- PASS: TestArithmeticExpressionParsing/string_concatenation_with_spaces (0.00s) --- PASS: TestArithmeticExpressionParsing/not_arithmetic (0.00s) === RUN TestArithmeticExpressionEvaluation === RUN TestArithmeticExpressionEvaluation/integer_addition === RUN TestArithmeticExpressionEvaluation/integer_subtraction === RUN TestArithmeticExpressionEvaluation/mixed_types_multiplication === RUN TestArithmeticExpressionEvaluation/string_concatenation === RUN TestArithmeticExpressionEvaluation/string_concatenation_with_spaces --- PASS: TestArithmeticExpressionEvaluation (0.00s) --- PASS: TestArithmeticExpressionEvaluation/integer_addition (0.00s) --- PASS: TestArithmeticExpressionEvaluation/integer_subtraction (0.00s) --- PASS: TestArithmeticExpressionEvaluation/mixed_types_multiplication (0.00s) --- PASS: TestArithmeticExpressionEvaluation/string_concatenation (0.00s) --- PASS: TestArithmeticExpressionEvaluation/string_concatenation_with_spaces (0.00s) === RUN TestSelectArithmeticExpression --- PASS: TestSelectArithmeticExpression (0.00s) === RUN TestArithmeticWithFunctions === RUN TestArithmeticWithFunctions/Simple_function_arithmetic arithmetic_with_functions_test.go:75: PASS Basic function call with addition: SELECT LENGTH('hello') + 10 FROM user_events LIMIT 1 → 15 === RUN TestArithmeticWithFunctions/Nested_functions_with_arithmetic arithmetic_with_functions_test.go:75: PASS Complex nested functions with arithmetic operation (user's original failing query): SELECT length(trim(' hello world ')) + 12 FROM user_events LIMIT 1 → 23 === RUN TestArithmeticWithFunctions/Function_subtraction arithmetic_with_functions_test.go:75: PASS Function call with subtraction: SELECT LENGTH('programming') - 5 FROM user_events LIMIT 1 → 6 === RUN TestArithmeticWithFunctions/Function_multiplication arithmetic_with_functions_test.go:75: PASS Function call with multiplication: SELECT LENGTH('test') * 3 FROM user_events LIMIT 1 → 12 === RUN TestArithmeticWithFunctions/Multiple_nested_functions arithmetic_with_functions_test.go:75: PASS Triple nested functions: SELECT LENGTH(UPPER(TRIM(' hello '))) FROM user_events LIMIT 1 → 5 --- PASS: TestArithmeticWithFunctions (0.00s) --- PASS: TestArithmeticWithFunctions/Simple_function_arithmetic (0.00s) --- PASS: TestArithmeticWithFunctions/Nested_functions_with_arithmetic (0.00s) --- PASS: TestArithmeticWithFunctions/Function_subtraction (0.00s) --- PASS: TestArithmeticWithFunctions/Function_multiplication (0.00s) --- PASS: TestArithmeticWithFunctions/Multiple_nested_functions (0.00s) === RUN TestConvertMQSchemaToTableInfo_NoSchema === RUN TestConvertMQSchemaToTableInfo_NoSchema/nil_schema === RUN TestConvertMQSchemaToTableInfo_NoSchema/schema_with_nil_RecordType --- PASS: TestConvertMQSchemaToTableInfo_NoSchema (0.00s) --- PASS: TestConvertMQSchemaToTableInfo_NoSchema/nil_schema (0.00s) --- PASS: TestConvertMQSchemaToTableInfo_NoSchema/schema_with_nil_RecordType (0.00s) === RUN TestCockroachDBParserSuccess === RUN TestCockroachDBParserSuccess/Basic_Function cockroach_parser_success_test.go:93: SUCCESS: Simple function call → 5 === RUN TestCockroachDBParserSuccess/Function_Arithmetic cockroach_parser_success_test.go:93: SUCCESS: Function with arithmetic operation (original user issue) → 15 === RUN TestCockroachDBParserSuccess/User_Original_Query cockroach_parser_success_test.go:93: SUCCESS: User's exact original failing query - now fixed! → 23 === RUN TestCockroachDBParserSuccess/String_Concatenation cockroach_parser_success_test.go:93: SUCCESS: Basic string concatenation → helloworld === RUN TestCockroachDBParserSuccess/Function_With_Concat cockroach_parser_success_test.go:93: SUCCESS: Function with string concatenation argument → 10 === RUN TestCockroachDBParserSuccess/Multiple_Arithmetic cockroach_parser_success_test.go:93: SUCCESS: Function with multiplication → 12 === RUN TestCockroachDBParserSuccess/Nested_Functions cockroach_parser_success_test.go:93: SUCCESS: Nested function calls → 5 === RUN TestCockroachDBParserSuccess/Column_Alias cockroach_parser_success_test.go:93: SUCCESS: Column alias functionality (AS keyword) → 4 === NAME TestCockroachDBParserSuccess cockroach_parser_success_test.go:101: CockroachDB Parser Integration: 8/8 tests passed! --- PASS: TestCockroachDBParserSuccess (0.00s) --- PASS: TestCockroachDBParserSuccess/Basic_Function (0.00s) --- PASS: TestCockroachDBParserSuccess/Function_Arithmetic (0.00s) --- PASS: TestCockroachDBParserSuccess/User_Original_Query (0.00s) --- PASS: TestCockroachDBParserSuccess/String_Concatenation (0.00s) --- PASS: TestCockroachDBParserSuccess/Function_With_Concat (0.00s) --- PASS: TestCockroachDBParserSuccess/Multiple_Arithmetic (0.00s) --- PASS: TestCockroachDBParserSuccess/Nested_Functions (0.00s) --- PASS: TestCockroachDBParserSuccess/Column_Alias (0.00s) === RUN TestCompleteSQLFixes === RUN TestCompleteSQLFixes/OriginalFailingProductionQueries === RUN TestCompleteSQLFixes/OriginalFailingProductionQueries/OriginalFailingQuery1 === RUN TestCompleteSQLFixes/OriginalFailingProductionQueries/OriginalFailingQuery2 === RUN TestCompleteSQLFixes/OriginalFailingProductionQueries/CurrentDataQuery === RUN TestCompleteSQLFixes/AllFixesWorkTogether === RUN TestCompleteSQLFixes/BackwardCompatibilityVerified === RUN TestCompleteSQLFixes/PerformanceAndStability === RUN TestCompleteSQLFixes/EdgeCasesAndErrorHandling --- PASS: TestCompleteSQLFixes (0.00s) --- PASS: TestCompleteSQLFixes/OriginalFailingProductionQueries (0.00s) --- PASS: TestCompleteSQLFixes/OriginalFailingProductionQueries/OriginalFailingQuery1 (0.00s) --- PASS: TestCompleteSQLFixes/OriginalFailingProductionQueries/OriginalFailingQuery2 (0.00s) --- PASS: TestCompleteSQLFixes/OriginalFailingProductionQueries/CurrentDataQuery (0.00s) --- PASS: TestCompleteSQLFixes/AllFixesWorkTogether (0.00s) --- PASS: TestCompleteSQLFixes/BackwardCompatibilityVerified (0.00s) --- PASS: TestCompleteSQLFixes/PerformanceAndStability (0.00s) --- PASS: TestCompleteSQLFixes/EdgeCasesAndErrorHandling (0.00s) === RUN TestSQLFixesSummary === RUN TestSQLFixesSummary/Summary complete_sql_fixes_test.go:251: ALL SQL FIXES VERIFIED: complete_sql_fixes_test.go:252: Timestamp precision for large int64 values complete_sql_fixes_test.go:253: SQL alias resolution in WHERE clauses complete_sql_fixes_test.go:254: Scan boundary fixes for equality queries complete_sql_fixes_test.go:255: Range query fixes for equal boundaries complete_sql_fixes_test.go:256: Hybrid scanner time range handling complete_sql_fixes_test.go:257: Backward compatibility maintained complete_sql_fixes_test.go:258: Production stability verified --- PASS: TestSQLFixesSummary (0.00s) --- PASS: TestSQLFixesSummary/Summary (0.00s) === RUN TestComprehensiveSQLSuite === RUN TestComprehensiveSQLSuite/Basic_Select_All comprehensive_sql_test.go:319: PASS: Success: Basic select all columns === RUN TestComprehensiveSQLSuite/Basic_Select_Column comprehensive_sql_test.go:319: PASS: Success: Basic select single column === RUN TestComprehensiveSQLSuite/Basic_Select_Multiple_Columns comprehensive_sql_test.go:319: PASS: Success: Basic select multiple columns === RUN TestComprehensiveSQLSuite/Arithmetic_Multiply_FIXED comprehensive_sql_test.go:319: PASS: Success: FIXED: Arithmetic multiplication works === RUN TestComprehensiveSQLSuite/Arithmetic_Add comprehensive_sql_test.go:319: PASS: Success: Arithmetic addition works === RUN TestComprehensiveSQLSuite/Arithmetic_Subtract comprehensive_sql_test.go:319: PASS: Success: Arithmetic subtraction works === RUN TestComprehensiveSQLSuite/Arithmetic_Divide comprehensive_sql_test.go:319: PASS: Success: Arithmetic division works === RUN TestComprehensiveSQLSuite/Arithmetic_Complex comprehensive_sql_test.go:319: PASS: Success: Complex arithmetic expression works === RUN TestComprehensiveSQLSuite/String_Concatenation comprehensive_sql_test.go:319: PASS: Success: String concatenation === RUN TestComprehensiveSQLSuite/String_Column_Concat comprehensive_sql_test.go:319: PASS: Success: Column string concatenation === RUN TestComprehensiveSQLSuite/Function_LENGTH comprehensive_sql_test.go:319: PASS: Success: LENGTH function with literal === RUN TestComprehensiveSQLSuite/Function_LENGTH_Column comprehensive_sql_test.go:319: PASS: Success: LENGTH function with column === RUN TestComprehensiveSQLSuite/Function_UPPER comprehensive_sql_test.go:319: PASS: Success: UPPER function === RUN TestComprehensiveSQLSuite/Function_Nested comprehensive_sql_test.go:319: PASS: Success: Nested functions === RUN TestComprehensiveSQLSuite/Function_Arithmetic comprehensive_sql_test.go:319: PASS: Success: Function with arithmetic === RUN TestComprehensiveSQLSuite/Function_Arithmetic_Complex comprehensive_sql_test.go:319: PASS: Success: Function with complex arithmetic === RUN TestComprehensiveSQLSuite/Table_Simple comprehensive_sql_test.go:319: PASS: Success: Simple table reference === RUN TestComprehensiveSQLSuite/Table_With_Database comprehensive_sql_test.go:319: PASS: Success: Table with database qualifier === RUN TestComprehensiveSQLSuite/Table_Quoted comprehensive_sql_test.go:319: PASS: Success: Quoted table name === RUN TestComprehensiveSQLSuite/Where_Simple comprehensive_sql_test.go:319: PASS: Success: Simple WHERE clause === RUN TestComprehensiveSQLSuite/Where_String comprehensive_sql_test.go:319: PASS: Success: WHERE clause with string === RUN TestComprehensiveSQLSuite/Limit_Only comprehensive_sql_test.go:319: PASS: Success: LIMIT clause only === RUN TestComprehensiveSQLSuite/Limit_Offset comprehensive_sql_test.go:319: PASS: Success: LIMIT with OFFSET === RUN TestComprehensiveSQLSuite/DateTime_CURRENT_DATE comprehensive_sql_test.go:319: PASS: Success: CURRENT_DATE function === RUN TestComprehensiveSQLSuite/DateTime_NOW comprehensive_sql_test.go:319: PASS: Success: NOW() function === RUN TestComprehensiveSQLSuite/DateTime_EXTRACT comprehensive_sql_test.go:319: PASS: Success: EXTRACT function === RUN TestComprehensiveSQLSuite/Empty_String comprehensive_sql_test.go:319: PASS: Success: Empty string literal === RUN TestComprehensiveSQLSuite/Multiple_Spaces comprehensive_sql_test.go:319: PASS: Success: Query with multiple spaces === RUN TestComprehensiveSQLSuite/Mixed_Case comprehensive_sql_test.go:319: PASS: Success: Mixed case SQL === RUN TestComprehensiveSQLSuite/Show_Databases comprehensive_sql_test.go:319: PASS: Success: SHOW DATABASES statement === RUN TestComprehensiveSQLSuite/Show_Tables comprehensive_sql_test.go:319: PASS: Success: SHOW TABLES statement === NAME TestComprehensiveSQLSuite comprehensive_sql_test.go:327: ================================================================================ comprehensive_sql_test.go:328: COMPREHENSIVE SQL TEST SUITE SUMMARY comprehensive_sql_test.go:329: ================================================================================ comprehensive_sql_test.go:330: Total Tests: 31 comprehensive_sql_test.go:331: Successful: 31 comprehensive_sql_test.go:332: Panics: 0 comprehensive_sql_test.go:333: Errors: 0 comprehensive_sql_test.go:334: ================================================================================ --- PASS: TestComprehensiveSQLSuite (0.00s) --- PASS: TestComprehensiveSQLSuite/Basic_Select_All (0.00s) --- PASS: TestComprehensiveSQLSuite/Basic_Select_Column (0.00s) --- PASS: TestComprehensiveSQLSuite/Basic_Select_Multiple_Columns (0.00s) --- PASS: TestComprehensiveSQLSuite/Arithmetic_Multiply_FIXED (0.00s) --- PASS: TestComprehensiveSQLSuite/Arithmetic_Add (0.00s) --- PASS: TestComprehensiveSQLSuite/Arithmetic_Subtract (0.00s) --- PASS: TestComprehensiveSQLSuite/Arithmetic_Divide (0.00s) --- PASS: TestComprehensiveSQLSuite/Arithmetic_Complex (0.00s) --- PASS: TestComprehensiveSQLSuite/String_Concatenation (0.00s) --- PASS: TestComprehensiveSQLSuite/String_Column_Concat (0.00s) --- PASS: TestComprehensiveSQLSuite/Function_LENGTH (0.00s) --- PASS: TestComprehensiveSQLSuite/Function_LENGTH_Column (0.00s) --- PASS: TestComprehensiveSQLSuite/Function_UPPER (0.00s) --- PASS: TestComprehensiveSQLSuite/Function_Nested (0.00s) --- PASS: TestComprehensiveSQLSuite/Function_Arithmetic (0.00s) --- PASS: TestComprehensiveSQLSuite/Function_Arithmetic_Complex (0.00s) --- PASS: TestComprehensiveSQLSuite/Table_Simple (0.00s) --- PASS: TestComprehensiveSQLSuite/Table_With_Database (0.00s) --- PASS: TestComprehensiveSQLSuite/Table_Quoted (0.00s) --- PASS: TestComprehensiveSQLSuite/Where_Simple (0.00s) --- PASS: TestComprehensiveSQLSuite/Where_String (0.00s) --- PASS: TestComprehensiveSQLSuite/Limit_Only (0.00s) --- PASS: TestComprehensiveSQLSuite/Limit_Offset (0.00s) --- PASS: TestComprehensiveSQLSuite/DateTime_CURRENT_DATE (0.00s) --- PASS: TestComprehensiveSQLSuite/DateTime_NOW (0.00s) --- PASS: TestComprehensiveSQLSuite/DateTime_EXTRACT (0.00s) --- PASS: TestComprehensiveSQLSuite/Empty_String (0.00s) --- PASS: TestComprehensiveSQLSuite/Multiple_Spaces (0.00s) --- PASS: TestComprehensiveSQLSuite/Mixed_Case (0.00s) --- PASS: TestComprehensiveSQLSuite/Show_Databases (0.00s) --- PASS: TestComprehensiveSQLSuite/Show_Tables (0.00s) === RUN TestDateTimeFunctions === RUN TestDateTimeFunctions/CURRENT_DATE_function_tests === RUN TestDateTimeFunctions/CURRENT_TIMESTAMP_function_tests === RUN TestDateTimeFunctions/NOW_function_tests === RUN TestDateTimeFunctions/CURRENT_TIME_function_tests --- PASS: TestDateTimeFunctions (0.00s) --- PASS: TestDateTimeFunctions/CURRENT_DATE_function_tests (0.00s) --- PASS: TestDateTimeFunctions/CURRENT_TIMESTAMP_function_tests (0.00s) --- PASS: TestDateTimeFunctions/NOW_function_tests (0.00s) --- PASS: TestDateTimeFunctions/CURRENT_TIME_function_tests (0.00s) === RUN TestExtractFunction === RUN TestExtractFunction/Extract_YEAR === RUN TestExtractFunction/Extract_MONTH === RUN TestExtractFunction/Extract_DAY === RUN TestExtractFunction/Extract_HOUR === RUN TestExtractFunction/Extract_MINUTE === RUN TestExtractFunction/Extract_SECOND === RUN TestExtractFunction/Extract_QUARTER_from_June === RUN TestExtractFunction/Extract_from_string_date === RUN TestExtractFunction/Extract_from_Unix_timestamp === RUN TestExtractFunction/Extract_from_null_value === RUN TestExtractFunction/Extract_invalid_part === RUN TestExtractFunction/Extract_from_invalid_string --- PASS: TestExtractFunction (0.00s) --- PASS: TestExtractFunction/Extract_YEAR (0.00s) --- PASS: TestExtractFunction/Extract_MONTH (0.00s) --- PASS: TestExtractFunction/Extract_DAY (0.00s) --- PASS: TestExtractFunction/Extract_HOUR (0.00s) --- PASS: TestExtractFunction/Extract_MINUTE (0.00s) --- PASS: TestExtractFunction/Extract_SECOND (0.00s) --- PASS: TestExtractFunction/Extract_QUARTER_from_June (0.00s) --- PASS: TestExtractFunction/Extract_from_string_date (0.00s) --- PASS: TestExtractFunction/Extract_from_Unix_timestamp (0.00s) --- PASS: TestExtractFunction/Extract_from_null_value (0.00s) --- PASS: TestExtractFunction/Extract_invalid_part (0.00s) --- PASS: TestExtractFunction/Extract_from_invalid_string (0.00s) === RUN TestDateTruncFunction === RUN TestDateTruncFunction/Truncate_to_second === RUN TestDateTruncFunction/Truncate_to_minute === RUN TestDateTruncFunction/Truncate_to_hour === RUN TestDateTruncFunction/Truncate_to_day === RUN TestDateTruncFunction/Truncate_to_month === RUN TestDateTruncFunction/Truncate_to_quarter === RUN TestDateTruncFunction/Truncate_to_year === RUN TestDateTruncFunction/Truncate_with_plural_precision === RUN TestDateTruncFunction/Truncate_from_string_date === RUN TestDateTruncFunction/Truncate_null_value === RUN TestDateTruncFunction/Invalid_precision --- PASS: TestDateTruncFunction (0.00s) --- PASS: TestDateTruncFunction/Truncate_to_second (0.00s) --- PASS: TestDateTruncFunction/Truncate_to_minute (0.00s) --- PASS: TestDateTruncFunction/Truncate_to_hour (0.00s) --- PASS: TestDateTruncFunction/Truncate_to_day (0.00s) --- PASS: TestDateTruncFunction/Truncate_to_month (0.00s) --- PASS: TestDateTruncFunction/Truncate_to_quarter (0.00s) --- PASS: TestDateTruncFunction/Truncate_to_year (0.00s) --- PASS: TestDateTruncFunction/Truncate_with_plural_precision (0.00s) --- PASS: TestDateTruncFunction/Truncate_from_string_date (0.00s) --- PASS: TestDateTruncFunction/Truncate_null_value (0.00s) --- PASS: TestDateTruncFunction/Invalid_precision (0.00s) === RUN TestDateTimeConstantsInSQL === RUN TestDateTimeConstantsInSQL/CURRENT_TIME_in_SQL_query datetime_functions_test.go:468: CURRENT_TIME returned valid time: 12:12:52 === RUN TestDateTimeConstantsInSQL/CURRENT_DATE_in_SQL_query datetime_functions_test.go:494: CURRENT_DATE returned: 2026-05-05 --- PASS: TestDateTimeConstantsInSQL (0.00s) --- PASS: TestDateTimeConstantsInSQL/CURRENT_TIME_in_SQL_query (0.00s) --- PASS: TestDateTimeConstantsInSQL/CURRENT_DATE_in_SQL_query (0.00s) === RUN TestFunctionArgumentCountHandling === RUN TestFunctionArgumentCountHandling/Zero-argument_function_should_fail_appropriately === RUN TestFunctionArgumentCountHandling/Single-argument_function_should_still_work === RUN TestFunctionArgumentCountHandling/Any_zero-argument_function_should_fail === RUN TestFunctionArgumentCountHandling/Wrong_argument_count_for_single-arg_function_should_fail --- PASS: TestFunctionArgumentCountHandling (0.00s) --- PASS: TestFunctionArgumentCountHandling/Zero-argument_function_should_fail_appropriately (0.00s) --- PASS: TestFunctionArgumentCountHandling/Single-argument_function_should_still_work (0.00s) --- PASS: TestFunctionArgumentCountHandling/Any_zero-argument_function_should_fail (0.00s) --- PASS: TestFunctionArgumentCountHandling/Wrong_argument_count_for_single-arg_function_should_fail (0.00s) === RUN TestExtractFunctionSQL === RUN TestExtractFunctionSQL/Extract_YEAR_from_current_date === RUN TestExtractFunctionSQL/Extract_MONTH_from_current_date === RUN TestExtractFunctionSQL/Extract_DAY_from_current_date === RUN TestExtractFunctionSQL/Extract_HOUR_from_current_timestamp === RUN TestExtractFunctionSQL/Extract_MINUTE_from_current_timestamp === RUN TestExtractFunctionSQL/Extract_QUARTER_from_current_date === RUN TestExtractFunctionSQL/Multiple_EXTRACT_functions === RUN TestExtractFunctionSQL/EXTRACT_with_invalid_date_part === RUN TestExtractFunctionSQL/EXTRACT_with_wrong_number_of_arguments === RUN TestExtractFunctionSQL/EXTRACT_with_too_many_arguments --- PASS: TestExtractFunctionSQL (0.00s) --- PASS: TestExtractFunctionSQL/Extract_YEAR_from_current_date (0.00s) --- PASS: TestExtractFunctionSQL/Extract_MONTH_from_current_date (0.00s) --- PASS: TestExtractFunctionSQL/Extract_DAY_from_current_date (0.00s) --- PASS: TestExtractFunctionSQL/Extract_HOUR_from_current_timestamp (0.00s) --- PASS: TestExtractFunctionSQL/Extract_MINUTE_from_current_timestamp (0.00s) --- PASS: TestExtractFunctionSQL/Extract_QUARTER_from_current_date (0.00s) --- PASS: TestExtractFunctionSQL/Multiple_EXTRACT_functions (0.00s) --- PASS: TestExtractFunctionSQL/EXTRACT_with_invalid_date_part (0.00s) --- PASS: TestExtractFunctionSQL/EXTRACT_with_wrong_number_of_arguments (0.00s) --- PASS: TestExtractFunctionSQL/EXTRACT_with_too_many_arguments (0.00s) === RUN TestDateTruncFunctionSQL === RUN TestDateTruncFunctionSQL/DATE_TRUNC_to_day === RUN TestDateTruncFunctionSQL/DATE_TRUNC_to_hour === RUN TestDateTruncFunctionSQL/DATE_TRUNC_to_month === RUN TestDateTruncFunctionSQL/DATE_TRUNC_with_invalid_precision === RUN TestDateTruncFunctionSQL/DATE_TRUNC_with_wrong_number_of_arguments --- PASS: TestDateTruncFunctionSQL (0.00s) --- PASS: TestDateTruncFunctionSQL/DATE_TRUNC_to_day (0.00s) --- PASS: TestDateTruncFunctionSQL/DATE_TRUNC_to_hour (0.00s) --- PASS: TestDateTruncFunctionSQL/DATE_TRUNC_to_month (0.00s) --- PASS: TestDateTruncFunctionSQL/DATE_TRUNC_with_invalid_precision (0.00s) --- PASS: TestDateTruncFunctionSQL/DATE_TRUNC_with_wrong_number_of_arguments (0.00s) === RUN TestFastPathPredicateValidation === RUN TestFastPathPredicateValidation/No_WHERE_clause fast_path_predicate_validation_test.go:142: No WHERE clause: onlyTimePredicates=true, startTimeNs=0, stopTimeNs=0 === RUN TestFastPathPredicateValidation/Time-only_predicate_(greater_than) fast_path_predicate_validation_test.go:142: Time-only predicate (greater than): onlyTimePredicates=true, startTimeNs=1640995200000000000, stopTimeNs=0 === RUN TestFastPathPredicateValidation/Time-only_predicate_(less_than) fast_path_predicate_validation_test.go:142: Time-only predicate (less than): onlyTimePredicates=true, startTimeNs=0, stopTimeNs=1640995200000000000 === RUN TestFastPathPredicateValidation/Time-only_predicate_(range_with_AND) fast_path_predicate_validation_test.go:142: Time-only predicate (range with AND): onlyTimePredicates=true, startTimeNs=1640995200000000000, stopTimeNs=1641081600000000000 === RUN TestFastPathPredicateValidation/Mixed_predicate_(time_+_non-time) fast_path_predicate_validation_test.go:142: Mixed predicate (time + non-time): onlyTimePredicates=false, startTimeNs=1640995200000000000, stopTimeNs=0 === RUN TestFastPathPredicateValidation/Non-time_predicate_only fast_path_predicate_validation_test.go:142: Non-time predicate only: onlyTimePredicates=false, startTimeNs=0, stopTimeNs=0 === RUN TestFastPathPredicateValidation/Multiple_non-time_predicates fast_path_predicate_validation_test.go:142: Multiple non-time predicates: onlyTimePredicates=false, startTimeNs=0, stopTimeNs=0 === RUN TestFastPathPredicateValidation/OR_with_time_predicate_(unsafe) fast_path_predicate_validation_test.go:142: OR with time predicate (unsafe): onlyTimePredicates=false, startTimeNs=0, stopTimeNs=0 === RUN TestFastPathPredicateValidation/OR_with_only_time_predicates_(still_unsafe) fast_path_predicate_validation_test.go:142: OR with only time predicates (still unsafe): onlyTimePredicates=false, startTimeNs=0, stopTimeNs=0 === RUN TestFastPathPredicateValidation/String_column_comparison fast_path_predicate_validation_test.go:142: String column comparison: onlyTimePredicates=false, startTimeNs=0, stopTimeNs=0 === RUN TestFastPathPredicateValidation/Numeric_column_comparison fast_path_predicate_validation_test.go:142: Numeric column comparison: onlyTimePredicates=false, startTimeNs=0, stopTimeNs=0 === RUN TestFastPathPredicateValidation/Internal_timestamp_column fast_path_predicate_validation_test.go:142: Internal timestamp column: onlyTimePredicates=true, startTimeNs=1640995200000000000, stopTimeNs=0 --- PASS: TestFastPathPredicateValidation (0.00s) --- PASS: TestFastPathPredicateValidation/No_WHERE_clause (0.00s) --- PASS: TestFastPathPredicateValidation/Time-only_predicate_(greater_than) (0.00s) --- PASS: TestFastPathPredicateValidation/Time-only_predicate_(less_than) (0.00s) --- PASS: TestFastPathPredicateValidation/Time-only_predicate_(range_with_AND) (0.00s) --- PASS: TestFastPathPredicateValidation/Mixed_predicate_(time_+_non-time) (0.00s) --- PASS: TestFastPathPredicateValidation/Non-time_predicate_only (0.00s) --- PASS: TestFastPathPredicateValidation/Multiple_non-time_predicates (0.00s) --- PASS: TestFastPathPredicateValidation/OR_with_time_predicate_(unsafe) (0.00s) --- PASS: TestFastPathPredicateValidation/OR_with_only_time_predicates_(still_unsafe) (0.00s) --- PASS: TestFastPathPredicateValidation/String_column_comparison (0.00s) --- PASS: TestFastPathPredicateValidation/Numeric_column_comparison (0.00s) --- PASS: TestFastPathPredicateValidation/Internal_timestamp_column (0.00s) === RUN TestFastPathAggregationSafety === RUN TestFastPathAggregationSafety/No_WHERE_-_should_use_fast_path fast_path_predicate_validation_test.go:215: No WHERE - should use fast path: canAttemptFastPath=true (onlyTimePredicates=true, startTimeNs=0, stopTimeNs=0) === RUN TestFastPathAggregationSafety/Time-only_WHERE_-_should_use_fast_path fast_path_predicate_validation_test.go:215: Time-only WHERE - should use fast path: canAttemptFastPath=true (onlyTimePredicates=true, startTimeNs=1640995200000000000, stopTimeNs=0) === RUN TestFastPathAggregationSafety/Mixed_WHERE_-_should_NOT_use_fast_path fast_path_predicate_validation_test.go:215: Mixed WHERE - should NOT use fast path: canAttemptFastPath=false (onlyTimePredicates=false, startTimeNs=1640995200000000000, stopTimeNs=0) === RUN TestFastPathAggregationSafety/Non-time_WHERE_-_should_NOT_use_fast_path fast_path_predicate_validation_test.go:215: Non-time WHERE - should NOT use fast path: canAttemptFastPath=false (onlyTimePredicates=false, startTimeNs=0, stopTimeNs=0) === RUN TestFastPathAggregationSafety/OR_expression_-_should_NOT_use_fast_path fast_path_predicate_validation_test.go:215: OR expression - should NOT use fast path: canAttemptFastPath=false (onlyTimePredicates=false, startTimeNs=0, stopTimeNs=0) --- PASS: TestFastPathAggregationSafety (0.00s) --- PASS: TestFastPathAggregationSafety/No_WHERE_-_should_use_fast_path (0.00s) --- PASS: TestFastPathAggregationSafety/Time-only_WHERE_-_should_use_fast_path (0.00s) --- PASS: TestFastPathAggregationSafety/Mixed_WHERE_-_should_NOT_use_fast_path (0.00s) --- PASS: TestFastPathAggregationSafety/Non-time_WHERE_-_should_NOT_use_fast_path (0.00s) --- PASS: TestFastPathAggregationSafety/OR_expression_-_should_NOT_use_fast_path (0.00s) === RUN TestTimestampColumnDetection === RUN TestTimestampColumnDetection/_ts fast_path_predicate_validation_test.go:269: Column '_ts': isTimestamp=true === RUN TestTimestampColumnDetection/_ts_ns fast_path_predicate_validation_test.go:269: Column '_ts_ns': isTimestamp=true === RUN TestTimestampColumnDetection/user_id fast_path_predicate_validation_test.go:269: Column 'user_id': isTimestamp=false === RUN TestTimestampColumnDetection/id fast_path_predicate_validation_test.go:269: Column 'id': isTimestamp=false === RUN TestTimestampColumnDetection/status fast_path_predicate_validation_test.go:269: Column 'status': isTimestamp=false === RUN TestTimestampColumnDetection/event_type fast_path_predicate_validation_test.go:269: Column 'event_type': isTimestamp=false --- PASS: TestTimestampColumnDetection (0.00s) --- PASS: TestTimestampColumnDetection/_ts (0.00s) --- PASS: TestTimestampColumnDetection/_ts_ns (0.00s) --- PASS: TestTimestampColumnDetection/user_id (0.00s) --- PASS: TestTimestampColumnDetection/id (0.00s) --- PASS: TestTimestampColumnDetection/status (0.00s) --- PASS: TestTimestampColumnDetection/event_type (0.00s) === RUN TestSQLEngine_HybridSelectBasic hybrid_test.go:67: Found live_log data source from unflushed messages --- PASS: TestSQLEngine_HybridSelectBasic (0.00s) === RUN TestSQLEngine_HybridSelectWithLimit --- PASS: TestSQLEngine_HybridSelectWithLimit (0.00s) === RUN TestSQLEngine_HybridSelectDifferentTables hybrid_test.go:129: Table user_events: 1 columns, 10 rows with hybrid data sources hybrid_test.go:129: Table system_logs: 1 columns, 4 rows with hybrid data sources --- PASS: TestSQLEngine_HybridSelectDifferentTables (0.00s) === RUN TestSQLEngine_HybridDataSource hybrid_test.go:178: Found live event: live_login from live_log hybrid_test.go:178: Found live event: live_action from live_log hybrid_test.go:183: Found archived event: archived_login from parquet_archive hybrid_test.go:183: Found archived event: archived_logout from parquet_archive --- PASS: TestSQLEngine_HybridDataSource (0.00s) === RUN TestSQLEngine_HybridSystemLogs hybrid_test.go:240: Live system log: level=INFO hybrid_test.go:240: Live system log: level=WARN hybrid_test.go:248: Archived system log: level=ERROR hybrid_test.go:248: Archived system log: level=INFO --- PASS: TestSQLEngine_HybridSystemLogs (0.00s) === RUN TestSQLEngine_HybridSelectWithTimeImplications hybrid_test.go:304: Hybrid query results: 4 live messages, 6 archived messages --- PASS: TestSQLEngine_HybridSelectWithTimeImplications (0.00s) === RUN TestMockBrokerClient_BasicFunctionality --- PASS: TestMockBrokerClient_BasicFunctionality (0.00s) === RUN TestMockBrokerClient_FailureScenarios --- PASS: TestMockBrokerClient_FailureScenarios (0.00s) === RUN TestMockBrokerClient_TopicManagement --- PASS: TestMockBrokerClient_TopicManagement (0.00s) === RUN TestSQLEngineWithMockBrokerClient_ErrorHandling mock_test.go:147: ExecuteSQL returned error (acceptable): topic default.nonexistent_topic not found or no schema available: mock broker failure: mock broker unavailable --- PASS: TestSQLEngineWithMockBrokerClient_ErrorHandling (0.00s) === RUN TestNoSchemaError --- PASS: TestNoSchemaError (0.00s) === RUN TestParseSQL_OFFSET_EdgeCases === RUN TestParseSQL_OFFSET_EdgeCases/Valid_LIMIT_OFFSET_with_WHERE === RUN TestParseSQL_OFFSET_EdgeCases/LIMIT_OFFSET_with_mixed_case === RUN TestParseSQL_OFFSET_EdgeCases/LIMIT_OFFSET_with_extra_spaces --- PASS: TestParseSQL_OFFSET_EdgeCases (0.00s) --- PASS: TestParseSQL_OFFSET_EdgeCases/Valid_LIMIT_OFFSET_with_WHERE (0.00s) --- PASS: TestParseSQL_OFFSET_EdgeCases/LIMIT_OFFSET_with_mixed_case (0.00s) --- PASS: TestParseSQL_OFFSET_EdgeCases/LIMIT_OFFSET_with_extra_spaces (0.00s) === RUN TestSQLEngine_OFFSET_EdgeCases === RUN TestSQLEngine_OFFSET_EdgeCases/OFFSET_larger_than_result_set === RUN TestSQLEngine_OFFSET_EdgeCases/OFFSET_with_LIMIT_0 === RUN TestSQLEngine_OFFSET_EdgeCases/High_OFFSET_with_small_LIMIT --- PASS: TestSQLEngine_OFFSET_EdgeCases (0.00s) --- PASS: TestSQLEngine_OFFSET_EdgeCases/OFFSET_larger_than_result_set (0.00s) --- PASS: TestSQLEngine_OFFSET_EdgeCases/OFFSET_with_LIMIT_0 (0.00s) --- PASS: TestSQLEngine_OFFSET_EdgeCases/High_OFFSET_with_small_LIMIT (0.00s) === RUN TestSQLEngine_OFFSET_ErrorCases === RUN TestSQLEngine_OFFSET_ErrorCases/Negative_OFFSET_value offset_test.go:149: Parser accepts negative OFFSET, execution should validate === RUN TestSQLEngine_OFFSET_ErrorCases/Very_large_OFFSET_value --- PASS: TestSQLEngine_OFFSET_ErrorCases (0.00s) --- PASS: TestSQLEngine_OFFSET_ErrorCases/Negative_OFFSET_value (0.00s) --- PASS: TestSQLEngine_OFFSET_ErrorCases/Very_large_OFFSET_value (0.00s) === RUN TestSQLEngine_OFFSET_Consistency === RUN TestSQLEngine_OFFSET_Consistency/OFFSET_0 === RUN TestSQLEngine_OFFSET_Consistency/OFFSET_1 === RUN TestSQLEngine_OFFSET_Consistency/OFFSET_2 === RUN TestSQLEngine_OFFSET_Consistency/OFFSET_3 === RUN TestSQLEngine_OFFSET_Consistency/OFFSET_4 === RUN TestSQLEngine_OFFSET_Consistency/OFFSET_5 === RUN TestSQLEngine_OFFSET_Consistency/OFFSET_6 === RUN TestSQLEngine_OFFSET_Consistency/OFFSET_7 === RUN TestSQLEngine_OFFSET_Consistency/OFFSET_8 === RUN TestSQLEngine_OFFSET_Consistency/OFFSET_9 --- PASS: TestSQLEngine_OFFSET_Consistency (0.00s) --- PASS: TestSQLEngine_OFFSET_Consistency/OFFSET_0 (0.00s) --- PASS: TestSQLEngine_OFFSET_Consistency/OFFSET_1 (0.00s) --- PASS: TestSQLEngine_OFFSET_Consistency/OFFSET_2 (0.00s) --- PASS: TestSQLEngine_OFFSET_Consistency/OFFSET_3 (0.00s) --- PASS: TestSQLEngine_OFFSET_Consistency/OFFSET_4 (0.00s) --- PASS: TestSQLEngine_OFFSET_Consistency/OFFSET_5 (0.00s) --- PASS: TestSQLEngine_OFFSET_Consistency/OFFSET_6 (0.00s) --- PASS: TestSQLEngine_OFFSET_Consistency/OFFSET_7 (0.00s) --- PASS: TestSQLEngine_OFFSET_Consistency/OFFSET_8 (0.00s) --- PASS: TestSQLEngine_OFFSET_Consistency/OFFSET_9 (0.00s) === RUN TestSQLEngine_LIMIT_OFFSET_BugFix === RUN TestSQLEngine_LIMIT_OFFSET_BugFix/LIMIT_10_OFFSET_5_returns_correct_count offset_test.go:240: LIMIT 10 OFFSET 5 returned 5 rows (within limit) === RUN TestSQLEngine_LIMIT_OFFSET_BugFix/LIMIT_5_OFFSET_0 offset_test.go:287: LIMIT 5 OFFSET 0: returned 5 rows (within limit 5) === RUN TestSQLEngine_LIMIT_OFFSET_BugFix/LIMIT_5_OFFSET_2 offset_test.go:287: LIMIT 5 OFFSET 2: returned 5 rows (within limit 5) === RUN TestSQLEngine_LIMIT_OFFSET_BugFix/LIMIT_8_OFFSET_3 offset_test.go:287: LIMIT 8 OFFSET 3: returned 7 rows (within limit 8) === RUN TestSQLEngine_LIMIT_OFFSET_BugFix/LIMIT_15_OFFSET_1 offset_test.go:287: LIMIT 15 OFFSET 1: returned 9 rows (within limit 15) === RUN TestSQLEngine_LIMIT_OFFSET_BugFix/LIMIT_3_OFFSET_7 offset_test.go:287: LIMIT 3 OFFSET 7: returned 3 rows (within limit 3) === RUN TestSQLEngine_LIMIT_OFFSET_BugFix/LIMIT_12_OFFSET_4 offset_test.go:287: LIMIT 12 OFFSET 4: returned 6 rows (within limit 12) --- PASS: TestSQLEngine_LIMIT_OFFSET_BugFix (0.00s) --- PASS: TestSQLEngine_LIMIT_OFFSET_BugFix/LIMIT_10_OFFSET_5_returns_correct_count (0.00s) --- PASS: TestSQLEngine_LIMIT_OFFSET_BugFix/LIMIT_5_OFFSET_0 (0.00s) --- PASS: TestSQLEngine_LIMIT_OFFSET_BugFix/LIMIT_5_OFFSET_2 (0.00s) --- PASS: TestSQLEngine_LIMIT_OFFSET_BugFix/LIMIT_8_OFFSET_3 (0.00s) --- PASS: TestSQLEngine_LIMIT_OFFSET_BugFix/LIMIT_15_OFFSET_1 (0.00s) --- PASS: TestSQLEngine_LIMIT_OFFSET_BugFix/LIMIT_3_OFFSET_7 (0.00s) --- PASS: TestSQLEngine_LIMIT_OFFSET_BugFix/LIMIT_12_OFFSET_4 (0.00s) === RUN TestSQLEngine_OFFSET_DataCollectionBuffer === RUN TestSQLEngine_OFFSET_DataCollectionBuffer/Large_OFFSET_with_small_LIMIT === RUN TestSQLEngine_OFFSET_DataCollectionBuffer/Medium_OFFSET_with_medium_LIMIT === RUN TestSQLEngine_OFFSET_DataCollectionBuffer/Progressive_OFFSET_test offset_test.go:351: OFFSET 0: returned 3 rows offset_test.go:351: OFFSET 1: returned 3 rows offset_test.go:351: OFFSET 2: returned 3 rows offset_test.go:351: OFFSET 3: returned 3 rows offset_test.go:351: OFFSET 4: returned 3 rows offset_test.go:351: OFFSET 5: returned 3 rows --- PASS: TestSQLEngine_OFFSET_DataCollectionBuffer (0.00s) --- PASS: TestSQLEngine_OFFSET_DataCollectionBuffer/Large_OFFSET_with_small_LIMIT (0.00s) --- PASS: TestSQLEngine_OFFSET_DataCollectionBuffer/Medium_OFFSET_with_medium_LIMIT (0.00s) --- PASS: TestSQLEngine_OFFSET_DataCollectionBuffer/Progressive_OFFSET_test (0.00s) === RUN TestSQLEngine_LIMIT_OFFSET_ArithmeticExpressions === RUN TestSQLEngine_LIMIT_OFFSET_ArithmeticExpressions/Arithmetic_expressions_with_LIMIT_OFFSET offset_test.go:391: LIMIT 10: returned 10 rows offset_test.go:392: LIMIT 10 OFFSET 5: returned 5 rows offset_test.go:399: Insufficient data (10 rows) to fully test LIMIT 10 OFFSET 5 scenario offset_test.go:409: Row 0: id=417224, user_id=7810, id+user_id=425034 offset_test.go:409: Row 1: id=424297, user_id=8897, id+user_id=433194 offset_test.go:409: Row 2: id=431189, user_id=3400, id+user_id=434589 offset_test.go:409: Row 3: id=413249, user_id=5175, id+user_id=418424 offset_test.go:409: Row 4: id=120612, user_id=5429, id+user_id=126041 === RUN TestSQLEngine_LIMIT_OFFSET_ArithmeticExpressions/Multiplication_expressions offset_test.go:441: Row 0: id=82460, id*2=164920 ✓ offset_test.go:441: Row 1: id=841256, id*2=1682512 ✓ offset_test.go:441: Row 2: id=55537, id*2=111074 ✓ --- PASS: TestSQLEngine_LIMIT_OFFSET_ArithmeticExpressions (0.00s) --- PASS: TestSQLEngine_LIMIT_OFFSET_ArithmeticExpressions/Arithmetic_expressions_with_LIMIT_OFFSET (0.00s) --- PASS: TestSQLEngine_LIMIT_OFFSET_ArithmeticExpressions/Multiplication_expressions (0.00s) === RUN TestSQLEngine_OFFSET_WithAggregation === RUN TestSQLEngine_OFFSET_WithAggregation/COUNT_with_OFFSET === RUN TestSQLEngine_OFFSET_WithAggregation/COUNT_with_OFFSET_1 --- PASS: TestSQLEngine_OFFSET_WithAggregation (0.00s) --- PASS: TestSQLEngine_OFFSET_WithAggregation/COUNT_with_OFFSET (0.00s) --- PASS: TestSQLEngine_OFFSET_WithAggregation/COUNT_with_OFFSET_1 (0.00s) === RUN TestBasicParsing === RUN TestBasicParsing/Query_1 parsing_debug_test.go:20: Testing SQL: SELECT * FROM user_events parsing_debug_test.go:28: Parsed statement type: *engine.SelectStatement parsing_debug_test.go:31: SelectStatement details: parsing_debug_test.go:32: SelectExprs count: 1 parsing_debug_test.go:33: From count: 1 parsing_debug_test.go:34: WHERE clause exists: false parsing_debug_test.go:39: WHERE clause is NIL - this is the bug! === RUN TestBasicParsing/Query_2 parsing_debug_test.go:20: Testing SQL: SELECT id FROM user_events parsing_debug_test.go:28: Parsed statement type: *engine.SelectStatement parsing_debug_test.go:31: SelectStatement details: parsing_debug_test.go:32: SelectExprs count: 1 parsing_debug_test.go:33: From count: 1 parsing_debug_test.go:34: WHERE clause exists: false parsing_debug_test.go:39: WHERE clause is NIL - this is the bug! === RUN TestBasicParsing/Query_3 parsing_debug_test.go:20: Testing SQL: SELECT id FROM user_events WHERE id = 123 parsing_debug_test.go:28: Parsed statement type: *engine.SelectStatement parsing_debug_test.go:31: SelectStatement details: parsing_debug_test.go:32: SelectExprs count: 1 parsing_debug_test.go:33: From count: 1 parsing_debug_test.go:34: WHERE clause exists: true parsing_debug_test.go:37: WHERE expression type: *engine.ComparisonExpr === RUN TestBasicParsing/Query_4 parsing_debug_test.go:20: Testing SQL: SELECT id FROM user_events WHERE id > 123 parsing_debug_test.go:28: Parsed statement type: *engine.SelectStatement parsing_debug_test.go:31: SelectStatement details: parsing_debug_test.go:32: SelectExprs count: 1 parsing_debug_test.go:33: From count: 1 parsing_debug_test.go:34: WHERE clause exists: true parsing_debug_test.go:37: WHERE expression type: *engine.ComparisonExpr === RUN TestBasicParsing/Query_5 parsing_debug_test.go:20: Testing SQL: SELECT id FROM user_events WHERE status = 'active' parsing_debug_test.go:28: Parsed statement type: *engine.SelectStatement parsing_debug_test.go:31: SelectStatement details: parsing_debug_test.go:32: SelectExprs count: 1 parsing_debug_test.go:33: From count: 1 parsing_debug_test.go:34: WHERE clause exists: true parsing_debug_test.go:37: WHERE expression type: *engine.ComparisonExpr --- PASS: TestBasicParsing (0.00s) --- PASS: TestBasicParsing/Query_1 (0.00s) --- PASS: TestBasicParsing/Query_2 (0.00s) --- PASS: TestBasicParsing/Query_3 (0.00s) --- PASS: TestBasicParsing/Query_4 (0.00s) --- PASS: TestBasicParsing/Query_5 (0.00s) === RUN TestCockroachParserDirectly parsing_debug_test.go:53: Testing CockroachDB parser directly with: SELECT id FROM user_events WHERE id > 123 parsing_debug_test.go:61: Our ParseSQL returned: *engine.SelectStatement parsing_debug_test.go:68: Our ParseSQL extracted WHERE clause: *engine.ComparisonExpr --- PASS: TestCockroachParserDirectly (0.00s) === RUN TestParseMethodComparison parsing_debug_test.go:77: Comparing parsing methods for: SELECT id FROM user_events WHERE id > 123 parsing_debug_test.go:81: Global ParseSQL: *engine.SelectStatement, error: parsing_debug_test.go:84: WHERE clause: true parsing_debug_test.go:92: ExecuteSQL error (helps identify parsing path): --- PASS: TestParseMethodComparison (0.00s) === RUN TestPostgreSQLOnlySupport === RUN TestPostgreSQLOnlySupport/MySQL_Backticks_Table postgresql_only_test.go:89: CORRECTLY REJECTED: MySQL backticks for table names should be rejected === RUN TestPostgreSQLOnlySupport/MySQL_Backticks_Column postgresql_only_test.go:89: CORRECTLY REJECTED: MySQL backticks for column names should be rejected === RUN TestPostgreSQLOnlySupport/PostgreSQL_Double_Quotes_OK postgresql_only_test.go:103: CORRECTLY ACCEPTED: PostgreSQL double quotes for identifiers should work === RUN TestPostgreSQLOnlySupport/PostgreSQL_EXTRACT_OK postgresql_only_test.go:103: CORRECTLY ACCEPTED: PostgreSQL EXTRACT function should work === RUN TestPostgreSQLOnlySupport/Single_Quotes_String_Literal_OK postgresql_only_test.go:103: CORRECTLY ACCEPTED: Single quotes for string literals should work === NAME TestPostgreSQLOnlySupport postgresql_only_test.go:109: PostgreSQL-only compliance: 5/5 tests passed --- PASS: TestPostgreSQLOnlySupport (0.00s) --- PASS: TestPostgreSQLOnlySupport/MySQL_Backticks_Table (0.00s) --- PASS: TestPostgreSQLOnlySupport/MySQL_Backticks_Column (0.00s) --- PASS: TestPostgreSQLOnlySupport/PostgreSQL_Double_Quotes_OK (0.00s) --- PASS: TestPostgreSQLOnlySupport/PostgreSQL_EXTRACT_OK (0.00s) --- PASS: TestPostgreSQLOnlySupport/Single_Quotes_String_Literal_OK (0.00s) === RUN TestParseSQL_COUNT_Functions === RUN TestParseSQL_COUNT_Functions/COUNT(*)_basic === RUN TestParseSQL_COUNT_Functions/COUNT(column_name) === RUN TestParseSQL_COUNT_Functions/Multiple_aggregate_functions --- PASS: TestParseSQL_COUNT_Functions (0.00s) --- PASS: TestParseSQL_COUNT_Functions/COUNT(*)_basic (0.00s) --- PASS: TestParseSQL_COUNT_Functions/COUNT(column_name) (0.00s) --- PASS: TestParseSQL_COUNT_Functions/Multiple_aggregate_functions (0.00s) === RUN TestParseSQL_SELECT_Expressions === RUN TestParseSQL_SELECT_Expressions/SELECT_*_FROM_table === RUN TestParseSQL_SELECT_Expressions/SELECT_column_FROM_table === RUN TestParseSQL_SELECT_Expressions/SELECT_multiple_columns --- PASS: TestParseSQL_SELECT_Expressions (0.00s) --- PASS: TestParseSQL_SELECT_Expressions/SELECT_*_FROM_table (0.00s) --- PASS: TestParseSQL_SELECT_Expressions/SELECT_column_FROM_table (0.00s) --- PASS: TestParseSQL_SELECT_Expressions/SELECT_multiple_columns (0.00s) === RUN TestParseSQL_WHERE_Clauses === RUN TestParseSQL_WHERE_Clauses/WHERE_with_simple_comparison === RUN TestParseSQL_WHERE_Clauses/WHERE_with_AND_condition === RUN TestParseSQL_WHERE_Clauses/WHERE_with_OR_condition --- PASS: TestParseSQL_WHERE_Clauses (0.00s) --- PASS: TestParseSQL_WHERE_Clauses/WHERE_with_simple_comparison (0.00s) --- PASS: TestParseSQL_WHERE_Clauses/WHERE_with_AND_condition (0.00s) --- PASS: TestParseSQL_WHERE_Clauses/WHERE_with_OR_condition (0.00s) === RUN TestParseSQL_LIMIT_Clauses === RUN TestParseSQL_LIMIT_Clauses/LIMIT_with_number === RUN TestParseSQL_LIMIT_Clauses/LIMIT_with_OFFSET === RUN TestParseSQL_LIMIT_Clauses/LIMIT_with_OFFSET_zero === RUN TestParseSQL_LIMIT_Clauses/LIMIT_with_large_OFFSET --- PASS: TestParseSQL_LIMIT_Clauses (0.00s) --- PASS: TestParseSQL_LIMIT_Clauses/LIMIT_with_number (0.00s) --- PASS: TestParseSQL_LIMIT_Clauses/LIMIT_with_OFFSET (0.00s) --- PASS: TestParseSQL_LIMIT_Clauses/LIMIT_with_OFFSET_zero (0.00s) --- PASS: TestParseSQL_LIMIT_Clauses/LIMIT_with_large_OFFSET (0.00s) === RUN TestParseSQL_SHOW_Statements === RUN TestParseSQL_SHOW_Statements/SHOW_DATABASES === RUN TestParseSQL_SHOW_Statements/SHOW_TABLES === RUN TestParseSQL_SHOW_Statements/SHOW_TABLES_FROM_database --- PASS: TestParseSQL_SHOW_Statements (0.00s) --- PASS: TestParseSQL_SHOW_Statements/SHOW_DATABASES (0.00s) --- PASS: TestParseSQL_SHOW_Statements/SHOW_TABLES (0.00s) --- PASS: TestParseSQL_SHOW_Statements/SHOW_TABLES_FROM_database (0.00s) === RUN TestRealNamespaceDiscovery real_namespace_test.go:24: Discovered 0 namespaces (no fallback data): real_namespace_test.go:26: (No namespaces found - requires real SeaweedFS MQ cluster) --- PASS: TestRealNamespaceDiscovery (0.01s) === RUN TestRealTopicDiscovery real_namespace_test.go:53: Discovered 0 topics in 'default' namespace (no fallback data): real_namespace_test.go:55: (No topics found - requires real SeaweedFS MQ cluster with 'default' namespace) --- PASS: TestRealTopicDiscovery (0.00s) === RUN TestNamespaceDiscoveryNoFallback real_namespace_test.go:79: ListNamespaces failed as expected: failed to get filer client: failed to discover filer: failed to list filers from master: rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing: dial tcp [::1]:18888: connect: connection refused" real_namespace_test.go:99: No fallback behavior - returns empty lists when filer unavailable --- PASS: TestNamespaceDiscoveryNoFallback (0.00s) === RUN TestRealWorldWhereClauseFailure real_world_where_clause_test.go:44: TESTING REAL-WORLD WHERE CLAUSE SCENARIOS real_world_where_clause_test.go:45: ============================================ === RUN TestRealWorldWhereClauseFailure/Where_ID_Greater_Than_Large_Number real_world_where_clause_test.go:65: Query: SELECT id FROM user_events WHERE id > 10000000 real_world_where_clause_test.go:66: Total rows returned: 0 real_world_where_clause_test.go:131: No rows returned - this could be correct if no data matches === RUN TestRealWorldWhereClauseFailure/Where_ID_Greater_Than_Small_Number real_world_where_clause_test.go:65: Query: SELECT id FROM user_events WHERE id > 100000 real_world_where_clause_test.go:66: Total rows returned: 7 real_world_where_clause_test.go:69: Sample IDs returned: real_world_where_clause_test.go:78: Row 1: id = 841256 real_world_where_clause_test.go:78: Row 2: id = 686003 real_world_where_clause_test.go:78: Row 3: id = 417224 real_world_where_clause_test.go:78: Row 4: id = 424297 real_world_where_clause_test.go:78: Row 5: id = 431189 real_world_where_clause_test.go:120: Analysis: real_world_where_clause_test.go:121: Rows matching WHERE condition: 7 real_world_where_clause_test.go:122: Rows NOT matching WHERE condition: 0 real_world_where_clause_test.go:128: PASS: WHERE id > 100000 should filter results - All returned rows match the WHERE condition === RUN TestRealWorldWhereClauseFailure/Where_ID_Less_Than real_world_where_clause_test.go:65: Query: SELECT id FROM user_events WHERE id < 100000 real_world_where_clause_test.go:66: Total rows returned: 3 real_world_where_clause_test.go:69: Sample IDs returned: real_world_where_clause_test.go:78: Row 1: id = 82460 real_world_where_clause_test.go:78: Row 2: id = 55537 real_world_where_clause_test.go:78: Row 3: id = 65143 real_world_where_clause_test.go:120: Analysis: real_world_where_clause_test.go:121: Rows matching WHERE condition: 3 real_world_where_clause_test.go:122: Rows NOT matching WHERE condition: 0 real_world_where_clause_test.go:128: PASS: WHERE id < 100000 should filter results - All returned rows match the WHERE condition --- PASS: TestRealWorldWhereClauseFailure (0.00s) --- PASS: TestRealWorldWhereClauseFailure/Where_ID_Greater_Than_Large_Number (0.00s) --- PASS: TestRealWorldWhereClauseFailure/Where_ID_Greater_Than_Small_Number (0.00s) --- PASS: TestRealWorldWhereClauseFailure/Where_ID_Less_Than (0.00s) === RUN TestWhereClauseWithLimitOffset real_world_where_clause_test.go:144: Testing exact failing query: SELECT id FROM user_events WHERE id > 10000000 LIMIT 10 OFFSET 5 real_world_where_clause_test.go:159: Returned 0 rows (LIMIT 10 worked) real_world_where_clause_test.go:181: WHERE clause working correctly --- PASS: TestWhereClauseWithLimitOffset (0.00s) === RUN TestWhatShouldHaveBeenTested real_world_where_clause_test.go:189: THE TEST THAT SHOULD HAVE CAUGHT THE WHERE CLAUSE ISSUE real_world_where_clause_test.go:190: ======================================================== real_world_where_clause_test.go:199: All rows: 10 real_world_where_clause_test.go:200: WHERE id > 999999999: 0 rows real_world_where_clause_test.go:213: WHERE 1 = 0 (impossible): 0 rows --- PASS: TestWhatShouldHaveBeenTested (0.00s) === RUN TestSchemaAwareParsing === RUN TestSchemaAwareParsing/JSON_Message_Parsing schema_parsing_test.go:74: JSON parsing correctly converted types: int32=1234, string='login', double=75.5, bool=true === RUN TestSchemaAwareParsing/Raw_Data_Type_Conversion schema_parsing_test.go:118: Raw data type conversions working correctly === RUN TestSchemaAwareParsing/Invalid_JSON_Graceful_Handling schema_parsing_test.go:129: Invalid JSON handled gracefully with error --- PASS: TestSchemaAwareParsing (0.00s) --- PASS: TestSchemaAwareParsing/JSON_Message_Parsing (0.00s) --- PASS: TestSchemaAwareParsing/Raw_Data_Type_Conversion (0.00s) --- PASS: TestSchemaAwareParsing/Invalid_JSON_Graceful_Handling (0.00s) === RUN TestSchemaAwareParsingIntegration schema_parsing_test.go:160: Schema-aware parsing integrates correctly with SQL engine --- PASS: TestSchemaAwareParsingIntegration (0.00s) === RUN TestSQLEngine_SelectBasic --- PASS: TestSQLEngine_SelectBasic (0.00s) === RUN TestSQLEngine_SelectWithLimit --- PASS: TestSQLEngine_SelectWithLimit (0.00s) === RUN TestSQLEngine_SelectSpecificColumns --- PASS: TestSQLEngine_SelectSpecificColumns (0.00s) === RUN TestSQLEngine_SelectFromNonExistentTable select_test.go:83: Skipping non-existent table test - table name parsing issue needs investigation --- SKIP: TestSQLEngine_SelectFromNonExistentTable (0.00s) === RUN TestSQLEngine_SelectWithOffset --- PASS: TestSQLEngine_SelectWithOffset (0.00s) === RUN TestSQLEngine_SelectWithLimitAndOffset --- PASS: TestSQLEngine_SelectWithLimitAndOffset (0.00s) === RUN TestSQLEngine_SelectWithOffsetExceedsRows --- PASS: TestSQLEngine_SelectWithOffsetExceedsRows (0.00s) === RUN TestSQLEngine_SelectWithOffsetZero --- PASS: TestSQLEngine_SelectWithOffsetZero (0.00s) === RUN TestSQLEngine_SelectDifferentTables select_test.go:211: Table user_events: 4 columns, 10 rows select_test.go:211: Table system_logs: 3 columns, 4 rows --- PASS: TestSQLEngine_SelectDifferentTables (0.00s) === RUN TestSQLAliasResolution === RUN TestSQLAliasResolution/ResolveColumnAlias === RUN TestSQLAliasResolution/SingleAliasInWhere === RUN TestSQLAliasResolution/MultipleAliasesInWhere === RUN TestSQLAliasResolution/RangeQueryWithAliases === RUN TestSQLAliasResolution/MixedAliasAndDirectColumn === RUN TestSQLAliasResolution/AliasCompatibilityWithTimestampFixes === RUN TestSQLAliasResolution/EdgeCasesAndErrorHandling === RUN TestSQLAliasResolution/ComparisonOperators === RUN TestSQLAliasResolution/ComparisonOperators/=_1000 === RUN TestSQLAliasResolution/ComparisonOperators/=_999 === RUN TestSQLAliasResolution/ComparisonOperators/>_999 === RUN TestSQLAliasResolution/ComparisonOperators/>_1000 === RUN TestSQLAliasResolution/ComparisonOperators/>=_1000 === RUN TestSQLAliasResolution/ComparisonOperators/>=_1001 === RUN TestSQLAliasResolution/ComparisonOperators/<_1001 === RUN TestSQLAliasResolution/ComparisonOperators/<_1000 === RUN TestSQLAliasResolution/ComparisonOperators/<=_1000 === RUN TestSQLAliasResolution/ComparisonOperators/<=_999 === RUN TestSQLAliasResolution/BackwardCompatibility --- PASS: TestSQLAliasResolution (0.00s) --- PASS: TestSQLAliasResolution/ResolveColumnAlias (0.00s) --- PASS: TestSQLAliasResolution/SingleAliasInWhere (0.00s) --- PASS: TestSQLAliasResolution/MultipleAliasesInWhere (0.00s) --- PASS: TestSQLAliasResolution/RangeQueryWithAliases (0.00s) --- PASS: TestSQLAliasResolution/MixedAliasAndDirectColumn (0.00s) --- PASS: TestSQLAliasResolution/AliasCompatibilityWithTimestampFixes (0.00s) --- PASS: TestSQLAliasResolution/EdgeCasesAndErrorHandling (0.00s) --- PASS: TestSQLAliasResolution/ComparisonOperators (0.00s) --- PASS: TestSQLAliasResolution/ComparisonOperators/=_1000 (0.00s) --- PASS: TestSQLAliasResolution/ComparisonOperators/=_999 (0.00s) --- PASS: TestSQLAliasResolution/ComparisonOperators/>_999 (0.00s) --- PASS: TestSQLAliasResolution/ComparisonOperators/>_1000 (0.00s) --- PASS: TestSQLAliasResolution/ComparisonOperators/>=_1000 (0.00s) --- PASS: TestSQLAliasResolution/ComparisonOperators/>=_1001 (0.00s) --- PASS: TestSQLAliasResolution/ComparisonOperators/<_1001 (0.00s) --- PASS: TestSQLAliasResolution/ComparisonOperators/<_1000 (0.00s) --- PASS: TestSQLAliasResolution/ComparisonOperators/<=_1000 (0.00s) --- PASS: TestSQLAliasResolution/ComparisonOperators/<=_999 (0.00s) --- PASS: TestSQLAliasResolution/BackwardCompatibility (0.00s) === RUN TestAliasIntegrationWithProductionScenarios === RUN TestAliasIntegrationWithProductionScenarios/OriginalFailingQuery === RUN TestAliasIntegrationWithProductionScenarios/ComplexProductionQuery === RUN TestAliasIntegrationWithProductionScenarios/PerformanceRegression --- PASS: TestAliasIntegrationWithProductionScenarios (0.00s) --- PASS: TestAliasIntegrationWithProductionScenarios/OriginalFailingQuery (0.00s) --- PASS: TestAliasIntegrationWithProductionScenarios/ComplexProductionQuery (0.00s) --- PASS: TestAliasIntegrationWithProductionScenarios/PerformanceRegression (0.00s) === RUN TestSQLFeatureDiagnostic sql_feature_diagnostic_test.go:14: SEAWEEDFS SQL ENGINE FEATURE DIAGNOSTIC sql_feature_diagnostic_test.go:15: ================================================================================ sql_feature_diagnostic_test.go:18: 1. TESTING LIMIT FUNCTIONALITY: sql_feature_diagnostic_test.go:35: LIMIT 0: PASS - Got 0 rows sql_feature_diagnostic_test.go:35: LIMIT 1: PASS - Got 1 rows sql_feature_diagnostic_test.go:35: LIMIT 3: PASS - Got 3 rows sql_feature_diagnostic_test.go:35: LIMIT 5: PASS - Got 5 rows sql_feature_diagnostic_test.go:35: LIMIT 10: PASS - Got 10 rows sql_feature_diagnostic_test.go:35: LIMIT 100: PASS - Got 10 rows sql_feature_diagnostic_test.go:43: 2. TESTING OFFSET FUNCTIONALITY: sql_feature_diagnostic_test.go:58: OFFSET 0: PASS - Got 3 rows sql_feature_diagnostic_test.go:58: OFFSET 1: PASS - Got 3 rows sql_feature_diagnostic_test.go:58: OFFSET 2: PASS - Got 3 rows sql_feature_diagnostic_test.go:58: OFFSET 5: PASS - Got 3 rows sql_feature_diagnostic_test.go:56: OFFSET 10: PASS - Beyond data range, got 0 rows sql_feature_diagnostic_test.go:56: OFFSET 100: PASS - Beyond data range, got 0 rows sql_feature_diagnostic_test.go:64: 3. TESTING WHERE CLAUSE FUNCTIONALITY: sql_feature_diagnostic_test.go:90: Specific ID match: PASS - WHERE clause working, got 1 rows sql_feature_diagnostic_test.go:90: Greater than comparison: PASS - WHERE clause working, got 7 rows sql_feature_diagnostic_test.go:90: String equality: PASS - WHERE clause working, got 1 rows sql_feature_diagnostic_test.go:90: Non-existent ID: PASS - WHERE clause working, got 0 rows sql_feature_diagnostic_test.go:90: Always false condition: PASS - WHERE clause working, got 0 rows sql_feature_diagnostic_test.go:96: 4. TESTING COMBINED LIMIT + OFFSET + WHERE: sql_feature_diagnostic_test.go:106: Combined query: Got 2 rows (LIMIT=2 part works, WHERE filtering unknown) sql_feature_diagnostic_test.go:110: ================================================================================ sql_feature_diagnostic_test.go:111: FEATURE SUMMARY: sql_feature_diagnostic_test.go:112: LIMIT: FULLY WORKING - Correctly limits result rows sql_feature_diagnostic_test.go:113: OFFSET: FULLY WORKING - Correctly skips rows sql_feature_diagnostic_test.go:114: WHERE: FULLY WORKING - All comparison operators working sql_feature_diagnostic_test.go:115: SELECT: WORKING - Supports *, columns, functions, arithmetic sql_feature_diagnostic_test.go:116: Functions: WORKING - String and datetime functions work sql_feature_diagnostic_test.go:117: Arithmetic: WORKING - +, -, *, / operations work sql_feature_diagnostic_test.go:118: ================================================================================ --- PASS: TestSQLFeatureDiagnostic (0.00s) === RUN TestSQLWhereClauseIssue sql_feature_diagnostic_test.go:125: DEMONSTRATING WHERE CLAUSE ISSUE: sql_feature_diagnostic_test.go:130: Total rows in test data: 10 sql_feature_diagnostic_test.go:134: First row ID: 82460 sql_feature_diagnostic_test.go:144: WHERE id = 82460 returned 1 rows sql_feature_diagnostic_test.go:152: WHERE clause working correctly sql_feature_diagnostic_test.go:162: WHERE 1 = 0 returned 0 rows sql_feature_diagnostic_test.go:167: Impossible WHERE condition correctly returns no rows --- PASS: TestSQLWhereClauseIssue (0.00s) === RUN TestSQLFilteringLimitOffset === RUN TestSQLFilteringLimitOffset/Where_Equals_Integer sql_filtering_limit_offset_test.go:295: PASS: WHERE with equals operator (integer) - Correct row count: 1 === RUN TestSQLFilteringLimitOffset/Where_Equals_String sql_filtering_limit_offset_test.go:298: PASS: WHERE with equals operator (string) - Row count: 1 (not validated) === RUN TestSQLFilteringLimitOffset/Where_Not_Equals sql_filtering_limit_offset_test.go:298: PASS: WHERE with not equals operator - Row count: 2 (not validated) === RUN TestSQLFilteringLimitOffset/Where_Greater_Than sql_filtering_limit_offset_test.go:298: PASS: WHERE with greater than operator - Row count: 7 (not validated) === RUN TestSQLFilteringLimitOffset/Where_Less_Than sql_filtering_limit_offset_test.go:298: PASS: WHERE with less than operator - Row count: 3 (not validated) === RUN TestSQLFilteringLimitOffset/Where_Greater_Equal sql_filtering_limit_offset_test.go:298: PASS: WHERE with greater than or equal operator - Row count: 8 (not validated) === RUN TestSQLFilteringLimitOffset/Where_Less_Equal sql_filtering_limit_offset_test.go:298: PASS: WHERE with less than or equal operator - Row count: 3 (not validated) === RUN TestSQLFilteringLimitOffset/Where_Column_Comparison sql_filtering_limit_offset_test.go:295: PASS: WHERE filtering with specific columns selected - Correct row count: 1 === RUN TestSQLFilteringLimitOffset/Where_With_Function sql_filtering_limit_offset_test.go:298: PASS: WHERE with function in SELECT - Row count: 1 (not validated) === RUN TestSQLFilteringLimitOffset/Where_With_Arithmetic sql_filtering_limit_offset_test.go:295: PASS: WHERE with arithmetic in SELECT - Correct row count: 1 === RUN TestSQLFilteringLimitOffset/Limit_1 sql_filtering_limit_offset_test.go:295: PASS: LIMIT 1 row - Correct row count: 1 === RUN TestSQLFilteringLimitOffset/Limit_5 sql_filtering_limit_offset_test.go:295: PASS: LIMIT 5 rows - Correct row count: 5 === RUN TestSQLFilteringLimitOffset/Limit_0 sql_filtering_limit_offset_test.go:295: PASS: LIMIT 0 rows (should return no results) - Correct row count: 0 === RUN TestSQLFilteringLimitOffset/Limit_Large sql_filtering_limit_offset_test.go:298: PASS: LIMIT with large number - Row count: 10 (not validated) === RUN TestSQLFilteringLimitOffset/Limit_With_Columns sql_filtering_limit_offset_test.go:295: PASS: LIMIT with specific columns - Correct row count: 3 === RUN TestSQLFilteringLimitOffset/Limit_With_Functions sql_filtering_limit_offset_test.go:295: PASS: LIMIT with functions - Correct row count: 2 === RUN TestSQLFilteringLimitOffset/Offset_0 sql_filtering_limit_offset_test.go:295: PASS: OFFSET 0 (same as no offset) - Correct row count: 5 === RUN TestSQLFilteringLimitOffset/Offset_1 sql_filtering_limit_offset_test.go:295: PASS: OFFSET 1 row - Correct row count: 3 === RUN TestSQLFilteringLimitOffset/Offset_5 sql_filtering_limit_offset_test.go:295: PASS: OFFSET 5 rows - Correct row count: 2 === RUN TestSQLFilteringLimitOffset/Offset_Large sql_filtering_limit_offset_test.go:298: PASS: OFFSET with large number - Row count: 0 (not validated) === RUN TestSQLFilteringLimitOffset/Limit_Offset_Pagination_Page1 sql_filtering_limit_offset_test.go:295: PASS: Pagination: Page 1 (LIMIT 3, OFFSET 0) - Correct row count: 3 === RUN TestSQLFilteringLimitOffset/Limit_Offset_Pagination_Page2 sql_filtering_limit_offset_test.go:295: PASS: Pagination: Page 2 (LIMIT 3, OFFSET 3) - Correct row count: 3 === RUN TestSQLFilteringLimitOffset/Limit_Offset_Pagination_Page3 sql_filtering_limit_offset_test.go:295: PASS: Pagination: Page 3 (LIMIT 3, OFFSET 6) - Correct row count: 3 === RUN TestSQLFilteringLimitOffset/Where_Limit sql_filtering_limit_offset_test.go:298: PASS: WHERE clause with LIMIT - Row count: 1 (not validated) === RUN TestSQLFilteringLimitOffset/Where_Limit_Offset sql_filtering_limit_offset_test.go:298: PASS: WHERE clause with LIMIT and OFFSET - Row count: 0 (not validated) === RUN TestSQLFilteringLimitOffset/Where_Complex_Limit sql_filtering_limit_offset_test.go:298: PASS: Complex WHERE with functions and arithmetic, plus LIMIT - Row count: 3 (not validated) === RUN TestSQLFilteringLimitOffset/Where_No_Match sql_filtering_limit_offset_test.go:295: PASS: WHERE clause that matches no rows - Correct row count: 0 === RUN TestSQLFilteringLimitOffset/Limit_Offset_Beyond_Data sql_filtering_limit_offset_test.go:295: PASS: OFFSET beyond available data - Correct row count: 0 === RUN TestSQLFilteringLimitOffset/Where_Empty_String sql_filtering_limit_offset_test.go:298: PASS: WHERE with empty string value - Row count: 0 (not validated) === RUN TestSQLFilteringLimitOffset/Small_Result_Set sql_filtering_limit_offset_test.go:295: PASS: Optimized query: specific WHERE + LIMIT 1 - Correct row count: 1 === RUN TestSQLFilteringLimitOffset/Batch_Processing sql_filtering_limit_offset_test.go:298: PASS: Batch processing pattern: moderate LIMIT - Row count: 10 (not validated) === NAME TestSQLFilteringLimitOffset sql_filtering_limit_offset_test.go:307: ================================================================================ sql_filtering_limit_offset_test.go:308: SQL FILTERING, LIMIT & OFFSET TEST SUITE SUMMARY sql_filtering_limit_offset_test.go:309: ================================================================================ sql_filtering_limit_offset_test.go:310: Total Tests: 31 sql_filtering_limit_offset_test.go:311: Successful: 31 sql_filtering_limit_offset_test.go:312: Errors: 0 sql_filtering_limit_offset_test.go:313: Row Count Mismatches: 0 sql_filtering_limit_offset_test.go:314: ================================================================================ --- PASS: TestSQLFilteringLimitOffset (0.00s) --- PASS: TestSQLFilteringLimitOffset/Where_Equals_Integer (0.00s) --- PASS: TestSQLFilteringLimitOffset/Where_Equals_String (0.00s) --- PASS: TestSQLFilteringLimitOffset/Where_Not_Equals (0.00s) --- PASS: TestSQLFilteringLimitOffset/Where_Greater_Than (0.00s) --- PASS: TestSQLFilteringLimitOffset/Where_Less_Than (0.00s) --- PASS: TestSQLFilteringLimitOffset/Where_Greater_Equal (0.00s) --- PASS: TestSQLFilteringLimitOffset/Where_Less_Equal (0.00s) --- PASS: TestSQLFilteringLimitOffset/Where_Column_Comparison (0.00s) --- PASS: TestSQLFilteringLimitOffset/Where_With_Function (0.00s) --- PASS: TestSQLFilteringLimitOffset/Where_With_Arithmetic (0.00s) --- PASS: TestSQLFilteringLimitOffset/Limit_1 (0.00s) --- PASS: TestSQLFilteringLimitOffset/Limit_5 (0.00s) --- PASS: TestSQLFilteringLimitOffset/Limit_0 (0.00s) --- PASS: TestSQLFilteringLimitOffset/Limit_Large (0.00s) --- PASS: TestSQLFilteringLimitOffset/Limit_With_Columns (0.00s) --- PASS: TestSQLFilteringLimitOffset/Limit_With_Functions (0.00s) --- PASS: TestSQLFilteringLimitOffset/Offset_0 (0.00s) --- PASS: TestSQLFilteringLimitOffset/Offset_1 (0.00s) --- PASS: TestSQLFilteringLimitOffset/Offset_5 (0.00s) --- PASS: TestSQLFilteringLimitOffset/Offset_Large (0.00s) --- PASS: TestSQLFilteringLimitOffset/Limit_Offset_Pagination_Page1 (0.00s) --- PASS: TestSQLFilteringLimitOffset/Limit_Offset_Pagination_Page2 (0.00s) --- PASS: TestSQLFilteringLimitOffset/Limit_Offset_Pagination_Page3 (0.00s) --- PASS: TestSQLFilteringLimitOffset/Where_Limit (0.00s) --- PASS: TestSQLFilteringLimitOffset/Where_Limit_Offset (0.00s) --- PASS: TestSQLFilteringLimitOffset/Where_Complex_Limit (0.00s) --- PASS: TestSQLFilteringLimitOffset/Where_No_Match (0.00s) --- PASS: TestSQLFilteringLimitOffset/Limit_Offset_Beyond_Data (0.00s) --- PASS: TestSQLFilteringLimitOffset/Where_Empty_String (0.00s) --- PASS: TestSQLFilteringLimitOffset/Small_Result_Set (0.00s) --- PASS: TestSQLFilteringLimitOffset/Batch_Processing (0.00s) === RUN TestSQLFilteringAccuracy sql_filtering_limit_offset_test.go:335: Testing SQL filtering accuracy with specific data verification sql_filtering_limit_offset_test.go:350: PASS: Exact ID filtering works correctly sql_filtering_limit_offset_test.go:363: PASS: LIMIT 3 returns exactly 3 rows sql_filtering_limit_offset_test.go:380: PASS: OFFSET 1 correctly skips first row --- PASS: TestSQLFilteringAccuracy (0.00s) === RUN TestSQLFilteringEdgeCases === RUN TestSQLFilteringEdgeCases/Zero_Limit sql_filtering_limit_offset_test.go:441: PASS: LIMIT 0 should return empty result set - Rows: 0 === RUN TestSQLFilteringEdgeCases/Large_Offset sql_filtering_limit_offset_test.go:441: PASS: Very large OFFSET should handle gracefully - Rows: 0 === RUN TestSQLFilteringEdgeCases/Where_False_Condition sql_filtering_limit_offset_test.go:431: UNEXPECTED SUCCESS: WHERE with always-false condition (may indicate feature is implemented) === RUN TestSQLFilteringEdgeCases/Complex_Where sql_filtering_limit_offset_test.go:431: UNEXPECTED SUCCESS: Complex WHERE with AND condition (may indicate feature is implemented) --- PASS: TestSQLFilteringEdgeCases (0.00s) --- PASS: TestSQLFilteringEdgeCases/Zero_Limit (0.00s) --- PASS: TestSQLFilteringEdgeCases/Large_Offset (0.00s) --- PASS: TestSQLFilteringEdgeCases/Where_False_Condition (0.00s) --- PASS: TestSQLFilteringEdgeCases/Complex_Where (0.00s) === RUN TestSQLEngine_StringConcatenationWithLiterals === RUN TestSQLEngine_StringConcatenationWithLiterals/Simple_concatenation_with_literals string_concatenation_test.go:108: Query: SELECT 'test' || action || 'end' FROM user_events LIMIT 1 string_concatenation_test.go:109: Columns: ['test'||action||'end'] string_concatenation_test.go:115: Row 0: [testloginend] === RUN TestSQLEngine_StringConcatenationWithLiterals/User's_original_complex_concatenation string_concatenation_test.go:92: Expected column 0 to be ''test'||action||'xxx'||action||'~~~'||status', got ''test'||action||'xxx'||action||' ~~~ '||status' string_concatenation_test.go:108: Query: SELECT 'test' || action || 'xxx' || action || ' ~~~ ' || status FROM user_events LIMIT 1 string_concatenation_test.go:109: Columns: ['test'||action||'xxx'||action||' ~~~ '||status] string_concatenation_test.go:115: Row 0: [testloginxxxlogin ~~~ active] === RUN TestSQLEngine_StringConcatenationWithLiterals/Mixed_columns_and_literals string_concatenation_test.go:108: Query: SELECT status || '=' || action, 'prefix:' || user_type FROM user_events LIMIT 1 string_concatenation_test.go:109: Columns: [status||'='||action 'prefix:'||user_type] string_concatenation_test.go:115: Row 0: [active=login prefix:premium] === RUN TestSQLEngine_StringConcatenationWithLiterals/Concatenation_with_spaces_in_literals string_concatenation_test.go:92: Expected column 0 to be ''['||status||']'', got '' [ '||status||' ] '' string_concatenation_test.go:108: Query: SELECT ' [ ' || status || ' ] ' FROM user_events LIMIT 2 string_concatenation_test.go:109: Columns: [' [ '||status||' ] '] string_concatenation_test.go:115: Row 0: [ [ active ] ] string_concatenation_test.go:115: Row 1: [ [ pending ] ] --- PASS: TestSQLEngine_StringConcatenationWithLiterals (0.00s) --- PASS: TestSQLEngine_StringConcatenationWithLiterals/Simple_concatenation_with_literals (0.00s) --- PASS: TestSQLEngine_StringConcatenationWithLiterals/User's_original_complex_concatenation (0.00s) --- PASS: TestSQLEngine_StringConcatenationWithLiterals/Mixed_columns_and_literals (0.00s) --- PASS: TestSQLEngine_StringConcatenationWithLiterals/Concatenation_with_spaces_in_literals (0.00s) === RUN TestSQLEngine_StringConcatenationBugReproduction string_concatenation_test.go:180: SUCCESS: Complex string concatenation works correctly! string_concatenation_test.go:181: Query: SELECT UPPER(status), id*2, 'test' || action || 'xxx' || action || ' ~~~ ' || status FROM user_events LIMIT 2 string_concatenation_test.go:188: Row 0: [ACTIVE 164920 testloginxxxlogin ~~~ active] string_concatenation_test.go:188: Row 1: [PENDING 1682512 testclickxxxclick ~~~ pending] --- PASS: TestSQLEngine_StringConcatenationBugReproduction (0.00s) === RUN TestStringFunctions === RUN TestStringFunctions/LENGTH_function_tests === RUN TestStringFunctions/LENGTH_function_tests/Length_of_string === RUN TestStringFunctions/LENGTH_function_tests/Length_of_empty_string === RUN TestStringFunctions/LENGTH_function_tests/Length_of_number === RUN TestStringFunctions/LENGTH_function_tests/Length_of_null_value === RUN TestStringFunctions/UPPER/LOWER_function_tests === RUN TestStringFunctions/TRIM_function_tests === RUN TestStringFunctions/TRIM_function_tests/TRIM_whitespace === RUN TestStringFunctions/TRIM_function_tests/LTRIM_whitespace === RUN TestStringFunctions/TRIM_function_tests/RTRIM_whitespace === RUN TestStringFunctions/TRIM_function_tests/TRIM_with_tabs_and_newlines === RUN TestStringFunctions/SUBSTRING_function_tests === RUN TestStringFunctions/CONCAT_function_tests === RUN TestStringFunctions/REPLACE_function_tests === RUN TestStringFunctions/POSITION_function_tests === RUN TestStringFunctions/LEFT/RIGHT_function_tests === RUN TestStringFunctions/REVERSE_function_tests --- PASS: TestStringFunctions (0.00s) --- PASS: TestStringFunctions/LENGTH_function_tests (0.00s) --- PASS: TestStringFunctions/LENGTH_function_tests/Length_of_string (0.00s) --- PASS: TestStringFunctions/LENGTH_function_tests/Length_of_empty_string (0.00s) --- PASS: TestStringFunctions/LENGTH_function_tests/Length_of_number (0.00s) --- PASS: TestStringFunctions/LENGTH_function_tests/Length_of_null_value (0.00s) --- PASS: TestStringFunctions/UPPER/LOWER_function_tests (0.00s) --- PASS: TestStringFunctions/TRIM_function_tests (0.00s) --- PASS: TestStringFunctions/TRIM_function_tests/TRIM_whitespace (0.00s) --- PASS: TestStringFunctions/TRIM_function_tests/LTRIM_whitespace (0.00s) --- PASS: TestStringFunctions/TRIM_function_tests/RTRIM_whitespace (0.00s) --- PASS: TestStringFunctions/TRIM_function_tests/TRIM_with_tabs_and_newlines (0.00s) --- PASS: TestStringFunctions/SUBSTRING_function_tests (0.00s) --- PASS: TestStringFunctions/CONCAT_function_tests (0.00s) --- PASS: TestStringFunctions/REPLACE_function_tests (0.00s) --- PASS: TestStringFunctions/POSITION_function_tests (0.00s) --- PASS: TestStringFunctions/LEFT/RIGHT_function_tests (0.00s) --- PASS: TestStringFunctions/REVERSE_function_tests (0.00s) === RUN TestStringFunctionsSQL === RUN TestStringFunctionsSQL/UPPER_function === RUN TestStringFunctionsSQL/LOWER_function === RUN TestStringFunctionsSQL/LENGTH_function === RUN TestStringFunctionsSQL/TRIM_function === RUN TestStringFunctionsSQL/LTRIM_function === RUN TestStringFunctionsSQL/RTRIM_function === RUN TestStringFunctionsSQL/Multiple_string_functions === RUN TestStringFunctionsSQL/String_function_with_wrong_argument_count === RUN TestStringFunctionsSQL/String_function_with_no_arguments --- PASS: TestStringFunctionsSQL (0.00s) --- PASS: TestStringFunctionsSQL/UPPER_function (0.00s) --- PASS: TestStringFunctionsSQL/LOWER_function (0.00s) --- PASS: TestStringFunctionsSQL/LENGTH_function (0.00s) --- PASS: TestStringFunctionsSQL/TRIM_function (0.00s) --- PASS: TestStringFunctionsSQL/LTRIM_function (0.00s) --- PASS: TestStringFunctionsSQL/RTRIM_function (0.00s) --- PASS: TestStringFunctionsSQL/Multiple_string_functions (0.00s) --- PASS: TestStringFunctionsSQL/String_function_with_wrong_argument_count (0.00s) --- PASS: TestStringFunctionsSQL/String_function_with_no_arguments (0.00s) === RUN TestSQLEngine_StringFunctionsAndLiterals === RUN TestSQLEngine_StringFunctionsAndLiterals/String_functions_-_UPPER_and_LENGTH string_literal_function_test.go:48: Status: 'active', UPPER: 'ACTIVE', LENGTH: '6' string_literal_function_test.go:160: Query: SELECT status, UPPER(status), LENGTH(status) FROM user_events LIMIT 3 string_literal_function_test.go:161: Columns: [status UPPER(status) LENGTH(status)] string_literal_function_test.go:167: Row 0: [active ACTIVE 6] string_literal_function_test.go:167: Row 1: [pending PENDING 7] string_literal_function_test.go:167: Row 2: [ ] === RUN TestSQLEngine_StringFunctionsAndLiterals/String_literal_in_SELECT string_literal_function_test.go:160: Query: SELECT id, user_id, 'good' FROM user_events LIMIT 2 string_literal_function_test.go:161: Columns: [id user_id 'good'] string_literal_function_test.go:167: Row 0: [82460 9465 good] string_literal_function_test.go:167: Row 1: [841256 2336 good] === RUN TestSQLEngine_StringFunctionsAndLiterals/Mixed:_columns,_functions,_arithmetic,_and_literals string_literal_function_test.go:160: Query: SELECT id, UPPER(status), id*2, 'test' FROM user_events LIMIT 2 string_literal_function_test.go:161: Columns: [id UPPER(status) id*2 'test'] string_literal_function_test.go:167: Row 0: [82460 ACTIVE 164920 test] string_literal_function_test.go:167: Row 1: [841256 PENDING 1682512 test] === RUN TestSQLEngine_StringFunctionsAndLiterals/User's_original_failing_query_-_fixed string_literal_function_test.go:160: Query: SELECT status, action, user_type, UPPER(action), LENGTH(action) FROM user_events LIMIT 2 string_literal_function_test.go:161: Columns: [status action user_type UPPER(action) LENGTH(action)] string_literal_function_test.go:167: Row 0: [active login premium LOGIN 5] string_literal_function_test.go:167: Row 1: [pending click standard CLICK 5] --- PASS: TestSQLEngine_StringFunctionsAndLiterals (0.01s) --- PASS: TestSQLEngine_StringFunctionsAndLiterals/String_functions_-_UPPER_and_LENGTH (0.00s) --- PASS: TestSQLEngine_StringFunctionsAndLiterals/String_literal_in_SELECT (0.00s) --- PASS: TestSQLEngine_StringFunctionsAndLiterals/Mixed:_columns,_functions,_arithmetic,_and_literals (0.00s) --- PASS: TestSQLEngine_StringFunctionsAndLiterals/User's_original_failing_query_-_fixed (0.01s) === RUN TestSQLEngine_StringFunctionErrorHandling string_literal_function_test.go:186: UPPER function works correctly string_literal_function_test.go:197: LENGTH function works correctly --- PASS: TestSQLEngine_StringFunctionErrorHandling (0.00s) === RUN TestTimestampIntegrationScenarios === RUN TestTimestampIntegrationScenarios/EndToEndTimestampEquality === RUN TestTimestampIntegrationScenarios/EndToEndTimestampEquality/original_failing_1 === RUN TestTimestampIntegrationScenarios/EndToEndTimestampEquality/original_failing_2 === RUN TestTimestampIntegrationScenarios/EndToEndTimestampEquality/current_data === RUN TestTimestampIntegrationScenarios/ComplexRangeQueries === RUN TestTimestampIntegrationScenarios/ComplexRangeQueries/RangeWithDifferentBounds === RUN TestTimestampIntegrationScenarios/ComplexRangeQueries/RangeWithSameBounds === RUN TestTimestampIntegrationScenarios/ComplexRangeQueries/OpenEndedRange === RUN TestTimestampIntegrationScenarios/ProductionScenarioReproduction --- PASS: TestTimestampIntegrationScenarios (0.00s) --- PASS: TestTimestampIntegrationScenarios/EndToEndTimestampEquality (0.00s) --- PASS: TestTimestampIntegrationScenarios/EndToEndTimestampEquality/original_failing_1 (0.00s) --- PASS: TestTimestampIntegrationScenarios/EndToEndTimestampEquality/original_failing_2 (0.00s) --- PASS: TestTimestampIntegrationScenarios/EndToEndTimestampEquality/current_data (0.00s) --- PASS: TestTimestampIntegrationScenarios/ComplexRangeQueries (0.00s) --- PASS: TestTimestampIntegrationScenarios/ComplexRangeQueries/RangeWithDifferentBounds (0.00s) --- PASS: TestTimestampIntegrationScenarios/ComplexRangeQueries/RangeWithSameBounds (0.00s) --- PASS: TestTimestampIntegrationScenarios/ComplexRangeQueries/OpenEndedRange (0.00s) --- PASS: TestTimestampIntegrationScenarios/ProductionScenarioReproduction (0.00s) === RUN TestRegressionPrevention === RUN TestRegressionPrevention/SmallTimestamps === RUN TestRegressionPrevention/NonTimestampColumns === RUN TestRegressionPrevention/StringComparisons --- PASS: TestRegressionPrevention (0.00s) --- PASS: TestRegressionPrevention/SmallTimestamps (0.00s) --- PASS: TestRegressionPrevention/NonTimestampColumns (0.00s) --- PASS: TestRegressionPrevention/StringComparisons (0.00s) === RUN TestTimestampQueryFixes === RUN TestTimestampQueryFixes/Fix1_PrecisionLoss === RUN TestTimestampQueryFixes/Fix2_TimeFilterExtraction === RUN TestTimestampQueryFixes/Fix3_RangeBoundaryFix === RUN TestTimestampQueryFixes/Fix4_DifferentRangeBoundaries === RUN TestTimestampQueryFixes/Fix5_PredicateAccuracy === RUN TestTimestampQueryFixes/Fix6_ComparisonOperators === RUN TestTimestampQueryFixes/Fix7_EdgeCases --- PASS: TestTimestampQueryFixes (0.00s) --- PASS: TestTimestampQueryFixes/Fix1_PrecisionLoss (0.00s) --- PASS: TestTimestampQueryFixes/Fix2_TimeFilterExtraction (0.00s) --- PASS: TestTimestampQueryFixes/Fix3_RangeBoundaryFix (0.00s) --- PASS: TestTimestampQueryFixes/Fix4_DifferentRangeBoundaries (0.00s) --- PASS: TestTimestampQueryFixes/Fix5_PredicateAccuracy (0.00s) --- PASS: TestTimestampQueryFixes/Fix6_ComparisonOperators (0.00s) --- PASS: TestTimestampQueryFixes/Fix7_EdgeCases (0.00s) === RUN TestOriginalFailingQueries === RUN TestOriginalFailingQueries/OriginalQuery1 === RUN TestOriginalFailingQueries/OriginalQuery2 === RUN TestOriginalFailingQueries/CurrentDataQuery --- PASS: TestOriginalFailingQueries (0.00s) --- PASS: TestOriginalFailingQueries/OriginalQuery1 (0.00s) --- PASS: TestOriginalFailingQueries/OriginalQuery2 (0.00s) --- PASS: TestOriginalFailingQueries/CurrentDataQuery (0.00s) === RUN TestWhereParsing === RUN TestWhereParsing/Simple_Equals where_clause_debug_test.go:78: PASS: WHERE clause parsed successfully for: Simple equality WHERE clause where_clause_debug_test.go:79: WHERE expression type: *engine.ComparisonExpr === RUN TestWhereParsing/Greater_Than where_clause_debug_test.go:78: PASS: WHERE clause parsed successfully for: Greater than WHERE clause where_clause_debug_test.go:79: WHERE expression type: *engine.ComparisonExpr === RUN TestWhereParsing/String_Equals where_clause_debug_test.go:78: PASS: WHERE clause parsed successfully for: String equality WHERE clause where_clause_debug_test.go:79: WHERE expression type: *engine.ComparisonExpr === RUN TestWhereParsing/Impossible_Condition where_clause_debug_test.go:78: PASS: WHERE clause parsed successfully for: Impossible WHERE condition (should parse but return no rows) where_clause_debug_test.go:79: WHERE expression type: *engine.ComparisonExpr --- PASS: TestWhereParsing (0.00s) --- PASS: TestWhereParsing/Simple_Equals (0.00s) --- PASS: TestWhereParsing/Greater_Than (0.00s) --- PASS: TestWhereParsing/String_Equals (0.00s) --- PASS: TestWhereParsing/Impossible_Condition (0.00s) === RUN TestPredicateBuilding === RUN TestPredicateBuilding/Simple_Equals_Match where_clause_debug_test.go:172: PASS: Simple equality - should match - Predicate worked correctly (match=true) === RUN TestPredicateBuilding/Simple_Equals_NoMatch where_clause_debug_test.go:172: PASS: Simple equality - should not match - Predicate worked correctly (match=false) === RUN TestPredicateBuilding/Greater_Than_Match where_clause_debug_test.go:172: PASS: Greater than - should match - Predicate worked correctly (match=true) === RUN TestPredicateBuilding/Greater_Than_NoMatch where_clause_debug_test.go:172: PASS: Greater than - should not match - Predicate worked correctly (match=false) === RUN TestPredicateBuilding/String_Equals_Match where_clause_debug_test.go:172: PASS: String equality - should match - Predicate worked correctly (match=true) === RUN TestPredicateBuilding/String_Equals_NoMatch where_clause_debug_test.go:172: PASS: String equality - should not match - Predicate worked correctly (match=false) === RUN TestPredicateBuilding/Impossible_Condition where_clause_debug_test.go:172: PASS: Impossible condition - should never match - Predicate worked correctly (match=false) --- PASS: TestPredicateBuilding (0.00s) --- PASS: TestPredicateBuilding/Simple_Equals_Match (0.00s) --- PASS: TestPredicateBuilding/Simple_Equals_NoMatch (0.00s) --- PASS: TestPredicateBuilding/Greater_Than_Match (0.00s) --- PASS: TestPredicateBuilding/Greater_Than_NoMatch (0.00s) --- PASS: TestPredicateBuilding/String_Equals_Match (0.00s) --- PASS: TestPredicateBuilding/String_Equals_NoMatch (0.00s) --- PASS: TestPredicateBuilding/Impossible_Condition (0.00s) === RUN TestWhereClauseEndToEnd where_clause_debug_test.go:185: END-TO-END WHERE CLAUSE VALIDATION where_clause_debug_test.go:186: =================================== where_clause_debug_test.go:194: Baseline (no WHERE): 10 rows where_clause_debug_test.go:202: WHERE 1 = 0: 0 rows where_clause_debug_test.go:210: Impossible WHERE condition correctly returns 0 rows where_clause_debug_test.go:222: WHERE id = 82460: 1 rows where_clause_debug_test.go:227: Specific ID WHERE clause working correctly where_clause_debug_test.go:239: WHERE id > 10000000: 0 rows where_clause_debug_test.go:256: WHERE id > 10000000 correctly filtered results --- PASS: TestWhereClauseEndToEnd (0.00s) === RUN TestSpecificWhereClauseBug where_clause_debug_test.go:298: REPRODUCING EXACT WHERE CLAUSE BUG where_clause_debug_test.go:299: ================================== where_clause_debug_test.go:309: Query: SELECT id FROM user_events WHERE id > 10000000 LIMIT 10 OFFSET 5 where_clause_debug_test.go:310: Returned 0 rows: where_clause_debug_test.go:326: WHERE clause working correctly - all IDs > 10,000,000 --- PASS: TestSpecificWhereClauseBug (0.00s) === RUN TestWhereClauseValidation where_validation_test.go:13: WHERE CLAUSE VALIDATION TESTS where_validation_test.go:14: ============================== where_validation_test.go:22: Baseline data - Total rows: 10 where_validation_test.go:24: Sample IDs: 82460, 841256, 55537 where_validation_test.go:38: WHERE id = 82460: 1 rows where_validation_test.go:40: Specific ID filtering works correctly where_validation_test.go:59: Data range: min ID = 55537, max ID = 841256 where_validation_test.go:69: WHERE id > 448396: 2 rows where_validation_test.go:83: Range filtering works correctly - all returned IDs > 448396 where_validation_test.go:95: WHERE status = 'active': 1 rows where_validation_test.go:107: String filtering works correctly where_validation_test.go:111: TESTING REAL-WORLD CASE: where_validation_test.go:118: Real-world query returned: 0 rows where_validation_test.go:131: Real-world case FIXED: No violations found --- PASS: TestWhereClauseValidation (0.00s) === RUN TestWhereClauseComparisonOperators where_validation_test.go:164: Testing comparison operators with ID = 841256 where_validation_test.go:175: WHERE id = 841256: 1 rows (equals) where_validation_test.go:175: WHERE id != 841256: 9 rows (not equals) where_validation_test.go:175: WHERE id > 841256: 0 rows (greater than) where_validation_test.go:175: WHERE id < 841256: 9 rows (less than) where_validation_test.go:175: WHERE id >= 841256: 1 rows (greater or equal) where_validation_test.go:175: WHERE id <= 841256: 10 rows (less or equal) --- PASS: TestWhereClauseComparisonOperators (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/query/engine 0.074s === RUN TestGjson { "quiz": { "sport": { "q1": { "question": "Which one is correct team name in NBA?", "options": [ "New York Bulls", "Los Angeles Kings", "Golden State Warriros", "Huston Rocket" ], "answer": "Huston Rocket" } }, "maths": { "q1": { "question": "5 + 7 = ?", "options": [ "10", "11", "12", "13" ], "answer": "12" }, "q2": { "question": "12 - 8 = ?", "options": [ "1", "2", "3", "4" ], "answer": "4" } } } } +++++++++++ 12 5 { "sport": { "q1": { "question": "Which one is correct team name in NBA?", "options": [ "New York Bulls", "Los Angeles Kings", "Golden State Warriros", "Huston Rocket" ], "answer": "Huston Rocket" } }, "maths": { "q1": { "question": "5 + 7 = ?", "options": [ "10", "11", "12", "13" ], "answer": "12" }, "q2": { "question": "12 - 8 = ?", "options": [ "1", "2", "3", "4" ], "answer": "4" } } } 0 0 ----------- { "fruit": "Apple", "size": "Large", "quiz": "Red" } +++++++++++ 51 3 Red 13 3 Apple ----------- --- PASS: TestGjson (0.00s) === RUN TestJsonQueryRow {fruit:"Bl\"ue",size:6} --- PASS: TestJsonQueryRow (0.00s) === RUN TestJsonQueryNumber {fruit:"Bl\"ue",quiz:"green"} --- PASS: TestJsonQueryNumber (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/query/json 0.003s ? github.com/seaweedfs/seaweedfs/weed/query/sqltypes [no test files] ? github.com/seaweedfs/seaweedfs/weed/remote_storage [no test files] === RUN TestAzureStorageClientBasic azure_storage_client_test.go:26: Skipping Azure storage test: AZURE_STORAGE_ACCOUNT or AZURE_STORAGE_ACCESS_KEY not set --- SKIP: TestAzureStorageClientBasic (0.00s) === RUN TestToMetadata === RUN TestToMetadata/basic_metadata === RUN TestToMetadata/metadata_with_dashes === RUN TestToMetadata/non-metadata_keys_ignored === RUN TestToMetadata/keys_starting_with_digits === RUN TestToMetadata/uppercase_and_mixed_case_keys === RUN TestToMetadata/keys_with_invalid_characters === RUN TestToMetadata/collision_prevention === RUN TestToMetadata/empty_input --- PASS: TestToMetadata (0.00s) --- PASS: TestToMetadata/basic_metadata (0.00s) --- PASS: TestToMetadata/metadata_with_dashes (0.00s) --- PASS: TestToMetadata/non-metadata_keys_ignored (0.00s) --- PASS: TestToMetadata/keys_starting_with_digits (0.00s) --- PASS: TestToMetadata/uppercase_and_mixed_case_keys (0.00s) --- PASS: TestToMetadata/keys_with_invalid_characters (0.00s) --- PASS: TestToMetadata/collision_prevention (0.00s) --- PASS: TestToMetadata/empty_input (0.00s) === RUN TestAzureRemoteStorageMaker --- PASS: TestAzureRemoteStorageMaker (0.00s) === RUN TestAzureStorageClientErrors --- PASS: TestAzureStorageClientErrors (11.86s) === RUN TestAzureRemoteStorageClientImplementsInterface --- PASS: TestAzureRemoteStorageClientImplementsInterface (0.00s) === RUN TestAzureErrRemoteObjectNotFoundIsAccessible --- PASS: TestAzureErrRemoteObjectNotFoundIsAccessible (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/remote_storage/azure 11.877s === RUN TestGCSRemoteStorageClientImplementsInterface --- PASS: TestGCSRemoteStorageClientImplementsInterface (0.00s) === RUN TestGCSErrRemoteObjectNotFoundIsAccessible --- PASS: TestGCSErrRemoteObjectNotFoundIsAccessible (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/remote_storage/gcs 0.022s === RUN TestS3MakeUsesAnonymousCredentialsWhenKeysAreEmpty --- PASS: TestS3MakeUsesAnonymousCredentialsWhenKeysAreEmpty (0.00s) === RUN TestS3MakeUsesStaticCredentialsWhenKeysAreProvided --- PASS: TestS3MakeUsesStaticCredentialsWhenKeysAreProvided (0.00s) === RUN TestS3RemoteStorageClientImplementsInterface --- PASS: TestS3RemoteStorageClientImplementsInterface (0.00s) === RUN TestS3ErrRemoteObjectNotFoundIsAccessible --- PASS: TestS3ErrRemoteObjectNotFoundIsAccessible (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/remote_storage/s3 0.016s === RUN TestReplicateRenameUsesTargetKeyForNonFilerSink --- PASS: TestReplicateRenameUsesTargetKeyForNonFilerSink (0.00s) === RUN TestReplicateRenameUsesUpdateForFilerSink --- PASS: TestReplicateRenameUsesUpdateForFilerSink (0.00s) === RUN TestReplicateRenameFallbackCreatesTargetKey --- PASS: TestReplicateRenameFallbackCreatesTargetKey (0.00s) === RUN TestPathIsEqualOrUnderUsesDirectoryBoundaries === RUN TestPathIsEqualOrUnderUsesDirectoryBoundaries/equal === RUN TestPathIsEqualOrUnderUsesDirectoryBoundaries/descendant === RUN TestPathIsEqualOrUnderUsesDirectoryBoundaries/sibling_prefix === RUN TestPathIsEqualOrUnderUsesDirectoryBoundaries/root --- PASS: TestPathIsEqualOrUnderUsesDirectoryBoundaries (0.00s) --- PASS: TestPathIsEqualOrUnderUsesDirectoryBoundaries/equal (0.00s) --- PASS: TestPathIsEqualOrUnderUsesDirectoryBoundaries/descendant (0.00s) --- PASS: TestPathIsEqualOrUnderUsesDirectoryBoundaries/sibling_prefix (0.00s) --- PASS: TestPathIsEqualOrUnderUsesDirectoryBoundaries/root (0.00s) === RUN TestReplicateRenameOutToSiblingPrefixBecomesDelete --- PASS: TestReplicateRenameOutToSiblingPrefixBecomesDelete (0.00s) === RUN TestReplicateRenameFromExcludedDirBecomesCreate --- PASS: TestReplicateRenameFromExcludedDirBecomesCreate (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/replication 0.028s === RUN TestDetectSSEType === RUN TestDetectSSEType/no_chunks_no_extended === RUN TestDetectSSEType/plaintext_chunks === RUN TestDetectSSEType/uniform_SSE-S3_chunks === RUN TestDetectSSEType/uniform_SSE-KMS_chunks === RUN TestDetectSSEType/mixed_chunk_SSE_types === RUN TestDetectSSEType/inline_SSE-S3_via_extended === RUN TestDetectSSEType/inline_SSE-KMS_via_extended === RUN TestDetectSSEType/inline_SSE-C_via_extended === RUN TestDetectSSEType/conflicting_extended_metadata === RUN TestDetectSSEType/chunks_take_precedence_over_extended --- PASS: TestDetectSSEType (0.00s) --- PASS: TestDetectSSEType/no_chunks_no_extended (0.00s) --- PASS: TestDetectSSEType/plaintext_chunks (0.00s) --- PASS: TestDetectSSEType/uniform_SSE-S3_chunks (0.00s) --- PASS: TestDetectSSEType/uniform_SSE-KMS_chunks (0.00s) --- PASS: TestDetectSSEType/mixed_chunk_SSE_types (0.00s) --- PASS: TestDetectSSEType/inline_SSE-S3_via_extended (0.00s) --- PASS: TestDetectSSEType/inline_SSE-KMS_via_extended (0.00s) --- PASS: TestDetectSSEType/inline_SSE-C_via_extended (0.00s) --- PASS: TestDetectSSEType/conflicting_extended_metadata (0.00s) --- PASS: TestDetectSSEType/chunks_take_precedence_over_extended (0.00s) === RUN TestMaybeDecryptReader_Plaintext --- PASS: TestMaybeDecryptReader_Plaintext (0.00s) === RUN TestMaybeDecryptReader_NilEntry --- PASS: TestMaybeDecryptReader_NilEntry (0.00s) === RUN TestMaybeDecryptReader_SSEC_Error --- PASS: TestMaybeDecryptReader_SSEC_Error (0.00s) === RUN TestMaybeDecryptContent_Plaintext --- PASS: TestMaybeDecryptContent_Plaintext (0.00s) === RUN TestMaybeDecryptContent_NilEntry --- PASS: TestMaybeDecryptContent_NilEntry (0.00s) === RUN TestMaybeDecryptContent_Empty --- PASS: TestMaybeDecryptContent_Empty (0.00s) === RUN TestMaybeDecryptContent_SSEC_Error --- PASS: TestMaybeDecryptContent_SSEC_Error (0.00s) === RUN TestMaybeDecryptContent_MixedExtended_Error --- PASS: TestMaybeDecryptContent_MixedExtended_Error (0.00s) === RUN TestMaybeDecryptReader_SSES3 I0505 12:12:52.601477 s3_sse_s3.go:370 SSE-S3 KeyManager: Loaded KEK from s3.sse.kek config I0505 12:12:52.601887 s3_sse_s3.go:407 SSE-S3 KeyManager: No KEK configured. SSE-S3 encryption is disabled. Set s3.sse.kek or s3.sse.key in security.toml to enable it. --- PASS: TestMaybeDecryptReader_SSES3 (0.00s) === RUN TestMaybeDecryptContent_SSES3 I0505 12:12:52.601930 s3_sse_s3.go:370 SSE-S3 KeyManager: Loaded KEK from s3.sse.kek config I0505 12:12:52.601947 s3_sse_s3.go:407 SSE-S3 KeyManager: No KEK configured. SSE-S3 encryption is disabled. Set s3.sse.kek or s3.sse.key in security.toml to enable it. --- PASS: TestMaybeDecryptContent_SSES3 (0.00s) === RUN TestMaybeDecryptReader_SSEKMS --- PASS: TestMaybeDecryptReader_SSEKMS (0.00s) === RUN TestMaybeDecryptContent_SSEKMS --- PASS: TestMaybeDecryptContent_SSEKMS (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/replication/repl_util 0.025s ? github.com/seaweedfs/seaweedfs/weed/replication/sink [no test files] === RUN TestAzureSinkInterface --- PASS: TestAzureSinkInterface (0.00s) === RUN TestAzureSinkInitialization azure_sink_test.go:99: Skipping Azure sink test: AZURE_STORAGE_ACCOUNT or AZURE_STORAGE_ACCESS_KEY not set --- SKIP: TestAzureSinkInitialization (0.00s) === RUN TestAzureSinkInitializeFromConfig azure_sink_test.go:132: Skipping Azure sink config test: AZURE_STORAGE_ACCOUNT or AZURE_STORAGE_ACCESS_KEY not set --- SKIP: TestAzureSinkInitializeFromConfig (0.00s) === RUN TestCleanKey === RUN TestCleanKey//test/file.txt === RUN TestCleanKey/test/file.txt === RUN TestCleanKey// === RUN TestCleanKey/#00 === RUN TestCleanKey//a/b/c --- PASS: TestCleanKey (0.00s) --- PASS: TestCleanKey//test/file.txt (0.00s) --- PASS: TestCleanKey/test/file.txt (0.00s) --- PASS: TestCleanKey// (0.00s) --- PASS: TestCleanKey/#00 (0.00s) --- PASS: TestCleanKey//a/b/c (0.00s) === RUN TestAzureSinkEntryOperations azure_sink_test.go:186: Skipping Azure sink entry test: credentials not set --- SKIP: TestAzureSinkEntryOperations (0.00s) === RUN TestAzureSinkPrecondition azure_sink_test.go:281: Skipping Azure sink precondition test: credentials not set --- SKIP: TestAzureSinkPrecondition (0.00s) === RUN TestAzureSinkIdempotentCreate azure_sink_test.go:350: Skipping Azure sink idempotent create test: credentials not set --- SKIP: TestAzureSinkIdempotentCreate (0.00s) === RUN TestAzureSinkInvalidCredentials azure_sink_test.go:465: Invalid credentials correctly rejected at initialization --- SKIP: TestAzureSinkInvalidCredentials (11.55s) PASS ok github.com/seaweedfs/seaweedfs/weed/replication/sink/azuresink 11.578s ? github.com/seaweedfs/seaweedfs/weed/replication/sink/b2sink [no test files] === RUN TestTargetPathToSourcePath === RUN TestTargetPathToSourcePath/basic_mapping === RUN TestTargetPathToSourcePath/trailing_slash_roots === RUN TestTargetPathToSourcePath/root_target_mapping === RUN TestTargetPathToSourcePath/target_root_itself === RUN TestTargetPathToSourcePath/outside_target_root --- PASS: TestTargetPathToSourcePath (0.00s) --- PASS: TestTargetPathToSourcePath/basic_mapping (0.00s) --- PASS: TestTargetPathToSourcePath/trailing_slash_roots (0.00s) --- PASS: TestTargetPathToSourcePath/root_target_mapping (0.00s) --- PASS: TestTargetPathToSourcePath/target_root_itself (0.00s) --- PASS: TestTargetPathToSourcePath/outside_target_root (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/replication/sink/filersink 0.015s ? github.com/seaweedfs/seaweedfs/weed/replication/sink/gcssink [no test files] === RUN TestCreateEntry_OverwriteReadOnlyFile --- PASS: TestCreateEntry_OverwriteReadOnlyFile (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/replication/sink/localsink 0.034s === RUN TestBuildTaggingString_ShouldStripTagPrefix --- PASS: TestBuildTaggingString_ShouldStripTagPrefix (0.00s) === RUN TestBuildTaggingString_ShouldURLEncodeValues --- PASS: TestBuildTaggingString_ShouldURLEncodeValues (0.00s) === RUN TestBuildTaggingString_EmptyWhenNoTags --- PASS: TestBuildTaggingString_EmptyWhenNoTags (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/replication/sink/s3sink 0.030s === RUN TestDownloadFile_NoOffset --- PASS: TestDownloadFile_NoOffset (0.00s) === RUN TestDownloadFile_WithOffset --- PASS: TestDownloadFile_WithOffset (0.00s) === RUN TestDownloadFile_RejectsIgnoredRange --- PASS: TestDownloadFile_RejectsIgnoredRange (0.00s) === RUN TestDownloadFile_ContentDisposition --- PASS: TestDownloadFile_ContentDisposition (0.00s) === RUN TestDownloadFile_PartialReadThenResume --- PASS: TestDownloadFile_PartialReadThenResume (0.00s) === RUN TestDownloadFile_GzipPartialReadThenResume --- PASS: TestDownloadFile_GzipPartialReadThenResume (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/replication/source 0.015s ? github.com/seaweedfs/seaweedfs/weed/replication/sub [no test files] === RUN TestOnIamConfigChangeLegacyIdentityDeletionReloadsConfiguration --- PASS: TestOnIamConfigChangeLegacyIdentityDeletionReloadsConfiguration (0.00s) === RUN TestOnIamConfigChangeReloadsOnIamIdentityDirectoryChanges --- PASS: TestOnIamConfigChangeReloadsOnIamIdentityDirectoryChanges (0.00s) === RUN TestReverseProxySignatureVerification === RUN TestReverseProxySignatureVerification/non-standard_port,_externalUrl_matches_proxy_address I0505 12:12:52.607352 auth_credentials.go:211 S3 signature verification will use external host: "127.0.0.1:39739" (from "http://127.0.0.1:39739") I0505 12:12:52.607499 config_loader.go:73 Using explicit credential store: memory === RUN TestReverseProxySignatureVerification/externalUrl_with_non-standard_port,_client_signs_against_external_host I0505 12:12:52.612565 auth_credentials.go:211 S3 signature verification will use external host: "api.example.com:9000" (from "http://api.example.com:9000") I0505 12:12:52.612574 config_loader.go:73 Using explicit credential store: memory === RUN TestReverseProxySignatureVerification/externalUrl_with_HTTPS_default_port_stripped,_client_signs_without_port I0505 12:12:52.613249 auth_credentials.go:211 S3 signature verification will use external host: "api.example.com" (from "https://api.example.com:443") I0505 12:12:52.613253 config_loader.go:73 Using explicit credential store: memory === RUN TestReverseProxySignatureVerification/externalUrl_with_HTTP_default_port_stripped,_client_signs_without_port I0505 12:12:52.613836 auth_credentials.go:211 S3 signature verification will use external host: "api.example.com" (from "http://api.example.com:80") I0505 12:12:52.613840 config_loader.go:73 Using explicit credential store: memory === RUN TestReverseProxySignatureVerification/proxy_forwards_X-Forwarded-Host_correctly,_no_externalUrl_needed I0505 12:12:52.614469 config_loader.go:73 Using explicit credential store: memory === RUN TestReverseProxySignatureVerification/proxy_without_X-Forwarded-Host,_no_externalUrl:_host_mismatch I0505 12:12:52.615335 config_loader.go:73 Using explicit credential store: memory === RUN TestReverseProxySignatureVerification/proxy_without_X-Forwarded-Host,_externalUrl_saves_the_day I0505 12:12:52.616157 auth_credentials.go:211 S3 signature verification will use external host: "api.example.com:9000" (from "http://api.example.com:9000") I0505 12:12:52.616164 config_loader.go:73 Using explicit credential store: memory --- PASS: TestReverseProxySignatureVerification (0.01s) --- PASS: TestReverseProxySignatureVerification/non-standard_port,_externalUrl_matches_proxy_address (0.01s) --- PASS: TestReverseProxySignatureVerification/externalUrl_with_non-standard_port,_client_signs_against_external_host (0.00s) --- PASS: TestReverseProxySignatureVerification/externalUrl_with_HTTPS_default_port_stripped,_client_signs_without_port (0.00s) --- PASS: TestReverseProxySignatureVerification/externalUrl_with_HTTP_default_port_stripped,_client_signs_without_port (0.00s) --- PASS: TestReverseProxySignatureVerification/proxy_forwards_X-Forwarded-Host_correctly,_no_externalUrl_needed (0.00s) --- PASS: TestReverseProxySignatureVerification/proxy_without_X-Forwarded-Host,_no_externalUrl:_host_mismatch (0.00s) --- PASS: TestReverseProxySignatureVerification/proxy_without_X-Forwarded-Host,_externalUrl_saves_the_day (0.00s) === RUN TestReproIssue7912 I0505 12:12:52.617586 config_loader.go:73 Using explicit credential store: memory === RUN TestReproIssue7912/Unknown_access_key W0505 12:12:52.617757 auth_signature_v4.go:254 InvalidAccessKeyId: attempted key 'unknown_key' not found. Available keys: 2, Auth enabled: true === RUN TestReproIssue7912/Positive_test_case:_properly_signed_credentials === RUN TestReproIssue7912/Nil_identity_tests_for_guards === RUN TestReproIssue7912/AuthSignatureOnly_path === RUN TestReproIssue7912/Wrong_secret_key === RUN TestReproIssue7912/Anonymous_request_to_protected_bucket === RUN TestReproIssue7912/Non-S3_request_should_be_denied === RUN TestReproIssue7912/Any_other_credentials W0505 12:12:52.618187 auth_signature_v4.go:254 InvalidAccessKeyId: attempted key 'some_other_key' not found. Available keys: 2, Auth enabled: true === RUN TestReproIssue7912/Streaming_unsigned_payload_bypass_attempt --- PASS: TestReproIssue7912 (0.00s) --- PASS: TestReproIssue7912/Unknown_access_key (0.00s) --- PASS: TestReproIssue7912/Positive_test_case:_properly_signed_credentials (0.00s) --- PASS: TestReproIssue7912/Nil_identity_tests_for_guards (0.00s) --- PASS: TestReproIssue7912/AuthSignatureOnly_path (0.00s) --- PASS: TestReproIssue7912/Wrong_secret_key (0.00s) --- PASS: TestReproIssue7912/Anonymous_request_to_protected_bucket (0.00s) --- PASS: TestReproIssue7912/Non-S3_request_should_be_denied (0.00s) --- PASS: TestReproIssue7912/Any_other_credentials (0.00s) --- PASS: TestReproIssue7912/Streaming_unsigned_payload_bypass_attempt (0.00s) === RUN TestExternalUrlSignatureVerification === RUN TestExternalUrlSignatureVerification/non-standard_port_with_externalUrl I0505 12:12:52.618267 auth_credentials.go:211 S3 signature verification will use external host: "api.example.com:9000" (from "https://api.example.com:9000") I0505 12:12:52.618272 config_loader.go:73 Using explicit credential store: memory === RUN TestExternalUrlSignatureVerification/HTTPS_default_port_443_with_externalUrl_(port_stripped_by_SDK_and_parseExternalUrlToHost) I0505 12:12:52.618389 auth_credentials.go:211 S3 signature verification will use external host: "api.example.com" (from "https://api.example.com:443") I0505 12:12:52.618393 config_loader.go:73 Using explicit credential store: memory === RUN TestExternalUrlSignatureVerification/HTTPS_without_explicit_port_with_externalUrl I0505 12:12:52.618496 auth_credentials.go:211 S3 signature verification will use external host: "api.example.com" (from "https://api.example.com") I0505 12:12:52.618500 config_loader.go:73 Using explicit credential store: memory === RUN TestExternalUrlSignatureVerification/HTTP_default_port_80_with_externalUrl I0505 12:12:52.618594 auth_credentials.go:211 S3 signature verification will use external host: "api.example.com" (from "http://api.example.com:80") I0505 12:12:52.618597 config_loader.go:73 Using explicit credential store: memory === RUN TestExternalUrlSignatureVerification/without_externalUrl,_internal_host_causes_mismatch I0505 12:12:52.618692 config_loader.go:73 Using explicit credential store: memory === RUN TestExternalUrlSignatureVerification/without_externalUrl,_matching_host_works I0505 12:12:52.618797 config_loader.go:73 Using explicit credential store: memory --- PASS: TestExternalUrlSignatureVerification (0.00s) --- PASS: TestExternalUrlSignatureVerification/non-standard_port_with_externalUrl (0.00s) --- PASS: TestExternalUrlSignatureVerification/HTTPS_default_port_443_with_externalUrl_(port_stripped_by_SDK_and_parseExternalUrlToHost) (0.00s) --- PASS: TestExternalUrlSignatureVerification/HTTPS_without_explicit_port_with_externalUrl (0.00s) --- PASS: TestExternalUrlSignatureVerification/HTTP_default_port_80_with_externalUrl (0.00s) --- PASS: TestExternalUrlSignatureVerification/without_externalUrl,_internal_host_causes_mismatch (0.00s) --- PASS: TestExternalUrlSignatureVerification/without_externalUrl,_matching_host_works (0.00s) === RUN TestRealSDKSignerWithForwardedHeaders === RUN TestRealSDKSignerWithForwardedHeaders/HTTPS_non-standard_port I0505 12:12:52.618949 config_loader.go:73 Using explicit credential store: memory === RUN TestRealSDKSignerWithForwardedHeaders/HTTPS_standard_port_443_(SDK_strips,_we_must_too) I0505 12:12:52.619051 config_loader.go:73 Using explicit credential store: memory === RUN TestRealSDKSignerWithForwardedHeaders/HTTP_standard_port_80_(SDK_strips,_we_must_too) I0505 12:12:52.619153 config_loader.go:73 Using explicit credential store: memory === RUN TestRealSDKSignerWithForwardedHeaders/HTTP_non-standard_port_8080 I0505 12:12:52.619232 config_loader.go:73 Using explicit credential store: memory === RUN TestRealSDKSignerWithForwardedHeaders/X-Forwarded-Host_with_port_(Traefik_style),_HTTPS_443 I0505 12:12:52.619307 config_loader.go:73 Using explicit credential store: memory === RUN TestRealSDKSignerWithForwardedHeaders/X-Forwarded-Host_with_port_(Traefik_style),_HTTP_80 I0505 12:12:52.619400 config_loader.go:73 Using explicit credential store: memory === RUN TestRealSDKSignerWithForwardedHeaders/no_forwarded_headers,_direct_access I0505 12:12:52.619494 config_loader.go:73 Using explicit credential store: memory === RUN TestRealSDKSignerWithForwardedHeaders/empty_proto_with_port_80_(defaults_to_http,_strip) I0505 12:12:52.619581 config_loader.go:73 Using explicit credential store: memory --- PASS: TestRealSDKSignerWithForwardedHeaders (0.00s) --- PASS: TestRealSDKSignerWithForwardedHeaders/HTTPS_non-standard_port (0.00s) --- PASS: TestRealSDKSignerWithForwardedHeaders/HTTPS_standard_port_443_(SDK_strips,_we_must_too) (0.00s) --- PASS: TestRealSDKSignerWithForwardedHeaders/HTTP_standard_port_80_(SDK_strips,_we_must_too) (0.00s) --- PASS: TestRealSDKSignerWithForwardedHeaders/HTTP_non-standard_port_8080 (0.00s) --- PASS: TestRealSDKSignerWithForwardedHeaders/X-Forwarded-Host_with_port_(Traefik_style),_HTTPS_443 (0.00s) --- PASS: TestRealSDKSignerWithForwardedHeaders/X-Forwarded-Host_with_port_(Traefik_style),_HTTP_80 (0.00s) --- PASS: TestRealSDKSignerWithForwardedHeaders/no_forwarded_headers,_direct_access (0.00s) --- PASS: TestRealSDKSignerWithForwardedHeaders/empty_proto_with_port_80_(defaults_to_http,_strip) (0.00s) === RUN TestValidateV2AuthHeader === RUN TestValidateV2AuthHeader/valid_auth_header_with_space === RUN TestValidateV2AuthHeader/empty_auth_header === RUN TestValidateV2AuthHeader/wrong_algorithm_prefix === RUN TestValidateV2AuthHeader/missing_colon_separator === RUN TestValidateV2AuthHeader/empty_access_key === RUN TestValidateV2AuthHeader/empty_signature --- PASS: TestValidateV2AuthHeader (0.00s) --- PASS: TestValidateV2AuthHeader/valid_auth_header_with_space (0.00s) --- PASS: TestValidateV2AuthHeader/empty_auth_header (0.00s) --- PASS: TestValidateV2AuthHeader/wrong_algorithm_prefix (0.00s) --- PASS: TestValidateV2AuthHeader/missing_colon_separator (0.00s) --- PASS: TestValidateV2AuthHeader/empty_access_key (0.00s) --- PASS: TestValidateV2AuthHeader/empty_signature (0.00s) === RUN TestSignatureV2Format --- PASS: TestSignatureV2Format (0.00s) === RUN TestDoesSignV2Match === RUN TestDoesSignV2Match/valid_GET_request === RUN TestDoesSignV2Match/valid_PUT_request_with_content_headers === RUN TestDoesSignV2Match/request_with_query_parameters === RUN TestDoesSignV2Match/request_with_x-amz_headers === RUN TestDoesSignV2Match/invalid_signature === RUN TestDoesSignV2Match/non-existent_access_key W0505 12:12:52.619804 auth_signature_v2.go:137 InvalidAccessKeyId (V2 signed): attempted key 'NONEXISTENTKEY' not found. Available keys: 1, Auth enabled: false === RUN TestDoesSignV2Match/empty_authorization_header === RUN TestDoesSignV2Match/malformed_auth_-_missing_signature === RUN TestDoesSignV2Match/malformed_auth_-_wrong_prefix === RUN TestDoesSignV2Match/malformed_auth_-_no_space_after_AWS W0505 12:12:52.619843 auth_signature_v2.go:137 InvalidAccessKeyId (V2 signed): attempted key 'KIAIOSFODNN7EXAMPLE' not found. Available keys: 1, Auth enabled: false --- PASS: TestDoesSignV2Match (0.00s) --- PASS: TestDoesSignV2Match/valid_GET_request (0.00s) --- PASS: TestDoesSignV2Match/valid_PUT_request_with_content_headers (0.00s) --- PASS: TestDoesSignV2Match/request_with_query_parameters (0.00s) --- PASS: TestDoesSignV2Match/request_with_x-amz_headers (0.00s) --- PASS: TestDoesSignV2Match/invalid_signature (0.00s) --- PASS: TestDoesSignV2Match/non-existent_access_key (0.00s) --- PASS: TestDoesSignV2Match/empty_authorization_header (0.00s) --- PASS: TestDoesSignV2Match/malformed_auth_-_missing_signature (0.00s) --- PASS: TestDoesSignV2Match/malformed_auth_-_wrong_prefix (0.00s) --- PASS: TestDoesSignV2Match/malformed_auth_-_no_space_after_AWS (0.00s) === RUN TestVerifyV4SignatureWithSTSIdentity === RUN TestVerifyV4SignatureWithSTSIdentity/STS_identity_with_IAM_integration_-_should_authorize_via_IAM === RUN TestVerifyV4SignatureWithSTSIdentity/STS_identity_with_IAM_integration_-_IAM_denies === RUN TestVerifyV4SignatureWithSTSIdentity/STS_identity_without_IAM_integration_-_should_deny === RUN TestVerifyV4SignatureWithSTSIdentity/Traditional_identity_with_Actions_-_should_use_CanDo === RUN TestVerifyV4SignatureWithSTSIdentity/Traditional_identity_with_Actions_-_CanDo_denies === RUN TestVerifyV4SignatureWithSTSIdentity/shouldCheckPermissions_false_-_skip_authorization --- PASS: TestVerifyV4SignatureWithSTSIdentity (0.00s) --- PASS: TestVerifyV4SignatureWithSTSIdentity/STS_identity_with_IAM_integration_-_should_authorize_via_IAM (0.00s) --- PASS: TestVerifyV4SignatureWithSTSIdentity/STS_identity_with_IAM_integration_-_IAM_denies (0.00s) --- PASS: TestVerifyV4SignatureWithSTSIdentity/STS_identity_without_IAM_integration_-_should_deny (0.00s) --- PASS: TestVerifyV4SignatureWithSTSIdentity/Traditional_identity_with_Actions_-_should_use_CanDo (0.00s) --- PASS: TestVerifyV4SignatureWithSTSIdentity/Traditional_identity_with_Actions_-_CanDo_denies (0.00s) --- PASS: TestVerifyV4SignatureWithSTSIdentity/shouldCheckPermissions_false_-_skip_authorization (0.00s) === RUN TestVerifyV4SignatureSTSStreamingUpload --- PASS: TestVerifyV4SignatureSTSStreamingUpload (0.00s) === RUN TestVerifyV4SignatureActionDetermination === RUN TestVerifyV4SignatureActionDetermination/GET === RUN TestVerifyV4SignatureActionDetermination/HEAD === RUN TestVerifyV4SignatureActionDetermination/PUT === RUN TestVerifyV4SignatureActionDetermination/POST === RUN TestVerifyV4SignatureActionDetermination/DELETE --- PASS: TestVerifyV4SignatureActionDetermination (0.00s) --- PASS: TestVerifyV4SignatureActionDetermination/GET (0.00s) --- PASS: TestVerifyV4SignatureActionDetermination/HEAD (0.00s) --- PASS: TestVerifyV4SignatureActionDetermination/PUT (0.00s) --- PASS: TestVerifyV4SignatureActionDetermination/POST (0.00s) --- PASS: TestVerifyV4SignatureActionDetermination/DELETE (0.00s) === RUN TestExtractV4AuthInfoFromHeader_S3Tables === RUN TestExtractV4AuthInfoFromHeader_S3Tables/s3_service_should_not_auto-hash === RUN TestExtractV4AuthInfoFromHeader_S3Tables/s3tables_service_should_auto-hash --- PASS: TestExtractV4AuthInfoFromHeader_S3Tables (0.00s) --- PASS: TestExtractV4AuthInfoFromHeader_S3Tables/s3_service_should_not_auto-hash (0.00s) --- PASS: TestExtractV4AuthInfoFromHeader_S3Tables/s3tables_service_should_auto-hash (0.00s) === RUN TestBuildPathWithForwardedPrefix === RUN TestBuildPathWithForwardedPrefix/empty_prefix_returns_urlPath === RUN TestBuildPathWithForwardedPrefix/prefix_without_trailing_slash === RUN TestBuildPathWithForwardedPrefix/prefix_with_trailing_slash === RUN TestBuildPathWithForwardedPrefix/prefix_without_leading_slash === RUN TestBuildPathWithForwardedPrefix/prefix_without_leading_slash_and_with_trailing_slash === RUN TestBuildPathWithForwardedPrefix/preserve_double_slashes_in_key === RUN TestBuildPathWithForwardedPrefix/preserve_trailing_slash_in_urlPath === RUN TestBuildPathWithForwardedPrefix/preserve_trailing_slash_with_prefix_having_trailing_slash === RUN TestBuildPathWithForwardedPrefix/root_path === RUN TestBuildPathWithForwardedPrefix/complex_key_with_multiple_slashes === RUN TestBuildPathWithForwardedPrefix/urlPath_without_leading_slash === RUN TestBuildPathWithForwardedPrefix/empty_urlPath_with_prefix --- PASS: TestBuildPathWithForwardedPrefix (0.00s) --- PASS: TestBuildPathWithForwardedPrefix/empty_prefix_returns_urlPath (0.00s) --- PASS: TestBuildPathWithForwardedPrefix/prefix_without_trailing_slash (0.00s) --- PASS: TestBuildPathWithForwardedPrefix/prefix_with_trailing_slash (0.00s) --- PASS: TestBuildPathWithForwardedPrefix/prefix_without_leading_slash (0.00s) --- PASS: TestBuildPathWithForwardedPrefix/prefix_without_leading_slash_and_with_trailing_slash (0.00s) --- PASS: TestBuildPathWithForwardedPrefix/preserve_double_slashes_in_key (0.00s) --- PASS: TestBuildPathWithForwardedPrefix/preserve_trailing_slash_in_urlPath (0.00s) --- PASS: TestBuildPathWithForwardedPrefix/preserve_trailing_slash_with_prefix_having_trailing_slash (0.00s) --- PASS: TestBuildPathWithForwardedPrefix/root_path (0.00s) --- PASS: TestBuildPathWithForwardedPrefix/complex_key_with_multiple_slashes (0.00s) --- PASS: TestBuildPathWithForwardedPrefix/urlPath_without_leading_slash (0.00s) --- PASS: TestBuildPathWithForwardedPrefix/empty_urlPath_with_prefix (0.00s) === RUN TestExtractHostHeader === RUN TestExtractHostHeader/basic_host_without_forwarding === RUN TestExtractHostHeader/host_with_port_without_forwarding === RUN TestExtractHostHeader/X-Forwarded-Host_without_port === RUN TestExtractHostHeader/X-Forwarded-Host_with_X-Forwarded-Port_(HTTP_non-standard) === RUN TestExtractHostHeader/X-Forwarded-Host_with_X-Forwarded-Port_(HTTPS_non-standard) === RUN TestExtractHostHeader/X-Forwarded-Host_with_X-Forwarded-Port_(HTTP_standard_port_80) === RUN TestExtractHostHeader/X-Forwarded-Host_with_X-Forwarded-Port_(HTTPS_standard_port_443) === RUN TestExtractHostHeader/X-Forwarded-Host_with_port_already_included_(should_not_add_port_again) === RUN TestExtractHostHeader/X-Forwarded-Host_with_standard_port_already_included_(HTTPS_443) === RUN TestExtractHostHeader/X-Forwarded-Host_with_port,_no_X-Forwarded-Port_header === RUN TestExtractHostHeader/IPv6_address_with_brackets_and_port_in_X-Forwarded-Host === RUN TestExtractHostHeader/IPv6_address_without_brackets,_should_add_brackets_with_port === RUN TestExtractHostHeader/IPv6_address_without_brackets_and_standard_port,_should_strip_default_port === RUN TestExtractHostHeader/IPv6_address_without_brackets_and_standard_HTTPS_port,_should_strip_default_port === RUN TestExtractHostHeader/IPv6_address_with_brackets_but_no_port,_should_add_port === RUN TestExtractHostHeader/IPv6_full_address_with_brackets_and_default_port_(should_strip_default_port) === RUN TestExtractHostHeader/IPv4-mapped_IPv6_address_without_brackets,_should_add_brackets_with_port === RUN TestExtractHostHeader/Simple_port_442 === RUN TestExtractHostHeader/Port_442_with_X-Forwarded-Host === RUN TestExtractHostHeader/Port_442_with_X-Forwarded-Port === RUN TestExtractHostHeader/HTTPS_with_port_442_(should_NOT_strip) === RUN TestExtractHostHeader/X-Forwarded-Host_with_multiple_hosts_(including_port) === RUN TestExtractHostHeader/IPv6_with_port === RUN TestExtractHostHeader/X-Forwarded-Host_with_port_442,_but_X-Forwarded-Port_is_80_(should_PREFER_442) === RUN TestExtractHostHeader/externalHost_overrides_everything === RUN TestExtractHostHeader/externalHost_overrides_X-Forwarded-Host === RUN TestExtractHostHeader/externalHost_with_IPv6 === RUN TestExtractHostHeader/User_reported_case:_X-Forwarded-Port_misreports_443_but_Host_has_30007 === RUN TestExtractHostHeader/X-Forwarded-Host_already_contains_correct_port,_ignore_misaligned_X-Forwarded-Port === RUN TestExtractHostHeader/X-Forwarded-Host_has_no_port,_match_r.Host_hostname_and_take_its_port --- PASS: TestExtractHostHeader (0.00s) --- PASS: TestExtractHostHeader/basic_host_without_forwarding (0.00s) --- PASS: TestExtractHostHeader/host_with_port_without_forwarding (0.00s) --- PASS: TestExtractHostHeader/X-Forwarded-Host_without_port (0.00s) --- PASS: TestExtractHostHeader/X-Forwarded-Host_with_X-Forwarded-Port_(HTTP_non-standard) (0.00s) --- PASS: TestExtractHostHeader/X-Forwarded-Host_with_X-Forwarded-Port_(HTTPS_non-standard) (0.00s) --- PASS: TestExtractHostHeader/X-Forwarded-Host_with_X-Forwarded-Port_(HTTP_standard_port_80) (0.00s) --- PASS: TestExtractHostHeader/X-Forwarded-Host_with_X-Forwarded-Port_(HTTPS_standard_port_443) (0.00s) --- PASS: TestExtractHostHeader/X-Forwarded-Host_with_port_already_included_(should_not_add_port_again) (0.00s) --- PASS: TestExtractHostHeader/X-Forwarded-Host_with_standard_port_already_included_(HTTPS_443) (0.00s) --- PASS: TestExtractHostHeader/X-Forwarded-Host_with_port,_no_X-Forwarded-Port_header (0.00s) --- PASS: TestExtractHostHeader/IPv6_address_with_brackets_and_port_in_X-Forwarded-Host (0.00s) --- PASS: TestExtractHostHeader/IPv6_address_without_brackets,_should_add_brackets_with_port (0.00s) --- PASS: TestExtractHostHeader/IPv6_address_without_brackets_and_standard_port,_should_strip_default_port (0.00s) --- PASS: TestExtractHostHeader/IPv6_address_without_brackets_and_standard_HTTPS_port,_should_strip_default_port (0.00s) --- PASS: TestExtractHostHeader/IPv6_address_with_brackets_but_no_port,_should_add_port (0.00s) --- PASS: TestExtractHostHeader/IPv6_full_address_with_brackets_and_default_port_(should_strip_default_port) (0.00s) --- PASS: TestExtractHostHeader/IPv4-mapped_IPv6_address_without_brackets,_should_add_brackets_with_port (0.00s) --- PASS: TestExtractHostHeader/Simple_port_442 (0.00s) --- PASS: TestExtractHostHeader/Port_442_with_X-Forwarded-Host (0.00s) --- PASS: TestExtractHostHeader/Port_442_with_X-Forwarded-Port (0.00s) --- PASS: TestExtractHostHeader/HTTPS_with_port_442_(should_NOT_strip) (0.00s) --- PASS: TestExtractHostHeader/X-Forwarded-Host_with_multiple_hosts_(including_port) (0.00s) --- PASS: TestExtractHostHeader/IPv6_with_port (0.00s) --- PASS: TestExtractHostHeader/X-Forwarded-Host_with_port_442,_but_X-Forwarded-Port_is_80_(should_PREFER_442) (0.00s) --- PASS: TestExtractHostHeader/externalHost_overrides_everything (0.00s) --- PASS: TestExtractHostHeader/externalHost_overrides_X-Forwarded-Host (0.00s) --- PASS: TestExtractHostHeader/externalHost_with_IPv6 (0.00s) --- PASS: TestExtractHostHeader/User_reported_case:_X-Forwarded-Port_misreports_443_but_Host_has_30007 (0.00s) --- PASS: TestExtractHostHeader/X-Forwarded-Host_already_contains_correct_port,_ignore_misaligned_X-Forwarded-Port (0.00s) --- PASS: TestExtractHostHeader/X-Forwarded-Host_has_no_port,_match_r.Host_hostname_and_take_its_port (0.00s) === RUN TestExtractSignedHeadersCase === RUN TestExtractSignedHeadersCase/lowercase_host === RUN TestExtractSignedHeadersCase/uppercase_Host --- PASS: TestExtractSignedHeadersCase (0.00s) --- PASS: TestExtractSignedHeadersCase/lowercase_host (0.00s) --- PASS: TestExtractSignedHeadersCase/uppercase_Host (0.00s) === RUN TestVerifySignedHeadersCoverage_Unit === RUN TestVerifySignedHeadersCoverage_Unit/no_x-amz_headers_is_fine === RUN TestVerifySignedHeadersCoverage_Unit/signed_x-amz_header_is_accepted === RUN TestVerifySignedHeadersCoverage_Unit/unsigned_x-amz-tagging_is_rejected_(header-based) === RUN TestVerifySignedHeadersCoverage_Unit/unsigned_x-amz-meta-*_is_rejected === RUN TestVerifySignedHeadersCoverage_Unit/unsigned_x-amz-acl_is_rejected === RUN TestVerifySignedHeadersCoverage_Unit/unsigned_x-amz-storage-class_is_rejected === RUN TestVerifySignedHeadersCoverage_Unit/unsigned_x-amz-server-side-encryption_is_rejected === RUN TestVerifySignedHeadersCoverage_Unit/unsigned_x-amz-object-lock-retain-until-date_is_rejected === RUN TestVerifySignedHeadersCoverage_Unit/unsigned_x-amz-security-token_is_rejected_(even_presigned) === RUN TestVerifySignedHeadersCoverage_Unit/x-amz-content-sha256_is_always_exempt_(presigned) === RUN TestVerifySignedHeadersCoverage_Unit/x-amz-content-sha256_is_always_exempt_(header-based) === RUN TestVerifySignedHeadersCoverage_Unit/presigned_exempts_sigv4_query_params_echoed_as_headers === RUN TestVerifySignedHeadersCoverage_Unit/header-based_does_NOT_exempt_x-amz-date_when_unsigned === RUN TestVerifySignedHeadersCoverage_Unit/signed_headers_match_is_case-insensitive --- PASS: TestVerifySignedHeadersCoverage_Unit (0.00s) --- PASS: TestVerifySignedHeadersCoverage_Unit/no_x-amz_headers_is_fine (0.00s) --- PASS: TestVerifySignedHeadersCoverage_Unit/signed_x-amz_header_is_accepted (0.00s) --- PASS: TestVerifySignedHeadersCoverage_Unit/unsigned_x-amz-tagging_is_rejected_(header-based) (0.00s) --- PASS: TestVerifySignedHeadersCoverage_Unit/unsigned_x-amz-meta-*_is_rejected (0.00s) --- PASS: TestVerifySignedHeadersCoverage_Unit/unsigned_x-amz-acl_is_rejected (0.00s) --- PASS: TestVerifySignedHeadersCoverage_Unit/unsigned_x-amz-storage-class_is_rejected (0.00s) --- PASS: TestVerifySignedHeadersCoverage_Unit/unsigned_x-amz-server-side-encryption_is_rejected (0.00s) --- PASS: TestVerifySignedHeadersCoverage_Unit/unsigned_x-amz-object-lock-retain-until-date_is_rejected (0.00s) --- PASS: TestVerifySignedHeadersCoverage_Unit/unsigned_x-amz-security-token_is_rejected_(even_presigned) (0.00s) --- PASS: TestVerifySignedHeadersCoverage_Unit/x-amz-content-sha256_is_always_exempt_(presigned) (0.00s) --- PASS: TestVerifySignedHeadersCoverage_Unit/x-amz-content-sha256_is_always_exempt_(header-based) (0.00s) --- PASS: TestVerifySignedHeadersCoverage_Unit/presigned_exempts_sigv4_query_params_echoed_as_headers (0.00s) --- PASS: TestVerifySignedHeadersCoverage_Unit/header-based_does_NOT_exempt_x-amz-date_when_unsigned (0.00s) --- PASS: TestVerifySignedHeadersCoverage_Unit/signed_headers_match_is_case-insensitive (0.00s) === RUN TestPresignedPutRejectsUnsignedTagging --- PASS: TestPresignedPutRejectsUnsignedTagging (0.00s) === RUN TestPresignedPutAcceptsSignedTagging --- PASS: TestPresignedPutAcceptsSignedTagging (0.00s) === RUN TestPresignedPutRejectsUnsignedMetadataHeaders === RUN TestPresignedPutRejectsUnsignedMetadataHeaders/acl === RUN TestPresignedPutRejectsUnsignedMetadataHeaders/user-metadata === RUN TestPresignedPutRejectsUnsignedMetadataHeaders/storage-class === RUN TestPresignedPutRejectsUnsignedMetadataHeaders/server-side-encryption === RUN TestPresignedPutRejectsUnsignedMetadataHeaders/sse-kms-key-id === RUN TestPresignedPutRejectsUnsignedMetadataHeaders/object-lock-mode === RUN TestPresignedPutRejectsUnsignedMetadataHeaders/object-lock-retain-until === RUN TestPresignedPutRejectsUnsignedMetadataHeaders/website-redirect-location === RUN TestPresignedPutRejectsUnsignedMetadataHeaders/grant-full-control --- PASS: TestPresignedPutRejectsUnsignedMetadataHeaders (0.00s) --- PASS: TestPresignedPutRejectsUnsignedMetadataHeaders/acl (0.00s) --- PASS: TestPresignedPutRejectsUnsignedMetadataHeaders/user-metadata (0.00s) --- PASS: TestPresignedPutRejectsUnsignedMetadataHeaders/storage-class (0.00s) --- PASS: TestPresignedPutRejectsUnsignedMetadataHeaders/server-side-encryption (0.00s) --- PASS: TestPresignedPutRejectsUnsignedMetadataHeaders/sse-kms-key-id (0.00s) --- PASS: TestPresignedPutRejectsUnsignedMetadataHeaders/object-lock-mode (0.00s) --- PASS: TestPresignedPutRejectsUnsignedMetadataHeaders/object-lock-retain-until (0.00s) --- PASS: TestPresignedPutRejectsUnsignedMetadataHeaders/website-redirect-location (0.00s) --- PASS: TestPresignedPutRejectsUnsignedMetadataHeaders/grant-full-control (0.00s) === RUN TestSTSIdentityPolicyNamesPopulation I0505 12:12:52.621300 config_loader.go:73 Using explicit credential store: memory auth_sts_identity_test.go:94: ✓ STS identity will use IAM authorization path (correct behavior) --- PASS: TestSTSIdentityPolicyNamesPopulation (0.00s) === RUN TestSTSIdentityAuthorizationFlow auth_sts_identity_test.go:154: ✓ Verified: STS identity correctly bypasses legacy CanDo() to use IAM authorization path --- PASS: TestSTSIdentityAuthorizationFlow (0.00s) === RUN TestSTSIdentityWithoutPolicyNames auth_sts_identity_test.go:174: Bug scenario: Actions=0, PolicyNames=0 → Would be denied auth_sts_identity_test.go:176: Fixed scenario: Actions=0, PolicyNames=1 → Can use IAM authorization --- PASS: TestSTSIdentityWithoutPolicyNames (0.00s) === RUN TestCanDoPathConstruction === RUN TestCanDoPathConstruction/Wildcard_match_for_write auth_sts_identity_test.go:249: Testing path: test-bucket/path/to/object.txt === RUN TestCanDoPathConstruction/Wildcard_match_for_read_in_docs_path auth_sts_identity_test.go:249: Testing path: test-bucket/docs/file.txt === RUN TestCanDoPathConstruction/No_match_-_wrong_action auth_sts_identity_test.go:249: Testing path: test-bucket/file.txt === RUN TestCanDoPathConstruction/No_match_-_read_outside_docs_path auth_sts_identity_test.go:249: Testing path: test-bucket/other/file.txt === RUN TestCanDoPathConstruction/ObjectKey_with_leading_slash auth_sts_identity_test.go:249: Testing path: test-bucket/docs/file.txt --- PASS: TestCanDoPathConstruction (0.00s) --- PASS: TestCanDoPathConstruction/Wildcard_match_for_write (0.00s) --- PASS: TestCanDoPathConstruction/Wildcard_match_for_read_in_docs_path (0.00s) --- PASS: TestCanDoPathConstruction/No_match_-_wrong_action (0.00s) --- PASS: TestCanDoPathConstruction/No_match_-_read_outside_docs_path (0.00s) --- PASS: TestCanDoPathConstruction/ObjectKey_with_leading_slash (0.00s) === RUN TestValidateSTSSessionTokenIntegration I0505 12:12:52.621680 config_loader.go:73 Using explicit credential store: memory auth_sts_identity_test.go:304: ✓ Integration test passed: STS identity properly configured for IAM authorization --- PASS: TestValidateSTSSessionTokenIntegration (0.00s) === RUN TestSTSIdentityClaimsPopulation I0505 12:12:52.621773 config_loader.go:73 Using explicit credential store: memory auth_sts_identity_test.go:369: ✓ Claims properly populated from RequestContext for policy variable substitution --- PASS: TestSTSIdentityClaimsPopulation (0.00s) === RUN TestAuthorizeWithIAMSessionTokenExtraction === RUN TestAuthorizeWithIAMSessionTokenExtraction/Extracts_X-SeaweedFS-Session-Token_from_JWT_auth === RUN TestAuthorizeWithIAMSessionTokenExtraction/Extracts_X-Amz-Security-Token_from_V4_STS_auth_header === RUN TestAuthorizeWithIAMSessionTokenExtraction/Extracts_X-Amz-Security-Token_from_query_parameter_(presigned_URL) === RUN TestAuthorizeWithIAMSessionTokenExtraction/JWT_token_takes_precedence_over_X-Amz-Security-Token --- PASS: TestAuthorizeWithIAMSessionTokenExtraction (0.00s) --- PASS: TestAuthorizeWithIAMSessionTokenExtraction/Extracts_X-SeaweedFS-Session-Token_from_JWT_auth (0.00s) --- PASS: TestAuthorizeWithIAMSessionTokenExtraction/Extracts_X-Amz-Security-Token_from_V4_STS_auth_header (0.00s) --- PASS: TestAuthorizeWithIAMSessionTokenExtraction/Extracts_X-Amz-Security-Token_from_query_parameter_(presigned_URL) (0.00s) --- PASS: TestAuthorizeWithIAMSessionTokenExtraction/JWT_token_takes_precedence_over_X-Amz-Security-Token (0.00s) === RUN TestSTSSessionTokenIntoCredentials --- PASS: TestSTSSessionTokenIntoCredentials (0.00s) === RUN TestActionConstantsForV4Auth --- PASS: TestActionConstantsForV4Auth (0.00s) === RUN TestIsRequestPresignedSignatureV4 --- PASS: TestIsRequestPresignedSignatureV4 (0.00s) === RUN TestIsReqAuthenticated --- PASS: TestIsReqAuthenticated (0.00s) === RUN TestCheckaAnonymousRequestAuthType --- PASS: TestCheckaAnonymousRequestAuthType (0.00s) === RUN TestAnonymousListBucketsWithPrefixAction --- PASS: TestAnonymousListBucketsWithPrefixAction (0.00s) === RUN TestCheckAdminRequestAuthType --- PASS: TestCheckAdminRequestAuthType (0.00s) === RUN TestSignatureV4WithForwardedPrefix === RUN TestSignatureV4WithForwardedPrefix/prefix_without_trailing_slash === RUN TestSignatureV4WithForwardedPrefix/prefix_with_trailing_slash --- PASS: TestSignatureV4WithForwardedPrefix (0.00s) --- PASS: TestSignatureV4WithForwardedPrefix/prefix_without_trailing_slash (0.00s) --- PASS: TestSignatureV4WithForwardedPrefix/prefix_with_trailing_slash (0.00s) === RUN TestSignatureV4WithForwardedPrefixTrailingSlash === RUN TestSignatureV4WithForwardedPrefixTrailingSlash/bucket_listObjects_with_trailing_slash === RUN TestSignatureV4WithForwardedPrefixTrailingSlash/prefix_path_with_trailing_slash === RUN TestSignatureV4WithForwardedPrefixTrailingSlash/root_bucket_with_trailing_slash === RUN TestSignatureV4WithForwardedPrefixTrailingSlash/nested_folder_with_trailing_slash --- PASS: TestSignatureV4WithForwardedPrefixTrailingSlash (0.00s) --- PASS: TestSignatureV4WithForwardedPrefixTrailingSlash/bucket_listObjects_with_trailing_slash (0.00s) --- PASS: TestSignatureV4WithForwardedPrefixTrailingSlash/prefix_path_with_trailing_slash (0.00s) --- PASS: TestSignatureV4WithForwardedPrefixTrailingSlash/root_bucket_with_trailing_slash (0.00s) --- PASS: TestSignatureV4WithForwardedPrefixTrailingSlash/nested_folder_with_trailing_slash (0.00s) === RUN TestSignatureV4WithoutProxy === RUN TestSignatureV4WithoutProxy/HTTP_with_non-standard_port === RUN TestSignatureV4WithoutProxy/HTTPS_with_non-standard_port === RUN TestSignatureV4WithoutProxy/HTTP_with_standard_port === RUN TestSignatureV4WithoutProxy/HTTPS_with_standard_port === RUN TestSignatureV4WithoutProxy/HTTP_without_port === RUN TestSignatureV4WithoutProxy/HTTPS_without_port === RUN TestSignatureV4WithoutProxy/IPv6_HTTP_with_non-standard_port === RUN TestSignatureV4WithoutProxy/IPv6_HTTPS_with_non-standard_port === RUN TestSignatureV4WithoutProxy/IPv6_HTTP_with_standard_port === RUN TestSignatureV4WithoutProxy/IPv6_HTTPS_with_standard_port === RUN TestSignatureV4WithoutProxy/IPv6_HTTP_without_port === RUN TestSignatureV4WithoutProxy/IPv6_HTTPS_without_port --- PASS: TestSignatureV4WithoutProxy (0.00s) --- PASS: TestSignatureV4WithoutProxy/HTTP_with_non-standard_port (0.00s) --- PASS: TestSignatureV4WithoutProxy/HTTPS_with_non-standard_port (0.00s) --- PASS: TestSignatureV4WithoutProxy/HTTP_with_standard_port (0.00s) --- PASS: TestSignatureV4WithoutProxy/HTTPS_with_standard_port (0.00s) --- PASS: TestSignatureV4WithoutProxy/HTTP_without_port (0.00s) --- PASS: TestSignatureV4WithoutProxy/HTTPS_without_port (0.00s) --- PASS: TestSignatureV4WithoutProxy/IPv6_HTTP_with_non-standard_port (0.00s) --- PASS: TestSignatureV4WithoutProxy/IPv6_HTTPS_with_non-standard_port (0.00s) --- PASS: TestSignatureV4WithoutProxy/IPv6_HTTP_with_standard_port (0.00s) --- PASS: TestSignatureV4WithoutProxy/IPv6_HTTPS_with_standard_port (0.00s) --- PASS: TestSignatureV4WithoutProxy/IPv6_HTTP_without_port (0.00s) --- PASS: TestSignatureV4WithoutProxy/IPv6_HTTPS_without_port (0.00s) === RUN TestSignatureV4WithForwardedPort === RUN TestSignatureV4WithForwardedPort/HTTP_with_non-standard_port === RUN TestSignatureV4WithForwardedPort/HTTPS_with_non-standard_port === RUN TestSignatureV4WithForwardedPort/HTTP_with_standard_port_(80) === RUN TestSignatureV4WithForwardedPort/HTTPS_with_standard_port_(443) === RUN TestSignatureV4WithForwardedPort/empty_proto_with_non-standard_port === RUN TestSignatureV4WithForwardedPort/empty_proto_with_port_80_(scheme_defaults_to_https_from_URL,_so_80_is_NOT_default) === RUN TestSignatureV4WithForwardedPort/X-Forwarded-Host_with_port_already_included_(Traefik/HAProxy_style) === RUN TestSignatureV4WithForwardedPort/X-Forwarded-Host_with_port,_no_X-Forwarded-Port_header === RUN TestSignatureV4WithForwardedPort/X-Forwarded-Host_with_standard_https_port_already_included_(Traefik/HAProxy_style) === RUN TestSignatureV4WithForwardedPort/X-Forwarded-Host_with_standard_http_port_already_included_(Traefik/HAProxy_style) === RUN TestSignatureV4WithForwardedPort/IPv6_X-Forwarded-Host_with_standard_https_port_already_included_(Traefik/HAProxy_style) === RUN TestSignatureV4WithForwardedPort/IPv6_X-Forwarded-Host_with_standard_http_port_already_included_(Traefik/HAProxy_style) === RUN TestSignatureV4WithForwardedPort/IPv6_with_port_in_brackets === RUN TestSignatureV4WithForwardedPort/IPv6_without_port_-_should_add_port_with_brackets === RUN TestSignatureV4WithForwardedPort/IPv6_in_brackets_without_port_-_should_add_port === RUN TestSignatureV4WithForwardedPort/IPv4-mapped_IPv6_without_port_-_should_add_port_with_brackets --- PASS: TestSignatureV4WithForwardedPort (0.00s) --- PASS: TestSignatureV4WithForwardedPort/HTTP_with_non-standard_port (0.00s) --- PASS: TestSignatureV4WithForwardedPort/HTTPS_with_non-standard_port (0.00s) --- PASS: TestSignatureV4WithForwardedPort/HTTP_with_standard_port_(80) (0.00s) --- PASS: TestSignatureV4WithForwardedPort/HTTPS_with_standard_port_(443) (0.00s) --- PASS: TestSignatureV4WithForwardedPort/empty_proto_with_non-standard_port (0.00s) --- PASS: TestSignatureV4WithForwardedPort/empty_proto_with_port_80_(scheme_defaults_to_https_from_URL,_so_80_is_NOT_default) (0.00s) --- PASS: TestSignatureV4WithForwardedPort/X-Forwarded-Host_with_port_already_included_(Traefik/HAProxy_style) (0.00s) --- PASS: TestSignatureV4WithForwardedPort/X-Forwarded-Host_with_port,_no_X-Forwarded-Port_header (0.00s) --- PASS: TestSignatureV4WithForwardedPort/X-Forwarded-Host_with_standard_https_port_already_included_(Traefik/HAProxy_style) (0.00s) --- PASS: TestSignatureV4WithForwardedPort/X-Forwarded-Host_with_standard_http_port_already_included_(Traefik/HAProxy_style) (0.00s) --- PASS: TestSignatureV4WithForwardedPort/IPv6_X-Forwarded-Host_with_standard_https_port_already_included_(Traefik/HAProxy_style) (0.00s) --- PASS: TestSignatureV4WithForwardedPort/IPv6_X-Forwarded-Host_with_standard_http_port_already_included_(Traefik/HAProxy_style) (0.00s) --- PASS: TestSignatureV4WithForwardedPort/IPv6_with_port_in_brackets (0.00s) --- PASS: TestSignatureV4WithForwardedPort/IPv6_without_port_-_should_add_port_with_brackets (0.00s) --- PASS: TestSignatureV4WithForwardedPort/IPv6_in_brackets_without_port_-_should_add_port (0.00s) --- PASS: TestSignatureV4WithForwardedPort/IPv4-mapped_IPv6_without_port_-_should_add_port_with_brackets (0.00s) === RUN TestPresignedSignatureV4Basic --- PASS: TestPresignedSignatureV4Basic (0.00s) === RUN TestPresignedSignatureV4MissingExpires --- PASS: TestPresignedSignatureV4MissingExpires (0.00s) === RUN TestPresignedSignatureV4WithForwardedPrefix === RUN TestPresignedSignatureV4WithForwardedPrefix/prefix_without_trailing_slash === RUN TestPresignedSignatureV4WithForwardedPrefix/prefix_with_trailing_slash --- PASS: TestPresignedSignatureV4WithForwardedPrefix (0.00s) --- PASS: TestPresignedSignatureV4WithForwardedPrefix/prefix_without_trailing_slash (0.00s) --- PASS: TestPresignedSignatureV4WithForwardedPrefix/prefix_with_trailing_slash (0.00s) === RUN TestPresignedSignatureV4WithForwardedPrefixTrailingSlash === RUN TestPresignedSignatureV4WithForwardedPrefixTrailingSlash/bucket_listObjects_with_trailing_slash === RUN TestPresignedSignatureV4WithForwardedPrefixTrailingSlash/prefix_path_with_trailing_slash === RUN TestPresignedSignatureV4WithForwardedPrefixTrailingSlash/api_path_with_trailing_slash --- PASS: TestPresignedSignatureV4WithForwardedPrefixTrailingSlash (0.00s) --- PASS: TestPresignedSignatureV4WithForwardedPrefixTrailingSlash/bucket_listObjects_with_trailing_slash (0.00s) --- PASS: TestPresignedSignatureV4WithForwardedPrefixTrailingSlash/prefix_path_with_trailing_slash (0.00s) --- PASS: TestPresignedSignatureV4WithForwardedPrefixTrailingSlash/api_path_with_trailing_slash (0.00s) === RUN TestGetStringToSignPUT --- PASS: TestGetStringToSignPUT (0.00s) === RUN TestGetStringToSignGETEmptyStringHash --- PASS: TestGetStringToSignGETEmptyStringHash (0.00s) === RUN TestIAMPayloadHashComputation --- PASS: TestIAMPayloadHashComputation (0.00s) === RUN TestS3PayloadHashNoRegression --- PASS: TestS3PayloadHashNoRegression (0.00s) === RUN TestIAMEmptyBodyPayloadHash --- PASS: TestIAMEmptyBodyPayloadHash (0.00s) === RUN TestSTSPayloadHashComputation --- PASS: TestSTSPayloadHashComputation (0.00s) === RUN TestGitHubIssue7080Scenario --- PASS: TestGitHubIssue7080Scenario (0.00s) === RUN TestIAMSignatureServiceMatching --- PASS: TestIAMSignatureServiceMatching (0.00s) === RUN TestStreamingSignatureServiceField --- PASS: TestStreamingSignatureServiceField (0.00s) === RUN TestIAMLargeBodySecurityLimit --- PASS: TestIAMLargeBodySecurityLimit (0.02s) === RUN TestStreamHashRequestBody === RUN TestStreamHashRequestBody/empty_body === RUN TestStreamHashRequestBody/small_payload === RUN TestStreamHashRequestBody/medium_payload === RUN TestStreamHashRequestBody/large_payload_within_limit --- PASS: TestStreamHashRequestBody (0.00s) --- PASS: TestStreamHashRequestBody/empty_body (0.00s) --- PASS: TestStreamHashRequestBody/small_payload (0.00s) --- PASS: TestStreamHashRequestBody/medium_payload (0.00s) --- PASS: TestStreamHashRequestBody/large_payload_within_limit (0.00s) === RUN TestStreamingVsNonStreamingConsistency === RUN TestStreamingVsNonStreamingConsistency/payload_0 === RUN TestStreamingVsNonStreamingConsistency/payload_1 === RUN TestStreamingVsNonStreamingConsistency/payload_2 === RUN TestStreamingVsNonStreamingConsistency/payload_3 === RUN TestStreamingVsNonStreamingConsistency/payload_4 === RUN TestStreamingVsNonStreamingConsistency/payload_5 --- PASS: TestStreamingVsNonStreamingConsistency (0.00s) --- PASS: TestStreamingVsNonStreamingConsistency/payload_0 (0.00s) --- PASS: TestStreamingVsNonStreamingConsistency/payload_1 (0.00s) --- PASS: TestStreamingVsNonStreamingConsistency/payload_2 (0.00s) --- PASS: TestStreamingVsNonStreamingConsistency/payload_3 (0.00s) --- PASS: TestStreamingVsNonStreamingConsistency/payload_4 (0.00s) --- PASS: TestStreamingVsNonStreamingConsistency/payload_5 (0.00s) === RUN TestStreamingWithSizeLimit --- PASS: TestStreamingWithSizeLimit (0.02s) === RUN TestBuildBucketMetadata W0505 12:12:52.671100 bucket_metadata.go:126 Invalid ownership: , bucket: ownershipEmptyStr W0505 12:12:52.671113 bucket_metadata.go:137 owner[id=xxxxx] is invalid, bucket: acpEmptyObject --- PASS: TestBuildBucketMetadata (0.00s) === RUN TestGetBucketMetadata --- PASS: TestGetBucketMetadata (1.00s) === RUN TestCollectCollectionInfoFromTopologyEC --- PASS: TestCollectCollectionInfoFromTopologyEC (0.00s) === RUN TestCollectCollectionInfoFromTopologyMixed --- PASS: TestCollectCollectionInfoFromTopologyMixed (0.00s) === RUN TestCollectCollectionInfoFromTopologyECFileCountMaxDedupe --- PASS: TestCollectCollectionInfoFromTopologyECFileCountMaxDedupe (0.00s) === RUN TestChunkedEncodingMixedFormat --- PASS: TestChunkedEncodingMixedFormat (0.00s) === RUN TestNewSignV4ChunkedReaderStreamingUnsignedPayloadTrailer --- PASS: TestNewSignV4ChunkedReaderStreamingUnsignedPayloadTrailer (0.00s) === RUN TestSignedStreamingUpload --- PASS: TestSignedStreamingUpload (0.00s) === RUN TestSignedStreamingUploadWithTrailer --- PASS: TestSignedStreamingUploadWithTrailer (0.00s) === RUN TestSignedStreamingUploadWithTrailerInvalidSignature --- PASS: TestSignedStreamingUploadWithTrailerInvalidSignature (0.00s) === RUN TestSignedStreamingUploadInvalidSignature --- PASS: TestSignedStreamingUploadInvalidSignature (0.00s) === RUN TestCopySourceWithExclamationMark === RUN TestCopySourceWithExclamationMark/encoded_exclamation_mark_-_different_dest === RUN TestCopySourceWithExclamationMark/unencoded_exclamation_mark_-_different_dest === RUN TestCopySourceWithExclamationMark/encoded_exclamation_mark_-_same_dest === RUN TestCopySourceWithExclamationMark/encoded_path_with_versionId === RUN TestCopySourceWithExclamationMark/unencoded_path_with_versionId === RUN TestCopySourceWithExclamationMark/plus_sign_in_key_with_versionId --- PASS: TestCopySourceWithExclamationMark (0.00s) --- PASS: TestCopySourceWithExclamationMark/encoded_exclamation_mark_-_different_dest (0.00s) --- PASS: TestCopySourceWithExclamationMark/unencoded_exclamation_mark_-_different_dest (0.00s) --- PASS: TestCopySourceWithExclamationMark/encoded_exclamation_mark_-_same_dest (0.00s) --- PASS: TestCopySourceWithExclamationMark/encoded_path_with_versionId (0.00s) --- PASS: TestCopySourceWithExclamationMark/unencoded_path_with_versionId (0.00s) --- PASS: TestCopySourceWithExclamationMark/plus_sign_in_key_with_versionId (0.00s) === RUN TestCopySourceDecodingPlusSign --- PASS: TestCopySourceDecodingPlusSign (0.00s) === RUN TestCopySourceRoutingWithSpecialChars === RUN TestCopySourceRoutingWithSpecialChars/different_keys,_source_has_encoded_! === RUN TestCopySourceRoutingWithSpecialChars/same_key_with_!,_source_encoded,_dest_unencoded === RUN TestCopySourceRoutingWithSpecialChars/same_key_with_!,_both_percent-encoded_differently === RUN TestCopySourceRoutingWithSpecialChars/key_with_+_sign,_source_has_literal_+ === RUN TestCopySourceRoutingWithSpecialChars/key_with_+_sign,_source_has_%2B === RUN TestCopySourceRoutingWithSpecialChars/lowercase_%2f_in_copy_source --- PASS: TestCopySourceRoutingWithSpecialChars (0.00s) --- PASS: TestCopySourceRoutingWithSpecialChars/different_keys,_source_has_encoded_! (0.00s) --- PASS: TestCopySourceRoutingWithSpecialChars/same_key_with_!,_source_encoded,_dest_unencoded (0.00s) --- PASS: TestCopySourceRoutingWithSpecialChars/same_key_with_!,_both_percent-encoded_differently (0.00s) --- PASS: TestCopySourceRoutingWithSpecialChars/key_with_+_sign,_source_has_literal_+ (0.00s) --- PASS: TestCopySourceRoutingWithSpecialChars/key_with_+_sign,_source_has_%2B (0.00s) --- PASS: TestCopySourceRoutingWithSpecialChars/lowercase_%2f_in_copy_source (0.00s) === RUN TestCompletedMultipartChunkBackfillsSSES3MetadataFromUploadEntry --- PASS: TestCompletedMultipartChunkBackfillsSSES3MetadataFromUploadEntry (0.00s) === RUN TestCompletedMultipartChunkPreservesExistingSSES3Metadata --- PASS: TestCompletedMultipartChunkPreservesExistingSSES3Metadata (0.00s) === RUN TestApplyMultipartSSES3HeadersFromUploadEntry === RUN TestApplyMultipartSSES3HeadersFromUploadEntry/backfills_missing_canonical_attributes === RUN TestApplyMultipartSSES3HeadersFromUploadEntry/does_not_clobber_existing_canonical_attributes === RUN TestApplyMultipartSSES3HeadersFromUploadEntry/nil_info_is_a_no-op --- PASS: TestApplyMultipartSSES3HeadersFromUploadEntry (0.00s) --- PASS: TestApplyMultipartSSES3HeadersFromUploadEntry/backfills_missing_canonical_attributes (0.00s) --- PASS: TestApplyMultipartSSES3HeadersFromUploadEntry/does_not_clobber_existing_canonical_attributes (0.00s) --- PASS: TestApplyMultipartSSES3HeadersFromUploadEntry/nil_info_is_a_no-op (0.00s) === RUN TestCompletedMultipartChunkBackfilledIVDecryptsActualCiphertext === RUN TestCompletedMultipartChunkBackfilledIVDecryptsActualCiphertext/part1 === RUN TestCompletedMultipartChunkBackfilledIVDecryptsActualCiphertext/part2 --- PASS: TestCompletedMultipartChunkBackfilledIVDecryptsActualCiphertext (0.08s) --- PASS: TestCompletedMultipartChunkBackfilledIVDecryptsActualCiphertext/part1 (0.02s) --- PASS: TestCompletedMultipartChunkBackfilledIVDecryptsActualCiphertext/part2 (0.01s) === RUN TestCompletedMultipartChunkRejectsPartNumberMultiplierFormula --- PASS: TestCompletedMultipartChunkRejectsPartNumberMultiplierFormula (0.00s) === RUN TestDeleteObjectEntryDemotesNonEmptyDirectoryMarker --- PASS: TestDeleteObjectEntryDemotesNonEmptyDirectoryMarker (0.00s) === RUN TestDeleteObjectEntryTreatsImplicitDirectoryAsSuccessfulNoop --- PASS: TestDeleteObjectEntryTreatsImplicitDirectoryAsSuccessfulNoop (0.00s) === RUN TestDeleteObjectEntryIgnoresConcurrentUpdateNotFound --- PASS: TestDeleteObjectEntryIgnoresConcurrentUpdateNotFound (0.00s) === RUN TestDeleteObjectEntryPropagatesNonDirectoryDeleteErrors --- PASS: TestDeleteObjectEntryPropagatesNonDirectoryDeleteErrors (0.00s) === RUN TestLoadIAMManagerFromConfig_Defaults --- PASS: TestLoadIAMManagerFromConfig_Defaults (0.00s) === RUN TestLoadIAMManagerFromConfig_Overrides --- PASS: TestLoadIAMManagerFromConfig_Overrides (0.00s) === RUN TestLoadIAMManagerFromConfig_PartialDefaults --- PASS: TestLoadIAMManagerFromConfig_PartialDefaults (0.00s) === RUN TestLoadIAMManagerFromConfig_ExplicitEmptyKey --- PASS: TestLoadIAMManagerFromConfig_ExplicitEmptyKey (0.00s) === RUN TestLoadIAMManagerFromConfig_MissingKeyError --- PASS: TestLoadIAMManagerFromConfig_MissingKeyError (0.00s) === RUN TestLoadIAMManagerFromConfig_ExplicitFileDefaultsToDeny --- PASS: TestLoadIAMManagerFromConfig_ExplicitFileDefaultsToDeny (0.00s) === RUN TestLoadIAMManagerFromConfig_NoFileDefaultsToAllow --- PASS: TestLoadIAMManagerFromConfig_NoFileDefaultsToAllow (0.00s) === RUN TestLoadIAMManagerFromConfig_ExplicitFileEnforcesUserScopedPolicy --- PASS: TestLoadIAMManagerFromConfig_ExplicitFileEnforcesUserScopedPolicy (0.00s) === RUN TestLoadIAMManagerWithNoConfig I0505 12:12:53.758319 config_loader.go:73 Using explicit credential store: memory --- PASS: TestLoadIAMManagerWithNoConfig (0.00s) === RUN TestLoadIAMManagerFromConfig_EmptyConfigWithFallbackKey I0505 12:12:53.758356 config_loader.go:73 Using explicit credential store: memory --- PASS: TestLoadIAMManagerFromConfig_EmptyConfigWithFallbackKey (0.00s) === RUN TestIdentityFieldsForS3TablesReflection --- PASS: TestIdentityFieldsForS3TablesReflection (0.00s) === RUN TestMapBaseActionToS3Format_ServicePrefixPassthrough === RUN TestMapBaseActionToS3Format_ServicePrefixPassthrough/s3_prefix === RUN TestMapBaseActionToS3Format_ServicePrefixPassthrough/iam_prefix === RUN TestMapBaseActionToS3Format_ServicePrefixPassthrough/sts:AssumeRole === RUN TestMapBaseActionToS3Format_ServicePrefixPassthrough/sts:GetFederationToken === RUN TestMapBaseActionToS3Format_ServicePrefixPassthrough/sts:GetCallerIdentity === RUN TestMapBaseActionToS3Format_ServicePrefixPassthrough/coarse_Read_maps_to_s3:GetObject === RUN TestMapBaseActionToS3Format_ServicePrefixPassthrough/coarse_Write_maps_to_s3:PutObject --- PASS: TestMapBaseActionToS3Format_ServicePrefixPassthrough (0.00s) --- PASS: TestMapBaseActionToS3Format_ServicePrefixPassthrough/s3_prefix (0.00s) --- PASS: TestMapBaseActionToS3Format_ServicePrefixPassthrough/iam_prefix (0.00s) --- PASS: TestMapBaseActionToS3Format_ServicePrefixPassthrough/sts:AssumeRole (0.00s) --- PASS: TestMapBaseActionToS3Format_ServicePrefixPassthrough/sts:GetFederationToken (0.00s) --- PASS: TestMapBaseActionToS3Format_ServicePrefixPassthrough/sts:GetCallerIdentity (0.00s) --- PASS: TestMapBaseActionToS3Format_ServicePrefixPassthrough/coarse_Read_maps_to_s3:GetObject (0.00s) --- PASS: TestMapBaseActionToS3Format_ServicePrefixPassthrough/coarse_Write_maps_to_s3:PutObject (0.00s) === RUN TestResolveS3Action_STSActionsPassthrough === RUN TestResolveS3Action_STSActionsPassthrough/nil_request_sts:AssumeRole === RUN TestResolveS3Action_STSActionsPassthrough/with_request_sts:AssumeRole === RUN TestResolveS3Action_STSActionsPassthrough/nil_request_sts:GetFederationToken === RUN TestResolveS3Action_STSActionsPassthrough/with_request_sts:GetFederationToken === RUN TestResolveS3Action_STSActionsPassthrough/nil_request_sts:GetCallerIdentity === RUN TestResolveS3Action_STSActionsPassthrough/with_request_sts:GetCallerIdentity --- PASS: TestResolveS3Action_STSActionsPassthrough (0.00s) --- PASS: TestResolveS3Action_STSActionsPassthrough/nil_request_sts:AssumeRole (0.00s) --- PASS: TestResolveS3Action_STSActionsPassthrough/with_request_sts:AssumeRole (0.00s) --- PASS: TestResolveS3Action_STSActionsPassthrough/nil_request_sts:GetFederationToken (0.00s) --- PASS: TestResolveS3Action_STSActionsPassthrough/with_request_sts:GetFederationToken (0.00s) --- PASS: TestResolveS3Action_STSActionsPassthrough/nil_request_sts:GetCallerIdentity (0.00s) --- PASS: TestResolveS3Action_STSActionsPassthrough/with_request_sts:GetCallerIdentity (0.00s) === RUN TestResolveS3Action_AttributesBeforeVersionId === RUN TestResolveS3Action_AttributesBeforeVersionId/attributes_only === RUN TestResolveS3Action_AttributesBeforeVersionId/attributes_with_versionId === RUN TestResolveS3Action_AttributesBeforeVersionId/versionId_only_GET === RUN TestResolveS3Action_AttributesBeforeVersionId/versionId_only_DELETE --- PASS: TestResolveS3Action_AttributesBeforeVersionId (0.00s) --- PASS: TestResolveS3Action_AttributesBeforeVersionId/attributes_only (0.00s) --- PASS: TestResolveS3Action_AttributesBeforeVersionId/attributes_with_versionId (0.00s) --- PASS: TestResolveS3Action_AttributesBeforeVersionId/versionId_only_GET (0.00s) --- PASS: TestResolveS3Action_AttributesBeforeVersionId/versionId_only_DELETE (0.00s) === RUN TestContentEncodingPreservation === RUN TestContentEncodingPreservation/gzip_encoding === RUN TestContentEncodingPreservation/zstd_encoding === RUN TestContentEncodingPreservation/deflate_encoding === RUN TestContentEncodingPreservation/br_(Brotli)_encoding === RUN TestContentEncodingPreservation/multiple_encodings === RUN TestContentEncodingPreservation/encoding_with_language === RUN TestContentEncodingPreservation/language_only --- PASS: TestContentEncodingPreservation (0.00s) --- PASS: TestContentEncodingPreservation/gzip_encoding (0.00s) --- PASS: TestContentEncodingPreservation/zstd_encoding (0.00s) --- PASS: TestContentEncodingPreservation/deflate_encoding (0.00s) --- PASS: TestContentEncodingPreservation/br_(Brotli)_encoding (0.00s) --- PASS: TestContentEncodingPreservation/multiple_encodings (0.00s) --- PASS: TestContentEncodingPreservation/encoding_with_language (0.00s) --- PASS: TestContentEncodingPreservation/language_only (0.00s) === RUN TestContentEncodingWithOtherHeaders --- PASS: TestContentEncodingWithOtherHeaders (0.00s) === RUN TestS3EndToEndWithJWT === RUN TestS3EndToEndWithJWT/S3_Read-Only_Role_Complete_Workflow === RUN TestS3EndToEndWithJWT/S3_Read-Only_Role_Complete_Workflow/S3_Read-Only_Role_Complete_Workflow_CreateBucket s3_end_to_end_test.go:793: S3 Operation: PUT /test-bucket -> 403 (DENIED) === RUN TestS3EndToEndWithJWT/S3_Read-Only_Role_Complete_Workflow/S3_Read-Only_Role_Complete_Workflow_ListBucket s3_end_to_end_test.go:793: S3 Operation: GET /test-bucket -> 200 (ALLOWED) === RUN TestS3EndToEndWithJWT/S3_Read-Only_Role_Complete_Workflow/S3_Read-Only_Role_Complete_Workflow_PutObject s3_end_to_end_test.go:793: S3 Operation: PUT /test-bucket/test-file.txt -> 403 (DENIED) === RUN TestS3EndToEndWithJWT/S3_Read-Only_Role_Complete_Workflow/S3_Read-Only_Role_Complete_Workflow_GetObject s3_end_to_end_test.go:793: S3 Operation: GET /test-bucket/test-file.txt -> 200 (ALLOWED) === RUN TestS3EndToEndWithJWT/S3_Read-Only_Role_Complete_Workflow/S3_Read-Only_Role_Complete_Workflow_HeadObject s3_end_to_end_test.go:793: S3 Operation: HEAD /test-bucket/test-file.txt -> 200 (ALLOWED) === RUN TestS3EndToEndWithJWT/S3_Read-Only_Role_Complete_Workflow/S3_Read-Only_Role_Complete_Workflow_DeleteObject s3_end_to_end_test.go:793: S3 Operation: DELETE /test-bucket/test-file.txt -> 403 (DENIED) === RUN TestS3EndToEndWithJWT/S3_Admin_Role_Complete_Workflow === RUN TestS3EndToEndWithJWT/S3_Admin_Role_Complete_Workflow/S3_Admin_Role_Complete_Workflow_CreateBucket s3_end_to_end_test.go:793: S3 Operation: PUT /admin-bucket -> 200 (ALLOWED) === RUN TestS3EndToEndWithJWT/S3_Admin_Role_Complete_Workflow/S3_Admin_Role_Complete_Workflow_PutObject s3_end_to_end_test.go:793: S3 Operation: PUT /admin-bucket/admin-file.txt -> 200 (ALLOWED) === RUN TestS3EndToEndWithJWT/S3_Admin_Role_Complete_Workflow/S3_Admin_Role_Complete_Workflow_GetObject s3_end_to_end_test.go:793: S3 Operation: GET /admin-bucket/admin-file.txt -> 200 (ALLOWED) === RUN TestS3EndToEndWithJWT/S3_Admin_Role_Complete_Workflow/S3_Admin_Role_Complete_Workflow_DeleteObject s3_end_to_end_test.go:793: S3 Operation: DELETE /admin-bucket/admin-file.txt -> 200 (ALLOWED) === RUN TestS3EndToEndWithJWT/S3_Admin_Role_Complete_Workflow/S3_Admin_Role_Complete_Workflow_DeleteBucket s3_end_to_end_test.go:793: S3 Operation: DELETE /admin-bucket -> 200 (ALLOWED) === RUN TestS3EndToEndWithJWT/S3_IP-Restricted_Role === RUN TestS3EndToEndWithJWT/S3_IP-Restricted_Role/S3_IP-Restricted_Role_GetObject s3_end_to_end_test.go:793: S3 Operation: GET /restricted-bucket/file.txt -> 200 (ALLOWED) === RUN TestS3EndToEndWithJWT/S3_IP-Restricted_Role/S3_IP-Restricted_Role_GetObject#01 s3_end_to_end_test.go:793: S3 Operation: GET /restricted-bucket/file.txt -> 403 (DENIED) --- PASS: TestS3EndToEndWithJWT (0.00s) --- PASS: TestS3EndToEndWithJWT/S3_Read-Only_Role_Complete_Workflow (0.00s) --- PASS: TestS3EndToEndWithJWT/S3_Read-Only_Role_Complete_Workflow/S3_Read-Only_Role_Complete_Workflow_CreateBucket (0.00s) --- PASS: TestS3EndToEndWithJWT/S3_Read-Only_Role_Complete_Workflow/S3_Read-Only_Role_Complete_Workflow_ListBucket (0.00s) --- PASS: TestS3EndToEndWithJWT/S3_Read-Only_Role_Complete_Workflow/S3_Read-Only_Role_Complete_Workflow_PutObject (0.00s) --- PASS: TestS3EndToEndWithJWT/S3_Read-Only_Role_Complete_Workflow/S3_Read-Only_Role_Complete_Workflow_GetObject (0.00s) --- PASS: TestS3EndToEndWithJWT/S3_Read-Only_Role_Complete_Workflow/S3_Read-Only_Role_Complete_Workflow_HeadObject (0.00s) --- PASS: TestS3EndToEndWithJWT/S3_Read-Only_Role_Complete_Workflow/S3_Read-Only_Role_Complete_Workflow_DeleteObject (0.00s) --- PASS: TestS3EndToEndWithJWT/S3_Admin_Role_Complete_Workflow (0.00s) --- PASS: TestS3EndToEndWithJWT/S3_Admin_Role_Complete_Workflow/S3_Admin_Role_Complete_Workflow_CreateBucket (0.00s) --- PASS: TestS3EndToEndWithJWT/S3_Admin_Role_Complete_Workflow/S3_Admin_Role_Complete_Workflow_PutObject (0.00s) --- PASS: TestS3EndToEndWithJWT/S3_Admin_Role_Complete_Workflow/S3_Admin_Role_Complete_Workflow_GetObject (0.00s) --- PASS: TestS3EndToEndWithJWT/S3_Admin_Role_Complete_Workflow/S3_Admin_Role_Complete_Workflow_DeleteObject (0.00s) --- PASS: TestS3EndToEndWithJWT/S3_Admin_Role_Complete_Workflow/S3_Admin_Role_Complete_Workflow_DeleteBucket (0.00s) --- PASS: TestS3EndToEndWithJWT/S3_IP-Restricted_Role (0.00s) --- PASS: TestS3EndToEndWithJWT/S3_IP-Restricted_Role/S3_IP-Restricted_Role_GetObject (0.00s) --- PASS: TestS3EndToEndWithJWT/S3_IP-Restricted_Role/S3_IP-Restricted_Role_GetObject#01 (0.00s) === RUN TestS3MultipartUploadWithJWT === RUN TestS3MultipartUploadWithJWT/Initialize_Multipart_Upload s3_end_to_end_test.go:793: S3 Operation: POST /multipart-bucket/large-file.txt?uploads -> 404 (DENIED) s3_end_to_end_test.go:799: Non-auth error: Not found === RUN TestS3MultipartUploadWithJWT/Upload_Part s3_end_to_end_test.go:793: S3 Operation: PUT /multipart-bucket/large-file.txt?partNumber=1&uploadId=test-upload-id -> 200 (ALLOWED) === RUN TestS3MultipartUploadWithJWT/List_Parts s3_end_to_end_test.go:793: S3 Operation: GET /multipart-bucket/large-file.txt?uploadId=test-upload-id -> 200 (ALLOWED) === RUN TestS3MultipartUploadWithJWT/Complete_Multipart_Upload s3_end_to_end_test.go:793: S3 Operation: POST /multipart-bucket/large-file.txt?uploadId=test-upload-id -> 404 (DENIED) s3_end_to_end_test.go:799: Non-auth error: Not found --- PASS: TestS3MultipartUploadWithJWT (0.00s) --- PASS: TestS3MultipartUploadWithJWT/Initialize_Multipart_Upload (0.00s) --- PASS: TestS3MultipartUploadWithJWT/Upload_Part (0.00s) --- PASS: TestS3MultipartUploadWithJWT/List_Parts (0.00s) --- PASS: TestS3MultipartUploadWithJWT/Complete_Multipart_Upload (0.00s) === RUN TestS3ListObjectsV2PrefixCondition === RUN TestS3ListObjectsV2PrefixCondition/ListObjectsV2_with_matching_prefix_query_param_and_empty_objectKey === RUN TestS3ListObjectsV2PrefixCondition/ListObjectsV2_with_matching_prefix_propagated_as_objectKey === RUN TestS3ListObjectsV2PrefixCondition/ListObjectsV1_with_matching_prefix_query_param === RUN TestS3ListObjectsV2PrefixCondition/ListObjectsV2_with_non-matching_prefix_should_be_denied === RUN TestS3ListObjectsV2PrefixCondition/ListObjectsV2_with_no_prefix_should_be_denied --- PASS: TestS3ListObjectsV2PrefixCondition (0.00s) --- PASS: TestS3ListObjectsV2PrefixCondition/ListObjectsV2_with_matching_prefix_query_param_and_empty_objectKey (0.00s) --- PASS: TestS3ListObjectsV2PrefixCondition/ListObjectsV2_with_matching_prefix_propagated_as_objectKey (0.00s) --- PASS: TestS3ListObjectsV2PrefixCondition/ListObjectsV1_with_matching_prefix_query_param (0.00s) --- PASS: TestS3ListObjectsV2PrefixCondition/ListObjectsV2_with_non-matching_prefix_should_be_denied (0.00s) --- PASS: TestS3ListObjectsV2PrefixCondition/ListObjectsV2_with_no_prefix_should_be_denied (0.00s) === RUN TestS3CORSWithJWT --- PASS: TestS3CORSWithJWT (0.00s) === RUN TestS3PerformanceWithIAM s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-0.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-1.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-2.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-3.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-4.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-5.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-6.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-7.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-8.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-9.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-10.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-11.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-12.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-13.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-14.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-15.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-16.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-17.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-18.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-19.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-20.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-21.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-22.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-23.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-24.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-25.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-26.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-27.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-28.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-29.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-30.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-31.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-32.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-33.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-34.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-35.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-36.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-37.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-38.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-39.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-40.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-41.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-42.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-43.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-44.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-45.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-46.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-47.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-48.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-49.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-50.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-51.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-52.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-53.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-54.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-55.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-56.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-57.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-58.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-59.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-60.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-61.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-62.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-63.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-64.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-65.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-66.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-67.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-68.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-69.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-70.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-71.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-72.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-73.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-74.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-75.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-76.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-77.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-78.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-79.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-80.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-81.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-82.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-83.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-84.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-85.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-86.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-87.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-88.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-89.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-90.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-91.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-92.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-93.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-94.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-95.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-96.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-97.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-98.txt -> 200 (ALLOWED) s3_end_to_end_test.go:793: S3 Operation: GET /perf-bucket/file-99.txt -> 200 (ALLOWED) s3_end_to_end_test.go:432: Performance Results: s3_end_to_end_test.go:433: - Total requests: 100 s3_end_to_end_test.go:434: - Total time: 7.701016ms s3_end_to_end_test.go:435: - Average latency: 77.01µs s3_end_to_end_test.go:436: - Requests per second: 12985.30 --- PASS: TestS3PerformanceWithIAM (0.01s) === RUN TestS3AuthenticationDenied === RUN TestS3AuthenticationDenied/no_authorization_header === RUN TestS3AuthenticationDenied/empty_bearer_token === RUN TestS3AuthenticationDenied/invalid_jwt_token === RUN TestS3AuthenticationDenied/malformed_authorization_header === RUN TestS3AuthenticationDenied/expired_jwt_token --- PASS: TestS3AuthenticationDenied (0.00s) --- PASS: TestS3AuthenticationDenied/no_authorization_header (0.00s) --- PASS: TestS3AuthenticationDenied/empty_bearer_token (0.00s) --- PASS: TestS3AuthenticationDenied/invalid_jwt_token (0.00s) --- PASS: TestS3AuthenticationDenied/malformed_authorization_header (0.00s) --- PASS: TestS3AuthenticationDenied/expired_jwt_token (0.00s) === RUN TestS3IAMOnlyModeRejectsAnonymous --- PASS: TestS3IAMOnlyModeRejectsAnonymous (0.00s) === RUN TestCheckPolicyWithEntry === RUN TestCheckPolicyWithEntry/object_with_public_tag_-_allow === RUN TestCheckPolicyWithEntry/object_with_private_tag_-_indeterminate_(no_matching_statement) === RUN TestCheckPolicyWithEntry/object_with_no_tags_-_indeterminate_(no_matching_statement) === RUN TestCheckPolicyWithEntry/nil_entry_-_indeterminate_(condition_cannot_be_evaluated) === RUN TestCheckPolicyWithEntry/object_with_multiple_tags_including_public_-_allow --- PASS: TestCheckPolicyWithEntry (0.00s) --- PASS: TestCheckPolicyWithEntry/object_with_public_tag_-_allow (0.00s) --- PASS: TestCheckPolicyWithEntry/object_with_private_tag_-_indeterminate_(no_matching_statement) (0.00s) --- PASS: TestCheckPolicyWithEntry/object_with_no_tags_-_indeterminate_(no_matching_statement) (0.00s) --- PASS: TestCheckPolicyWithEntry/nil_entry_-_indeterminate_(condition_cannot_be_evaluated) (0.00s) --- PASS: TestCheckPolicyWithEntry/object_with_multiple_tags_including_public_-_allow (0.00s) === RUN TestCheckPolicyWithEntryNoPolicyForBucket --- PASS: TestCheckPolicyWithEntryNoPolicyForBucket (0.00s) === RUN TestCheckPolicyWithEntryNilPolicyEngine --- PASS: TestCheckPolicyWithEntryNilPolicyEngine (0.00s) === RUN TestCheckPolicyWithEntryDenyPolicy === RUN TestCheckPolicyWithEntryDenyPolicy/public_object_-_allow === RUN TestCheckPolicyWithEntryDenyPolicy/confidential_object_-_deny === RUN TestCheckPolicyWithEntryDenyPolicy/no_classification_tag_-_allow --- PASS: TestCheckPolicyWithEntryDenyPolicy (0.00s) --- PASS: TestCheckPolicyWithEntryDenyPolicy/public_object_-_allow (0.00s) --- PASS: TestCheckPolicyWithEntryDenyPolicy/confidential_object_-_deny (0.00s) --- PASS: TestCheckPolicyWithEntryDenyPolicy/no_classification_tag_-_allow (0.00s) === RUN TestHasPolicyForBucket --- PASS: TestHasPolicyForBucket (0.00s) === RUN TestGranularActionMappingSecurity === RUN TestGranularActionMappingSecurity/delete_object_security_fix s3_granular_action_security_test.go:167: SECURITY IMPROVEMENT: DELETE object operations should map to s3:DeleteObject, not s3:PutObject s3_granular_action_security_test.go:168: Problem Fixed: Old mapping incorrectly mapped DELETE object to s3:PutObject, allowing users with only PUT permissions to delete objects - a critical security flaw s3_granular_action_security_test.go:169: Granular Action: s3:DeleteObject === RUN TestGranularActionMappingSecurity/get_object_acl_precision s3_granular_action_security_test.go:167: SECURITY IMPROVEMENT: GET object ACL should map to s3:GetObjectAcl, not generic s3:GetObject s3_granular_action_security_test.go:168: Problem Fixed: Old mapping would allow users with s3:GetObject permission to read ACLs, potentially exposing sensitive permission information s3_granular_action_security_test.go:169: Granular Action: s3:GetObjectAcl === RUN TestGranularActionMappingSecurity/put_object_tagging_precision s3_granular_action_security_test.go:167: SECURITY IMPROVEMENT: PUT object tagging should map to s3:PutObjectTagging, not generic s3:PutObject s3_granular_action_security_test.go:168: Problem Fixed: Old mapping couldn't distinguish between actual object uploads and metadata operations like tagging, making fine-grained permissions impossible s3_granular_action_security_test.go:169: Granular Action: s3:PutObjectTagging === RUN TestGranularActionMappingSecurity/multipart_upload_precision s3_granular_action_security_test.go:167: SECURITY IMPROVEMENT: Multipart upload initiation should map to s3:CreateMultipartUpload s3_granular_action_security_test.go:168: Problem Fixed: Old mapping would treat multipart operations as generic s3:PutObject, preventing policies that allow regular uploads but restrict large multipart operations s3_granular_action_security_test.go:169: Granular Action: s3:CreateMultipartUpload === RUN TestGranularActionMappingSecurity/bucket_policy_vs_bucket_creation s3_granular_action_security_test.go:167: SECURITY IMPROVEMENT: Bucket policy modifications should map to s3:PutBucketPolicy, not s3:CreateBucket s3_granular_action_security_test.go:168: Problem Fixed: Old mapping couldn't distinguish between creating buckets and modifying bucket policies, potentially allowing unauthorized policy changes s3_granular_action_security_test.go:169: Granular Action: s3:PutBucketPolicy === RUN TestGranularActionMappingSecurity/list_vs_read_distinction s3_granular_action_security_test.go:167: SECURITY IMPROVEMENT: Listing multipart uploads should map to s3:ListBucketMultipartUploads s3_granular_action_security_test.go:168: Problem Fixed: Old mapping would use generic s3:ListBucket for all bucket operations, preventing fine-grained control over who can see ongoing multipart operations s3_granular_action_security_test.go:169: Granular Action: s3:ListBucketMultipartUploads === RUN TestGranularActionMappingSecurity/delete_object_tagging_precision s3_granular_action_security_test.go:167: SECURITY IMPROVEMENT: Delete object tagging should map to s3:DeleteObjectTagging, not s3:DeleteObject s3_granular_action_security_test.go:168: Problem Fixed: Old mapping couldn't distinguish between deleting objects and deleting tags, preventing policies that allow tag management but not object deletion s3_granular_action_security_test.go:169: Granular Action: s3:DeleteObjectTagging --- PASS: TestGranularActionMappingSecurity (0.00s) --- PASS: TestGranularActionMappingSecurity/delete_object_security_fix (0.00s) --- PASS: TestGranularActionMappingSecurity/get_object_acl_precision (0.00s) --- PASS: TestGranularActionMappingSecurity/put_object_tagging_precision (0.00s) --- PASS: TestGranularActionMappingSecurity/multipart_upload_precision (0.00s) --- PASS: TestGranularActionMappingSecurity/bucket_policy_vs_bucket_creation (0.00s) --- PASS: TestGranularActionMappingSecurity/list_vs_read_distinction (0.00s) --- PASS: TestGranularActionMappingSecurity/delete_object_tagging_precision (0.00s) === RUN TestBackwardCompatibilityFallback === RUN TestBackwardCompatibilityFallback/generic_read_fallback s3_granular_action_security_test.go:237: COMPATIBILITY: Generic read operations should fall back to s3:GetObject for compatibility - s3:GetObject === RUN TestBackwardCompatibilityFallback/generic_write_fallback s3_granular_action_security_test.go:237: COMPATIBILITY: Generic write operations should fall back to s3:PutObject for compatibility - s3:PutObject === RUN TestBackwardCompatibilityFallback/already_granular_passthrough s3_granular_action_security_test.go:237: COMPATIBILITY: Already granular actions should pass through unchanged - s3:GetBucketLocation === RUN TestBackwardCompatibilityFallback/unknown_action_conversion s3_granular_action_security_test.go:237: COMPATIBILITY: Unknown actions should be converted to S3 format for consistency - s3:CustomAction --- PASS: TestBackwardCompatibilityFallback (0.00s) --- PASS: TestBackwardCompatibilityFallback/generic_read_fallback (0.00s) --- PASS: TestBackwardCompatibilityFallback/generic_write_fallback (0.00s) --- PASS: TestBackwardCompatibilityFallback/already_granular_passthrough (0.00s) --- PASS: TestBackwardCompatibilityFallback/unknown_action_conversion (0.00s) === RUN TestPolicyEnforcementScenarios === RUN TestPolicyEnforcementScenarios/allow_read_deny_acl_access s3_granular_action_security_test.go:338: SECURITY SCENARIO: allow_read_deny_acl_access s3_granular_action_security_test.go:339: Expected Action: s3:GetObjectAcl s3_granular_action_security_test.go:340: Security Benefit: Policy allows reading objects but denies ACL access - granular actions enable this distinction s3_granular_action_security_test.go:341: Policy Example: { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::sensitive-bucket/*" } ] } === RUN TestPolicyEnforcementScenarios/allow_tagging_deny_object_modification s3_granular_action_security_test.go:338: SECURITY SCENARIO: allow_tagging_deny_object_modification s3_granular_action_security_test.go:339: Expected Action: s3:PutObjectTagging s3_granular_action_security_test.go:340: Security Benefit: Policy allows tag management but prevents actual object uploads - critical for metadata-only roles s3_granular_action_security_test.go:341: Policy Example: { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:PutObjectTagging", "s3:DeleteObjectTagging"], "Resource": "arn:aws:s3:::data-bucket/*" } ] } === RUN TestPolicyEnforcementScenarios/restrict_multipart_uploads s3_granular_action_security_test.go:338: SECURITY SCENARIO: restrict_multipart_uploads s3_granular_action_security_test.go:339: Expected Action: s3:CreateMultipartUpload s3_granular_action_security_test.go:340: Security Benefit: Policy allows regular uploads but blocks large multipart uploads - prevents resource abuse s3_granular_action_security_test.go:341: Policy Example: { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::uploads/*" }, { "Effect": "Deny", "Action": ["s3:CreateMultipartUpload", "s3:UploadPart"], "Resource": "arn:aws:s3:::uploads/*" } ] } --- PASS: TestPolicyEnforcementScenarios (0.00s) --- PASS: TestPolicyEnforcementScenarios/allow_read_deny_acl_access (0.00s) --- PASS: TestPolicyEnforcementScenarios/allow_tagging_deny_object_modification (0.00s) --- PASS: TestPolicyEnforcementScenarios/restrict_multipart_uploads (0.00s) === RUN TestDeleteObjectPolicyEnforcement === RUN TestDeleteObjectPolicyEnforcement/delete_object_maps_to_correct_action s3_granular_action_security_test.go:414: ARCHITECTURAL FIX VERIFIED: delete_object_maps_to_correct_action s3_granular_action_security_test.go:415: Method: DELETE -> S3 Action: s3:DeleteObject s3_granular_action_security_test.go:416: Policy Scenario: Policy that denies s3:DeleteObject but allows s3:PutObject should now work correctly === RUN TestDeleteObjectPolicyEnforcement/put_object_maps_to_correct_action s3_granular_action_security_test.go:414: ARCHITECTURAL FIX VERIFIED: put_object_maps_to_correct_action s3_granular_action_security_test.go:415: Method: PUT -> S3 Action: s3:PutObject s3_granular_action_security_test.go:416: Policy Scenario: Policy that allows s3:PutObject but denies s3:DeleteObject should allow uploads === RUN TestDeleteObjectPolicyEnforcement/batch_delete_maps_to_delete_action s3_granular_action_security_test.go:414: ARCHITECTURAL FIX VERIFIED: batch_delete_maps_to_delete_action s3_granular_action_security_test.go:415: Method: POST -> S3 Action: s3:DeleteObject s3_granular_action_security_test.go:416: Policy Scenario: Batch delete operations should also map to s3:DeleteObject --- PASS: TestDeleteObjectPolicyEnforcement (0.00s) --- PASS: TestDeleteObjectPolicyEnforcement/delete_object_maps_to_correct_action (0.00s) --- PASS: TestDeleteObjectPolicyEnforcement/put_object_maps_to_correct_action (0.00s) --- PASS: TestDeleteObjectPolicyEnforcement/batch_delete_maps_to_delete_action (0.00s) === RUN TestFineGrainedPolicyExample s3_granular_action_security_test.go:486: Testing Fine-Grained Policy: s3_granular_action_security_test.go:487: { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowObjectUploads", "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::test-bucket/*" }, { "Sid": "DenyObjectDeletion", "Effect": "Deny", "Action": "s3:DeleteObject", "Resource": "arn:aws:s3:::test-bucket/*" } ] } === RUN TestFineGrainedPolicyExample/PUT_object s3_granular_action_security_test.go:519: [ALLOWED] PUT object -> s3:PutObject s3_granular_action_security_test.go:520: Rationale: Policy explicitly allows s3:PutObject - upload should succeed === RUN TestFineGrainedPolicyExample/DELETE_object s3_granular_action_security_test.go:519: [DENIED] DELETE object -> s3:DeleteObject s3_granular_action_security_test.go:520: Rationale: Policy explicitly denies s3:DeleteObject - deletion should be blocked === RUN TestFineGrainedPolicyExample/Batch_DELETE s3_granular_action_security_test.go:519: [DENIED] Batch DELETE -> s3:DeleteObject s3_granular_action_security_test.go:520: Rationale: Policy explicitly denies s3:DeleteObject - batch deletion should be blocked === NAME TestFineGrainedPolicyExample s3_granular_action_security_test.go:524: ARCHITECTURAL LIMITATION RESOLVED! s3_granular_action_security_test.go:525: Fine-grained policies like 'allow PUT but deny DELETE' now work correctly s3_granular_action_security_test.go:526: The policy engine can distinguish between s3:PutObject and s3:DeleteObject --- PASS: TestFineGrainedPolicyExample (0.00s) --- PASS: TestFineGrainedPolicyExample/PUT_object (0.00s) --- PASS: TestFineGrainedPolicyExample/DELETE_object (0.00s) --- PASS: TestFineGrainedPolicyExample/Batch_DELETE (0.00s) === RUN TestCoarseActionResolution === RUN TestCoarseActionResolution/PUT_with_ACTION_WRITE_resolves_to_PutObject s3_granular_action_security_test.go:595: SUCCESS: PUT_with_ACTION_WRITE_resolves_to_PutObject s3_granular_action_security_test.go:596: Input: PUT /test-bucket/test-file.txt + ACTION_WRITE s3_granular_action_security_test.go:597: Output: s3:PutObject s3_granular_action_security_test.go:598: Policy impact: Policy allowing s3:PutObject should match PUT requests === RUN TestCoarseActionResolution/DELETE_with_ACTION_WRITE_resolves_to_DeleteObject s3_granular_action_security_test.go:595: SUCCESS: DELETE_with_ACTION_WRITE_resolves_to_DeleteObject s3_granular_action_security_test.go:596: Input: DELETE /test-bucket/test-file.txt + ACTION_WRITE s3_granular_action_security_test.go:597: Output: s3:DeleteObject s3_granular_action_security_test.go:598: Policy impact: Policy denying s3:DeleteObject should block DELETE requests === RUN TestCoarseActionResolution/batch_DELETE_with_ACTION_WRITE_resolves_to_DeleteObject s3_granular_action_security_test.go:595: SUCCESS: batch_DELETE_with_ACTION_WRITE_resolves_to_DeleteObject s3_granular_action_security_test.go:596: Input: POST /test-bucket + ACTION_WRITE s3_granular_action_security_test.go:597: Output: s3:DeleteObject s3_granular_action_security_test.go:598: Policy impact: Policy denying s3:DeleteObject should block batch DELETE === RUN TestCoarseActionResolution/POST_multipart_with_ACTION_WRITE_resolves_to_CreateMultipartUpload s3_granular_action_security_test.go:595: SUCCESS: POST_multipart_with_ACTION_WRITE_resolves_to_CreateMultipartUpload s3_granular_action_security_test.go:596: Input: POST /test-bucket/large-file.mp4 + ACTION_WRITE s3_granular_action_security_test.go:597: Output: s3:CreateMultipartUpload s3_granular_action_security_test.go:598: Policy impact: Policy allowing s3:PutObject but denying s3:CreateMultipartUpload can now work === NAME TestCoarseActionResolution s3_granular_action_security_test.go:602: === ARCHITECTURAL LIMITATION RESOLVED === s3_granular_action_security_test.go:603: Handlers can use coarse ACTION_WRITE constant, and the context-aware s3_granular_action_security_test.go:604: resolver will map it to the correct specific S3 action (PutObject, s3_granular_action_security_test.go:605: DeleteObject, CreateMultipartUpload, etc.) based on HTTP method and s3_granular_action_security_test.go:606: query parameters. This enables fine-grained bucket policies like: s3_granular_action_security_test.go:607: - Allow s3:PutObject but Deny s3:DeleteObject (append-only) s3_granular_action_security_test.go:608: - Allow regular uploads but Deny multipart (size limits) --- PASS: TestCoarseActionResolution (0.00s) --- PASS: TestCoarseActionResolution/PUT_with_ACTION_WRITE_resolves_to_PutObject (0.00s) --- PASS: TestCoarseActionResolution/DELETE_with_ACTION_WRITE_resolves_to_DeleteObject (0.00s) --- PASS: TestCoarseActionResolution/batch_DELETE_with_ACTION_WRITE_resolves_to_DeleteObject (0.00s) --- PASS: TestCoarseActionResolution/POST_multipart_with_ACTION_WRITE_resolves_to_CreateMultipartUpload (0.00s) === RUN TestSelectPrimaryRole === RUN TestSelectPrimaryRole/empty_roles_returns_empty === RUN TestSelectPrimaryRole/single_role_returns_that_role === RUN TestSelectPrimaryRole/multiple_roles_returns_first === RUN TestSelectPrimaryRole/order_matters === RUN TestSelectPrimaryRole/complex_enterprise_roles --- PASS: TestSelectPrimaryRole (0.00s) --- PASS: TestSelectPrimaryRole/empty_roles_returns_empty (0.00s) --- PASS: TestSelectPrimaryRole/single_role_returns_that_role (0.00s) --- PASS: TestSelectPrimaryRole/multiple_roles_returns_first (0.00s) --- PASS: TestSelectPrimaryRole/order_matters (0.00s) --- PASS: TestSelectPrimaryRole/complex_enterprise_roles (0.00s) === RUN TestJWTAuthenticationFlow === RUN TestJWTAuthenticationFlow/Read-Only_JWT_Authentication === RUN TestJWTAuthenticationFlow/Read-Only_JWT_Authentication/Read === RUN TestJWTAuthenticationFlow/Read-Only_JWT_Authentication/Write === RUN TestJWTAuthenticationFlow/Read-Only_JWT_Authentication/List === RUN TestJWTAuthenticationFlow/Admin_JWT_Authentication === RUN TestJWTAuthenticationFlow/Admin_JWT_Authentication/Read === RUN TestJWTAuthenticationFlow/Admin_JWT_Authentication/Write === RUN TestJWTAuthenticationFlow/Admin_JWT_Authentication/DeleteBucket --- PASS: TestJWTAuthenticationFlow (0.00s) --- PASS: TestJWTAuthenticationFlow/Read-Only_JWT_Authentication (0.00s) --- PASS: TestJWTAuthenticationFlow/Read-Only_JWT_Authentication/Read (0.00s) --- PASS: TestJWTAuthenticationFlow/Read-Only_JWT_Authentication/Write (0.00s) --- PASS: TestJWTAuthenticationFlow/Read-Only_JWT_Authentication/List (0.00s) --- PASS: TestJWTAuthenticationFlow/Admin_JWT_Authentication (0.00s) --- PASS: TestJWTAuthenticationFlow/Admin_JWT_Authentication/Read (0.00s) --- PASS: TestJWTAuthenticationFlow/Admin_JWT_Authentication/Write (0.00s) --- PASS: TestJWTAuthenticationFlow/Admin_JWT_Authentication/DeleteBucket (0.00s) === RUN TestJWTTokenValidation === RUN TestJWTTokenValidation/Empty_token === RUN TestJWTTokenValidation/Invalid_token_format === RUN TestJWTTokenValidation/Expired_token --- PASS: TestJWTTokenValidation (0.00s) --- PASS: TestJWTTokenValidation/Empty_token (0.00s) --- PASS: TestJWTTokenValidation/Invalid_token_format (0.00s) --- PASS: TestJWTTokenValidation/Expired_token (0.00s) === RUN TestRequestContextExtraction === RUN TestRequestContextExtraction/Standard_request_with_IP === RUN TestRequestContextExtraction/Request_with_X-Real-IP --- PASS: TestRequestContextExtraction (0.00s) --- PASS: TestRequestContextExtraction/Standard_request_with_IP (0.00s) --- PASS: TestRequestContextExtraction/Request_with_X-Real-IP (0.00s) === RUN TestIPBasedPolicyEnforcement === RUN TestIPBasedPolicyEnforcement/Allow_from_office_IP === RUN TestIPBasedPolicyEnforcement/Block_from_external_IP === RUN TestIPBasedPolicyEnforcement/Allow_from_internal_range --- PASS: TestIPBasedPolicyEnforcement (0.00s) --- PASS: TestIPBasedPolicyEnforcement/Allow_from_office_IP (0.00s) --- PASS: TestIPBasedPolicyEnforcement/Block_from_external_IP (0.00s) --- PASS: TestIPBasedPolicyEnforcement/Allow_from_internal_range (0.00s) === RUN TestListPartsActionMapping === RUN TestListPartsActionMapping/get_object_without_uploadId === RUN TestListPartsActionMapping/get_object_with_uploadId === RUN TestListPartsActionMapping/get_object_with_uploadId_and_other_params === RUN TestListPartsActionMapping/get_object_with_versionId === RUN TestListPartsActionMapping/get_object_acl_without_uploadId === RUN TestListPartsActionMapping/post_multipart_upload_without_uploadId --- PASS: TestListPartsActionMapping (0.00s) --- PASS: TestListPartsActionMapping/get_object_without_uploadId (0.00s) --- PASS: TestListPartsActionMapping/get_object_with_uploadId (0.00s) --- PASS: TestListPartsActionMapping/get_object_with_uploadId_and_other_params (0.00s) --- PASS: TestListPartsActionMapping/get_object_with_versionId (0.00s) --- PASS: TestListPartsActionMapping/get_object_acl_without_uploadId (0.00s) --- PASS: TestListPartsActionMapping/post_multipart_upload_without_uploadId (0.00s) === RUN TestListPartsActionMappingSecurityScenarios === RUN TestListPartsActionMappingSecurityScenarios/privilege_separation_listparts_vs_getobject === RUN TestListPartsActionMappingSecurityScenarios/policy_enforcement_precision --- PASS: TestListPartsActionMappingSecurityScenarios (0.00s) --- PASS: TestListPartsActionMappingSecurityScenarios/privilege_separation_listparts_vs_getobject (0.00s) --- PASS: TestListPartsActionMappingSecurityScenarios/policy_enforcement_precision (0.00s) === RUN TestListPartsActionRealWorldScenarios === RUN TestListPartsActionRealWorldScenarios/large_file_upload_workflow === RUN TestListPartsActionRealWorldScenarios/edge_case_upload_ids --- PASS: TestListPartsActionRealWorldScenarios (0.00s) --- PASS: TestListPartsActionRealWorldScenarios/large_file_upload_workflow (0.00s) --- PASS: TestListPartsActionRealWorldScenarios/edge_case_upload_ids (0.00s) === RUN TestCalculateIVWithOffset === RUN TestCalculateIVWithOffset/BlockAligned_0 === RUN TestCalculateIVWithOffset/BlockAligned_16 === RUN TestCalculateIVWithOffset/BlockAligned_32 === RUN TestCalculateIVWithOffset/BlockAligned_48 === RUN TestCalculateIVWithOffset/NonAligned_1 === RUN TestCalculateIVWithOffset/NonAligned_5 === RUN TestCalculateIVWithOffset/NonAligned_10 === RUN TestCalculateIVWithOffset/NonAligned_15 === RUN TestCalculateIVWithOffset/NonAligned_17 === RUN TestCalculateIVWithOffset/NonAligned_21 === RUN TestCalculateIVWithOffset/NonAligned_33 === RUN TestCalculateIVWithOffset/NonAligned_47 === RUN TestCalculateIVWithOffset/LargeOffset --- PASS: TestCalculateIVWithOffset (0.00s) --- PASS: TestCalculateIVWithOffset/BlockAligned_0 (0.00s) --- PASS: TestCalculateIVWithOffset/BlockAligned_16 (0.00s) --- PASS: TestCalculateIVWithOffset/BlockAligned_32 (0.00s) --- PASS: TestCalculateIVWithOffset/BlockAligned_48 (0.00s) --- PASS: TestCalculateIVWithOffset/NonAligned_1 (0.00s) --- PASS: TestCalculateIVWithOffset/NonAligned_5 (0.00s) --- PASS: TestCalculateIVWithOffset/NonAligned_10 (0.00s) --- PASS: TestCalculateIVWithOffset/NonAligned_15 (0.00s) --- PASS: TestCalculateIVWithOffset/NonAligned_17 (0.00s) --- PASS: TestCalculateIVWithOffset/NonAligned_21 (0.00s) --- PASS: TestCalculateIVWithOffset/NonAligned_33 (0.00s) --- PASS: TestCalculateIVWithOffset/NonAligned_47 (0.00s) --- PASS: TestCalculateIVWithOffset/LargeOffset (0.00s) === RUN TestCTRDecryptionWithNonBlockAlignedOffset === RUN TestCTRDecryptionWithNonBlockAlignedOffset/A === RUN TestCTRDecryptionWithNonBlockAlignedOffset/B === RUN TestCTRDecryptionWithNonBlockAlignedOffset/F === RUN TestCTRDecryptionWithNonBlockAlignedOffset/K === RUN TestCTRDecryptionWithNonBlockAlignedOffset/P === RUN TestCTRDecryptionWithNonBlockAlignedOffset/Q === RUN TestCTRDecryptionWithNonBlockAlignedOffset/R === RUN TestCTRDecryptionWithNonBlockAlignedOffset/V === RUN TestCTRDecryptionWithNonBlockAlignedOffset/a === RUN TestCTRDecryptionWithNonBlockAlignedOffset/b === RUN TestCTRDecryptionWithNonBlockAlignedOffset/p === RUN TestCTRDecryptionWithNonBlockAlignedOffset/q === RUN TestCTRDecryptionWithNonBlockAlignedOffset/¥ === RUN TestCTRDecryptionWithNonBlockAlignedOffset/ȵ --- PASS: TestCTRDecryptionWithNonBlockAlignedOffset (0.00s) --- PASS: TestCTRDecryptionWithNonBlockAlignedOffset/A (0.00s) --- PASS: TestCTRDecryptionWithNonBlockAlignedOffset/B (0.00s) --- PASS: TestCTRDecryptionWithNonBlockAlignedOffset/F (0.00s) --- PASS: TestCTRDecryptionWithNonBlockAlignedOffset/K (0.00s) --- PASS: TestCTRDecryptionWithNonBlockAlignedOffset/P (0.00s) --- PASS: TestCTRDecryptionWithNonBlockAlignedOffset/Q (0.00s) --- PASS: TestCTRDecryptionWithNonBlockAlignedOffset/R (0.00s) --- PASS: TestCTRDecryptionWithNonBlockAlignedOffset/V (0.00s) --- PASS: TestCTRDecryptionWithNonBlockAlignedOffset/a (0.00s) --- PASS: TestCTRDecryptionWithNonBlockAlignedOffset/b (0.00s) --- PASS: TestCTRDecryptionWithNonBlockAlignedOffset/p (0.00s) --- PASS: TestCTRDecryptionWithNonBlockAlignedOffset/q (0.00s) --- PASS: TestCTRDecryptionWithNonBlockAlignedOffset/¥ (0.00s) --- PASS: TestCTRDecryptionWithNonBlockAlignedOffset/ȵ (0.00s) === RUN TestCTRRangeRequestSimulation === RUN TestCTRRangeRequestSimulation/First_byte === RUN TestCTRRangeRequestSimulation/First_100_bytes === RUN TestCTRRangeRequestSimulation/Mid-block_range === RUN TestCTRRangeRequestSimulation/Single_mid-block_byte === RUN TestCTRRangeRequestSimulation/Cross-block_range === RUN TestCTRRangeRequestSimulation/Large_range === RUN TestCTRRangeRequestSimulation/Tail_range --- PASS: TestCTRRangeRequestSimulation (0.00s) --- PASS: TestCTRRangeRequestSimulation/First_byte (0.00s) --- PASS: TestCTRRangeRequestSimulation/First_100_bytes (0.00s) --- PASS: TestCTRRangeRequestSimulation/Mid-block_range (0.00s) --- PASS: TestCTRRangeRequestSimulation/Single_mid-block_byte (0.00s) --- PASS: TestCTRRangeRequestSimulation/Cross-block_range (0.00s) --- PASS: TestCTRRangeRequestSimulation/Large_range (0.00s) --- PASS: TestCTRRangeRequestSimulation/Tail_range (0.00s) === RUN TestCTRDecryptionWithIOReader === RUN TestCTRDecryptionWithIOReader/A === RUN TestCTRDecryptionWithIOReader/F === RUN TestCTRDecryptionWithIOReader/K === RUN TestCTRDecryptionWithIOReader/Q === RUN TestCTRDecryptionWithIOReader/R === RUN TestCTRDecryptionWithIOReader/_ --- PASS: TestCTRDecryptionWithIOReader (0.00s) --- PASS: TestCTRDecryptionWithIOReader/A (0.00s) --- PASS: TestCTRDecryptionWithIOReader/F (0.00s) --- PASS: TestCTRDecryptionWithIOReader/K (0.00s) --- PASS: TestCTRDecryptionWithIOReader/Q (0.00s) --- PASS: TestCTRDecryptionWithIOReader/R (0.00s) --- PASS: TestCTRDecryptionWithIOReader/_ (0.00s) === RUN TestSSES3EndToEndSmallFile === RUN TestSSES3EndToEndSmallFile/tiny_file_(10_bytes) === RUN TestSSES3EndToEndSmallFile/small_file_(50_bytes) === RUN TestSSES3EndToEndSmallFile/medium_file_(256_bytes) --- PASS: TestSSES3EndToEndSmallFile (0.00s) --- PASS: TestSSES3EndToEndSmallFile/tiny_file_(10_bytes) (0.00s) --- PASS: TestSSES3EndToEndSmallFile/small_file_(50_bytes) (0.00s) --- PASS: TestSSES3EndToEndSmallFile/medium_file_(256_bytes) (0.00s) === RUN TestSSES3EndToEndChunkedFile --- PASS: TestSSES3EndToEndChunkedFile (0.00s) === RUN TestSSES3EndToEndWithDetectPrimaryType === RUN TestSSES3EndToEndWithDetectPrimaryType/Inline_SSE-S3_file_(no_chunks) === RUN TestSSES3EndToEndWithDetectPrimaryType/Single_chunk_SSE-S3_file === RUN TestSSES3EndToEndWithDetectPrimaryType/SSE-KMS_file_(has_KMS_key_ID) --- PASS: TestSSES3EndToEndWithDetectPrimaryType (0.00s) --- PASS: TestSSES3EndToEndWithDetectPrimaryType/Inline_SSE-S3_file_(no_chunks) (0.00s) --- PASS: TestSSES3EndToEndWithDetectPrimaryType/Single_chunk_SSE-S3_file (0.00s) --- PASS: TestSSES3EndToEndWithDetectPrimaryType/SSE-KMS_file_(has_KMS_key_ID) (0.00s) === RUN TestBuildMultipartSSES3Reader_PerChunkKeys --- PASS: TestBuildMultipartSSES3Reader_PerChunkKeys (0.00s) === RUN TestBuildMultipartSSES3Reader_InvalidIVLength === RUN TestBuildMultipartSSES3Reader_InvalidIVLength/missing_IV === RUN TestBuildMultipartSSES3Reader_InvalidIVLength/short_IV --- PASS: TestBuildMultipartSSES3Reader_InvalidIVLength (0.00s) --- PASS: TestBuildMultipartSSES3Reader_InvalidIVLength/missing_IV (0.00s) --- PASS: TestBuildMultipartSSES3Reader_InvalidIVLength/short_IV (0.00s) === RUN TestBuildMultipartSSES3Reader_RejectsBadChunkBeforeAnyFetch --- PASS: TestBuildMultipartSSES3Reader_RejectsBadChunkBeforeAnyFetch (0.00s) === RUN TestSSES3MultipartChunkViewDecryption === RUN TestSSES3MultipartChunkViewDecryption/Part_1 === RUN TestSSES3MultipartChunkViewDecryption/Part_2 --- PASS: TestSSES3MultipartChunkViewDecryption (0.00s) --- PASS: TestSSES3MultipartChunkViewDecryption/Part_1 (0.00s) --- PASS: TestSSES3MultipartChunkViewDecryption/Part_2 (0.00s) === RUN TestSSES3SinglePartChunkViewDecryption --- PASS: TestSSES3SinglePartChunkViewDecryption (0.00s) === RUN TestSSES3IVOffsetCalculation === RUN TestSSES3IVOffsetCalculation/Part_1 === RUN TestSSES3IVOffsetCalculation/Part_2 === RUN TestSSES3IVOffsetCalculation/Part_3 === RUN TestSSES3IVOffsetCalculation/Part_10 --- PASS: TestSSES3IVOffsetCalculation (0.00s) --- PASS: TestSSES3IVOffsetCalculation/Part_1 (0.00s) --- PASS: TestSSES3IVOffsetCalculation/Part_2 (0.00s) --- PASS: TestSSES3IVOffsetCalculation/Part_3 (0.00s) --- PASS: TestSSES3IVOffsetCalculation/Part_10 (0.00s) === RUN TestSSES3ChunkMetadataDetection === RUN TestSSES3ChunkMetadataDetection/Multipart_chunk_with_metadata === RUN TestSSES3ChunkMetadataDetection/Single-part_chunk_without_metadata === RUN TestSSES3ChunkMetadataDetection/Non-SSE-S3_chunk --- PASS: TestSSES3ChunkMetadataDetection (0.00s) --- PASS: TestSSES3ChunkMetadataDetection/Multipart_chunk_with_metadata (0.00s) --- PASS: TestSSES3ChunkMetadataDetection/Single-part_chunk_without_metadata (0.00s) --- PASS: TestSSES3ChunkMetadataDetection/Non-SSE-S3_chunk (0.00s) === RUN TestSSES3EncryptionConsistency --- PASS: TestSSES3EncryptionConsistency (0.00s) === RUN TestS3IAMIntegration_isSTSIssuer === RUN TestS3IAMIntegration_isSTSIssuer/exact_match_with_configured_issuer === RUN TestS3IAMIntegration_isSTSIssuer/similar_but_not_exact_issuer === RUN TestS3IAMIntegration_isSTSIssuer/substring_of_configured_issuer === RUN TestS3IAMIntegration_isSTSIssuer/contains_configured_issuer_as_substring === RUN TestS3IAMIntegration_isSTSIssuer/case_sensitive_-_different_case === RUN TestS3IAMIntegration_isSTSIssuer/Google_OIDC === RUN TestS3IAMIntegration_isSTSIssuer/Azure_AD === RUN TestS3IAMIntegration_isSTSIssuer/Auth0 === RUN TestS3IAMIntegration_isSTSIssuer/Keycloak === RUN TestS3IAMIntegration_isSTSIssuer/Empty_string --- PASS: TestS3IAMIntegration_isSTSIssuer (0.00s) --- PASS: TestS3IAMIntegration_isSTSIssuer/exact_match_with_configured_issuer (0.00s) --- PASS: TestS3IAMIntegration_isSTSIssuer/similar_but_not_exact_issuer (0.00s) --- PASS: TestS3IAMIntegration_isSTSIssuer/substring_of_configured_issuer (0.00s) --- PASS: TestS3IAMIntegration_isSTSIssuer/contains_configured_issuer_as_substring (0.00s) --- PASS: TestS3IAMIntegration_isSTSIssuer/case_sensitive_-_different_case (0.00s) --- PASS: TestS3IAMIntegration_isSTSIssuer/Google_OIDC (0.00s) --- PASS: TestS3IAMIntegration_isSTSIssuer/Azure_AD (0.00s) --- PASS: TestS3IAMIntegration_isSTSIssuer/Auth0 (0.00s) --- PASS: TestS3IAMIntegration_isSTSIssuer/Keycloak (0.00s) --- PASS: TestS3IAMIntegration_isSTSIssuer/Empty_string (0.00s) === RUN TestS3IAMIntegration_isSTSIssuer_NoSTSService --- PASS: TestS3IAMIntegration_isSTSIssuer_NoSTSService (0.00s) === RUN TestUpdateBucketConfigDoesNotMutateCacheOnPersistFailure W0505 12:12:53.776274 s3api_server.go:401 getFilerAddress: no filer addresses available E0505 12:12:53.776297 s3api_bucket_config.go:485 updateBucketConfig: failed to update bucket entry for cleanup-test-net: getOrCreateConnection : fail to dial : grpc: no transport security set (use grpc.WithTransportCredentials(insecure.NewCredentials()) explicitly or set credentials) --- PASS: TestUpdateBucketConfigDoesNotMutateCacheOnPersistFailure (0.00s) === RUN TestResolveLifecycleDefaultsFromFilerConf === RUN TestResolveLifecycleDefaultsFromFilerConf/parent_rule_replication_takes_precedence_over_filer_config === RUN TestResolveLifecycleDefaultsFromFilerConf/falls_back_to_filer_config_when_parent_rule_replication_empty === RUN TestResolveLifecycleDefaultsFromFilerConf/parent_rule_empty_when_no_matching_prefix_uses_filer_config === RUN TestResolveLifecycleDefaultsFromFilerConf/all_empty_when_no_parent_rule_and_no_filer_config === RUN TestResolveLifecycleDefaultsFromFilerConf/parent_rule_volume_growth_count_used_when_set === RUN TestResolveLifecycleDefaultsFromFilerConf/invalid_replication_returns_error --- PASS: TestResolveLifecycleDefaultsFromFilerConf (0.00s) --- PASS: TestResolveLifecycleDefaultsFromFilerConf/parent_rule_replication_takes_precedence_over_filer_config (0.00s) --- PASS: TestResolveLifecycleDefaultsFromFilerConf/falls_back_to_filer_config_when_parent_rule_replication_empty (0.00s) --- PASS: TestResolveLifecycleDefaultsFromFilerConf/parent_rule_empty_when_no_matching_prefix_uses_filer_config (0.00s) --- PASS: TestResolveLifecycleDefaultsFromFilerConf/all_empty_when_no_parent_rule_and_no_filer_config (0.00s) --- PASS: TestResolveLifecycleDefaultsFromFilerConf/parent_rule_volume_growth_count_used_when_set (0.00s) --- PASS: TestResolveLifecycleDefaultsFromFilerConf/invalid_replication_returns_error (0.00s) === RUN TestGetBucketLifecycleConfigurationHandlerUsesStoredLifecycleConfig --- PASS: TestGetBucketLifecycleConfigurationHandlerUsesStoredLifecycleConfig (0.00s) === RUN TestGetBucketLifecycleConfigurationHandlerDefaultsTransitionMinimumObjectSize --- PASS: TestGetBucketLifecycleConfigurationHandlerDefaultsTransitionMinimumObjectSize (0.00s) === RUN TestPutBucketLifecycleConfigurationHandlerRejectsOversizedBody W0505 12:12:53.776871 s3api_bucket_handlers.go:913 PutBucketLifecycleConfigurationHandler read body: http: request body too large --- PASS: TestPutBucketLifecycleConfigurationHandlerRejectsOversizedBody (0.00s) === RUN TestPutBucketLifecycleConfigurationHandlerMapsReadErrorsToInvalidRequest W0505 12:12:53.776922 s3api_bucket_handlers.go:913 PutBucketLifecycleConfigurationHandler read body: read failed --- PASS: TestPutBucketLifecycleConfigurationHandlerMapsReadErrorsToInvalidRequest (0.00s) === RUN TestShouldSkipTTLFastPathForVersionedBuckets === RUN TestShouldSkipTTLFastPathForVersionedBuckets/versioning_enabled_skips_ttl === RUN TestShouldSkipTTLFastPathForVersionedBuckets/versioning_suspended_skips_ttl === RUN TestShouldSkipTTLFastPathForVersionedBuckets/unversioned_allows_ttl --- PASS: TestShouldSkipTTLFastPathForVersionedBuckets (0.00s) --- PASS: TestShouldSkipTTLFastPathForVersionedBuckets/versioning_enabled_skips_ttl (0.00s) --- PASS: TestShouldSkipTTLFastPathForVersionedBuckets/versioning_suspended_skips_ttl (0.00s) --- PASS: TestShouldSkipTTLFastPathForVersionedBuckets/unversioned_allows_ttl (0.00s) === RUN TestBucketMetadataStruct --- PASS: TestBucketMetadataStruct (0.00s) === RUN TestBucketMetadataUpdatePattern --- PASS: TestBucketMetadataUpdatePattern (0.00s) === RUN TestBucketMetadataHelperFunctions --- PASS: TestBucketMetadataHelperFunctions (0.00s) === RUN TestBuildResourceARN === RUN TestBuildResourceARN/bucket_only === RUN TestBuildResourceARN/bucket_with_slash === RUN TestBuildResourceARN/bucket_and_object === RUN TestBuildResourceARN/bucket_and_object_with_leading_slash --- PASS: TestBuildResourceARN (0.00s) --- PASS: TestBuildResourceARN/bucket_only (0.00s) --- PASS: TestBuildResourceARN/bucket_with_slash (0.00s) --- PASS: TestBuildResourceARN/bucket_and_object (0.00s) --- PASS: TestBuildResourceARN/bucket_and_object_with_leading_slash (0.00s) === RUN TestBuildPrincipalARN === RUN TestBuildPrincipalARN/nil_identity_(anonymous) === RUN TestBuildPrincipalARN/explicit_principal_ARN === RUN TestBuildPrincipalARN/anonymous_user_by_name === RUN TestBuildPrincipalARN/anonymous_user_by_account_ID === RUN TestBuildPrincipalARN/identity_with_account_and_name === RUN TestBuildPrincipalARN/identity_without_account_ID === RUN TestBuildPrincipalARN/identity_without_name --- PASS: TestBuildPrincipalARN (0.00s) --- PASS: TestBuildPrincipalARN/nil_identity_(anonymous) (0.00s) --- PASS: TestBuildPrincipalARN/explicit_principal_ARN (0.00s) --- PASS: TestBuildPrincipalARN/anonymous_user_by_name (0.00s) --- PASS: TestBuildPrincipalARN/anonymous_user_by_account_ID (0.00s) --- PASS: TestBuildPrincipalARN/identity_with_account_and_name (0.00s) --- PASS: TestBuildPrincipalARN/identity_without_account_ID (0.00s) --- PASS: TestBuildPrincipalARN/identity_without_name (0.00s) === RUN TestLimit --- PASS: TestLimit (0.00s) === RUN TestClassifyDomainNames === RUN TestClassifyDomainNames/Mixed_path-style_and_virtual-host_with_single_parent === RUN TestClassifyDomainNames/Multiple_subdomains_with_same_parent === RUN TestClassifyDomainNames/Subdomain_without_parent_in_list === RUN TestClassifyDomainNames/Only_top-level_domain === RUN TestClassifyDomainNames/Multiple_independent_domains === RUN TestClassifyDomainNames/Mixed_with_nested_levels === RUN TestClassifyDomainNames/Domain_without_dot === RUN TestClassifyDomainNames/Empty_list === RUN TestClassifyDomainNames/Mixed_localhost_and_domain === RUN TestClassifyDomainNames/Three-level_subdomain_hierarchy === RUN TestClassifyDomainNames/Real-world_example_from_issue_#7356 --- PASS: TestClassifyDomainNames (0.00s) --- PASS: TestClassifyDomainNames/Mixed_path-style_and_virtual-host_with_single_parent (0.00s) --- PASS: TestClassifyDomainNames/Multiple_subdomains_with_same_parent (0.00s) --- PASS: TestClassifyDomainNames/Subdomain_without_parent_in_list (0.00s) --- PASS: TestClassifyDomainNames/Only_top-level_domain (0.00s) --- PASS: TestClassifyDomainNames/Multiple_independent_domains (0.00s) --- PASS: TestClassifyDomainNames/Mixed_with_nested_levels (0.00s) --- PASS: TestClassifyDomainNames/Domain_without_dot (0.00s) --- PASS: TestClassifyDomainNames/Empty_list (0.00s) --- PASS: TestClassifyDomainNames/Mixed_localhost_and_domain (0.00s) --- PASS: TestClassifyDomainNames/Three-level_subdomain_hierarchy (0.00s) --- PASS: TestClassifyDomainNames/Real-world_example_from_issue_#7356 (0.00s) === RUN TestClassifyDomainNamesOrder === RUN TestClassifyDomainNamesOrder/Parent_before_child === RUN TestClassifyDomainNamesOrder/Child_before_parent === RUN TestClassifyDomainNamesOrder/Mixed_order_with_multiple_children --- PASS: TestClassifyDomainNamesOrder (0.00s) --- PASS: TestClassifyDomainNamesOrder/Parent_before_child (0.00s) --- PASS: TestClassifyDomainNamesOrder/Child_before_parent (0.00s) --- PASS: TestClassifyDomainNamesOrder/Mixed_order_with_multiple_children (0.00s) === RUN TestClassifyDomainNamesEdgeCases === RUN TestClassifyDomainNamesEdgeCases/Duplicate_domains === RUN TestClassifyDomainNamesEdgeCases/Very_long_domain_name === RUN TestClassifyDomainNamesEdgeCases/Similar_but_different_domains === RUN TestClassifyDomainNamesEdgeCases/IP_address_as_domain --- PASS: TestClassifyDomainNamesEdgeCases (0.00s) --- PASS: TestClassifyDomainNamesEdgeCases/Duplicate_domains (0.00s) --- PASS: TestClassifyDomainNamesEdgeCases/Very_long_domain_name (0.00s) --- PASS: TestClassifyDomainNamesEdgeCases/Similar_but_different_domains (0.00s) --- PASS: TestClassifyDomainNamesEdgeCases/IP_address_as_domain (0.00s) === RUN TestClassifyDomainNamesUseCases === RUN TestClassifyDomainNamesUseCases/Issue_#7356_-_Prometheus_blackbox_exporter_scenario === RUN TestClassifyDomainNamesUseCases/Multi-environment_setup === RUN TestClassifyDomainNamesUseCases/Mixed_production_setup --- PASS: TestClassifyDomainNamesUseCases (0.00s) --- PASS: TestClassifyDomainNamesUseCases/Issue_#7356_-_Prometheus_blackbox_exporter_scenario (0.00s) --- PASS: TestClassifyDomainNamesUseCases/Multi-environment_setup (0.00s) --- PASS: TestClassifyDomainNamesUseCases/Mixed_production_setup (0.00s) === RUN TestEmbeddedIamCreateUser --- PASS: TestEmbeddedIamCreateUser (0.00s) === RUN TestEmbeddedIamCreateUserDoesNotSaveAllUsers --- PASS: TestEmbeddedIamCreateUserDoesNotSaveAllUsers (0.00s) === RUN TestEmbeddedIamCreateUserSkipPersist --- PASS: TestEmbeddedIamCreateUserSkipPersist (0.00s) === RUN TestEmbeddedIamListUsers --- PASS: TestEmbeddedIamListUsers (0.00s) === RUN TestEmbeddedIamListAccessKeys --- PASS: TestEmbeddedIamListAccessKeys (0.00s) === RUN TestEmbeddedIamGetUser --- PASS: TestEmbeddedIamGetUser (0.00s) === RUN TestEmbeddedIamCreatePolicy --- PASS: TestEmbeddedIamCreatePolicy (0.00s) === RUN TestEmbeddedIamPutUserPolicy --- PASS: TestEmbeddedIamPutUserPolicy (0.00s) === RUN TestEmbeddedIamPutUserPolicyError E0505 12:12:53.778265 s3api_embedded_iam.go:2260 PutUserPolicy: the user with name InvalidUser cannot be found E0505 12:12:53.778268 s3api_embedded_iam.go:199 IAM Response the user with name InvalidUser cannot be found --- PASS: TestEmbeddedIamPutUserPolicyError (0.00s) === RUN TestEmbeddedIamGetUserPolicy --- PASS: TestEmbeddedIamGetUserPolicy (0.00s) === RUN TestEmbeddedIamDeleteUserPolicy --- PASS: TestEmbeddedIamDeleteUserPolicy (0.00s) === RUN TestEmbeddedIamDeleteUserPolicyUserNotFound E0505 12:12:53.778446 s3api_embedded_iam.go:199 IAM Response the user with name NonExistentUser cannot be found. --- PASS: TestEmbeddedIamDeleteUserPolicyUserNotFound (0.00s) === RUN TestEmbeddedIamListUserPolicies E0505 12:12:53.778529 s3api_embedded_iam.go:199 IAM Response the user with name NonExistentUser cannot be found. --- PASS: TestEmbeddedIamListUserPolicies (0.00s) === RUN TestEmbeddedIamGroupInlinePoliciesNotImplemented --- PASS: TestEmbeddedIamGroupInlinePoliciesNotImplemented (0.00s) === RUN TestEmbeddedIamAttachUserPolicy W0505 12:12:53.778624 auth_credentials.go:2318 IAM policy cache rebuild: skipping invalid policy "TestManagedPolicy": invalid policy: invalid policy: policy must contain at least one statement W0505 12:12:53.778635 auth_credentials.go:2318 IAM policy cache rebuild: skipping invalid policy "TestManagedPolicy": invalid policy: invalid policy: policy must contain at least one statement --- PASS: TestEmbeddedIamAttachUserPolicy (0.00s) === RUN TestEmbeddedIamAttachUserPolicyRefreshesIAM --- PASS: TestEmbeddedIamAttachUserPolicyRefreshesIAM (0.00s) === RUN TestEmbeddedIamAttachUserPolicyNoSuchPolicy E0505 12:12:53.778796 s3api_embedded_iam.go:199 IAM Response policy DoesNotExist not found --- PASS: TestEmbeddedIamAttachUserPolicyNoSuchPolicy (0.00s) === RUN TestEmbeddedIamDetachUserPolicy W0505 12:12:53.778886 auth_credentials.go:2318 IAM policy cache rebuild: skipping invalid policy "TestManagedPolicy": invalid policy: invalid policy: policy must contain at least one statement W0505 12:12:53.778891 auth_credentials.go:2318 IAM policy cache rebuild: skipping invalid policy "KeepPolicy": invalid policy: invalid policy: policy must contain at least one statement W0505 12:12:53.778901 auth_credentials.go:2318 IAM policy cache rebuild: skipping invalid policy "TestManagedPolicy": invalid policy: invalid policy: policy must contain at least one statement W0505 12:12:53.778905 auth_credentials.go:2318 IAM policy cache rebuild: skipping invalid policy "KeepPolicy": invalid policy: invalid policy: policy must contain at least one statement --- PASS: TestEmbeddedIamDetachUserPolicy (0.00s) === RUN TestEmbeddedIamDeletePolicyInUse E0505 12:12:53.778971 s3api_embedded_iam.go:2252 DeletePolicy: policy TestPolicy is attached to user TestUser E0505 12:12:53.778973 s3api_embedded_iam.go:199 IAM Response policy TestPolicy is attached to user TestUser --- PASS: TestEmbeddedIamDeletePolicyInUse (0.00s) === RUN TestEmbeddedIamAttachAlreadyAttachedPolicy W0505 12:12:53.779039 auth_credentials.go:2318 IAM policy cache rebuild: skipping invalid policy "TestManagedPolicy": invalid policy: invalid policy: policy must contain at least one statement --- PASS: TestEmbeddedIamAttachAlreadyAttachedPolicy (0.00s) === RUN TestEmbeddedIamDetachNotAttachedPolicy E0505 12:12:53.779419 s3api_embedded_iam.go:199 IAM Response policy MissingPolicy not attached to user TestUser --- PASS: TestEmbeddedIamDetachNotAttachedPolicy (0.00s) === RUN TestEmbeddedIamAttachPolicyLimitExceeded E0505 12:12:53.779514 s3api_embedded_iam.go:199 IAM Response cannot attach more than 10 managed policies to user TestUser --- PASS: TestEmbeddedIamAttachPolicyLimitExceeded (0.00s) === RUN TestEmbeddedIamListAttachedUserPolicies --- PASS: TestEmbeddedIamListAttachedUserPolicies (0.00s) === RUN TestEmbeddedIamUpdateUser --- PASS: TestEmbeddedIamUpdateUser (0.00s) === RUN TestEmbeddedIamUpdateUserPreservesInlinePolicies --- PASS: TestEmbeddedIamUpdateUserPreservesInlinePolicies (0.00s) === RUN TestEmbeddedIamDeleteUser --- PASS: TestEmbeddedIamDeleteUser (0.00s) === RUN TestEmbeddedIamCreateAccessKey --- PASS: TestEmbeddedIamCreateAccessKey (0.00s) === RUN TestEmbeddedIamCreateAccessKeyRejectsMissingUser E0505 12:12:53.779959 s3api_embedded_iam.go:2235 CreateAccessKey: the user with name GhostUser cannot be found. E0505 12:12:53.779961 s3api_embedded_iam.go:199 IAM Response the user with name GhostUser cannot be found. --- PASS: TestEmbeddedIamCreateAccessKeyRejectsMissingUser (0.00s) === RUN TestEmbeddedIamCreateAccessKeyWithCallerSuppliedKeys --- PASS: TestEmbeddedIamCreateAccessKeyWithCallerSuppliedKeys (0.00s) === RUN TestEmbeddedIamCreateAccessKeyRejectsWeakKeys E0505 12:12:53.780046 s3api_embedded_iam.go:2235 CreateAccessKey: AccessKeyId must be 4 to 128 alphanumeric characters E0505 12:12:53.780048 s3api_embedded_iam.go:199 IAM Response AccessKeyId must be 4 to 128 alphanumeric characters E0505 12:12:53.780060 s3api_embedded_iam.go:2235 CreateAccessKey: SecretAccessKey must be between 8 and 128 characters E0505 12:12:53.780061 s3api_embedded_iam.go:199 IAM Response SecretAccessKey must be between 8 and 128 characters E0505 12:12:53.780071 s3api_embedded_iam.go:2235 CreateAccessKey: AccessKeyId must be 4 to 128 alphanumeric characters E0505 12:12:53.780073 s3api_embedded_iam.go:199 IAM Response AccessKeyId must be 4 to 128 alphanumeric characters --- PASS: TestEmbeddedIamCreateAccessKeyRejectsWeakKeys (0.00s) === RUN TestEmbeddedIamCreateAccessKeyRejectsCollision E0505 12:12:53.780106 s3api_embedded_iam.go:2235 CreateAccessKey: AccessKeyId is already in use E0505 12:12:53.780108 s3api_embedded_iam.go:199 IAM Response AccessKeyId is already in use --- PASS: TestEmbeddedIamCreateAccessKeyRejectsCollision (0.00s) === RUN TestEmbeddedIamCreateAccessKeyRejectsPartialSupply E0505 12:12:53.780148 s3api_embedded_iam.go:2235 CreateAccessKey: AccessKeyId and SecretAccessKey must be supplied together E0505 12:12:53.780150 s3api_embedded_iam.go:199 IAM Response AccessKeyId and SecretAccessKey must be supplied together E0505 12:12:53.780164 s3api_embedded_iam.go:2235 CreateAccessKey: AccessKeyId and SecretAccessKey must be supplied together E0505 12:12:53.780165 s3api_embedded_iam.go:199 IAM Response AccessKeyId and SecretAccessKey must be supplied together --- PASS: TestEmbeddedIamCreateAccessKeyRejectsPartialSupply (0.00s) === RUN TestEmbeddedIamCreateAccessKeyBoundary E0505 12:12:53.780211 s3api_embedded_iam.go:2235 CreateAccessKey: AccessKeyId must be 4 to 128 alphanumeric characters E0505 12:12:53.780214 s3api_embedded_iam.go:199 IAM Response AccessKeyId must be 4 to 128 alphanumeric characters E0505 12:12:53.780260 s3api_embedded_iam.go:2235 CreateAccessKey: AccessKeyId must be 4 to 128 alphanumeric characters E0505 12:12:53.780262 s3api_embedded_iam.go:199 IAM Response AccessKeyId must be 4 to 128 alphanumeric characters E0505 12:12:53.780285 s3api_embedded_iam.go:2235 CreateAccessKey: SecretAccessKey must be between 8 and 128 characters E0505 12:12:53.780290 s3api_embedded_iam.go:199 IAM Response SecretAccessKey must be between 8 and 128 characters E0505 12:12:53.780328 s3api_embedded_iam.go:2235 CreateAccessKey: SecretAccessKey must be between 8 and 128 characters E0505 12:12:53.780330 s3api_embedded_iam.go:199 IAM Response SecretAccessKey must be between 8 and 128 characters --- PASS: TestEmbeddedIamCreateAccessKeyBoundary (0.00s) === RUN TestEmbeddedIamDeleteAccessKey --- PASS: TestEmbeddedIamDeleteAccessKey (0.00s) === RUN TestEmbeddedIamHandleImplicitUsername --- PASS: TestEmbeddedIamHandleImplicitUsername (0.00s) === RUN TestEmbeddedIamFullWorkflow === RUN TestEmbeddedIamFullWorkflow/CreateUser === RUN TestEmbeddedIamFullWorkflow/CreateAccessKey === RUN TestEmbeddedIamFullWorkflow/PutUserPolicy === RUN TestEmbeddedIamFullWorkflow/ListUsers === RUN TestEmbeddedIamFullWorkflow/DeleteUser --- PASS: TestEmbeddedIamFullWorkflow (0.00s) --- PASS: TestEmbeddedIamFullWorkflow/CreateUser (0.00s) --- PASS: TestEmbeddedIamFullWorkflow/CreateAccessKey (0.00s) --- PASS: TestEmbeddedIamFullWorkflow/PutUserPolicy (0.00s) --- PASS: TestEmbeddedIamFullWorkflow/ListUsers (0.00s) --- PASS: TestEmbeddedIamFullWorkflow/DeleteUser (0.00s) === RUN TestIamStringSlicesEqual === RUN TestIamStringSlicesEqual/both_empty === RUN TestIamStringSlicesEqual/both_nil === RUN TestIamStringSlicesEqual/same_elements_same_order === RUN TestIamStringSlicesEqual/same_elements_different_order === RUN TestIamStringSlicesEqual/different_lengths === RUN TestIamStringSlicesEqual/different_elements === RUN TestIamStringSlicesEqual/one_empty_one_not === RUN TestIamStringSlicesEqual/duplicates_same --- PASS: TestIamStringSlicesEqual (0.00s) --- PASS: TestIamStringSlicesEqual/both_empty (0.00s) --- PASS: TestIamStringSlicesEqual/both_nil (0.00s) --- PASS: TestIamStringSlicesEqual/same_elements_same_order (0.00s) --- PASS: TestIamStringSlicesEqual/same_elements_different_order (0.00s) --- PASS: TestIamStringSlicesEqual/different_lengths (0.00s) --- PASS: TestIamStringSlicesEqual/different_elements (0.00s) --- PASS: TestIamStringSlicesEqual/one_empty_one_not (0.00s) --- PASS: TestIamStringSlicesEqual/duplicates_same (0.00s) === RUN TestIamHash --- PASS: TestIamHash (0.00s) === RUN TestIamStringWithCharset --- PASS: TestIamStringWithCharset (0.00s) === RUN TestIamMapToStatementAction === RUN TestIamMapToStatementAction/* === RUN TestIamMapToStatementAction/Get* === RUN TestIamMapToStatementAction/Put* === RUN TestIamMapToStatementAction/List* === RUN TestIamMapToStatementAction/Tagging* === RUN TestIamMapToStatementAction/DeleteBucket* === RUN TestIamMapToStatementAction/PutBucketAcl === RUN TestIamMapToStatementAction/GetBucketAcl === RUN TestIamMapToStatementAction/InvalidAction --- PASS: TestIamMapToStatementAction (0.00s) --- PASS: TestIamMapToStatementAction/* (0.00s) --- PASS: TestIamMapToStatementAction/Get* (0.00s) --- PASS: TestIamMapToStatementAction/Put* (0.00s) --- PASS: TestIamMapToStatementAction/List* (0.00s) --- PASS: TestIamMapToStatementAction/Tagging* (0.00s) --- PASS: TestIamMapToStatementAction/DeleteBucket* (0.00s) --- PASS: TestIamMapToStatementAction/PutBucketAcl (0.00s) --- PASS: TestIamMapToStatementAction/GetBucketAcl (0.00s) --- PASS: TestIamMapToStatementAction/InvalidAction (0.00s) === RUN TestIamMapToIdentitiesAction === RUN TestIamMapToIdentitiesAction/Admin === RUN TestIamMapToIdentitiesAction/Read === RUN TestIamMapToIdentitiesAction/Write === RUN TestIamMapToIdentitiesAction/List === RUN TestIamMapToIdentitiesAction/Tagging === RUN TestIamMapToIdentitiesAction/Unknown --- PASS: TestIamMapToIdentitiesAction (0.00s) --- PASS: TestIamMapToIdentitiesAction/Admin (0.00s) --- PASS: TestIamMapToIdentitiesAction/Read (0.00s) --- PASS: TestIamMapToIdentitiesAction/Write (0.00s) --- PASS: TestIamMapToIdentitiesAction/List (0.00s) --- PASS: TestIamMapToIdentitiesAction/Tagging (0.00s) --- PASS: TestIamMapToIdentitiesAction/Unknown (0.00s) === RUN TestEmbeddedIamGetUserNotFound E0505 12:12:53.781152 s3api_embedded_iam.go:199 IAM Response the user with name NonExistentUser cannot be found. --- PASS: TestEmbeddedIamGetUserNotFound (0.00s) === RUN TestEmbeddedIamDeleteUserNotFound E0505 12:12:53.781188 s3api_embedded_iam.go:199 IAM Response the user with name NonExistentUser cannot be found. --- PASS: TestEmbeddedIamDeleteUserNotFound (0.00s) === RUN TestEmbeddedIamUpdateUserNotFound E0505 12:12:53.781218 s3api_embedded_iam.go:199 IAM Response the user with name NonExistentUser cannot be found. --- PASS: TestEmbeddedIamUpdateUserNotFound (0.00s) === RUN TestEmbeddedIamCreateAccessKeyForExistingUser --- PASS: TestEmbeddedIamCreateAccessKeyForExistingUser (0.00s) === RUN TestEmbeddedIamPutGetUserPolicyRoundTrip --- PASS: TestEmbeddedIamPutGetUserPolicyRoundTrip (0.00s) === RUN TestEmbeddedIamGetUserPolicyFallback --- PASS: TestEmbeddedIamGetUserPolicyFallback (0.00s) === RUN TestEmbeddedIamGetUserPolicyUserNotFound E0505 12:12:53.781368 s3api_embedded_iam.go:199 IAM Response the user with name NonExistentUser cannot be found. --- PASS: TestEmbeddedIamGetUserPolicyUserNotFound (0.00s) === RUN TestEmbeddedIamCreatePolicyMalformed E0505 12:12:53.781412 s3api_embedded_iam.go:2244 CreatePolicy: invalid character 'i' looking for beginning of value E0505 12:12:53.781414 s3api_embedded_iam.go:199 IAM Response invalid character 'i' looking for beginning of value --- PASS: TestEmbeddedIamCreatePolicyMalformed (0.00s) === RUN TestEmbeddedIamListAccessKeysForUser --- PASS: TestEmbeddedIamListAccessKeysForUser (0.00s) === RUN TestEmbeddedIamNotImplementedAction E0505 12:12:53.781512 s3api_embedded_iam.go:199 IAM Response A header you provided implies functionality that is not implemented --- PASS: TestEmbeddedIamNotImplementedAction (0.00s) === RUN TestGetPolicyDocument --- PASS: TestGetPolicyDocument (0.00s) === RUN TestEmbeddedIamGetActionsFromPolicy --- PASS: TestEmbeddedIamGetActionsFromPolicy (0.00s) === RUN TestEmbeddedIamPutUserPolicyAllResourceWildcard --- PASS: TestEmbeddedIamPutUserPolicyAllResourceWildcard (0.00s) === RUN TestEmbeddedIamSetUserStatus === RUN TestEmbeddedIamSetUserStatus/DisableUser === RUN TestEmbeddedIamSetUserStatus/EnableUser --- PASS: TestEmbeddedIamSetUserStatus (0.00s) --- PASS: TestEmbeddedIamSetUserStatus/DisableUser (0.00s) --- PASS: TestEmbeddedIamSetUserStatus/EnableUser (0.00s) === RUN TestEmbeddedIamSetUserStatusErrors === RUN TestEmbeddedIamSetUserStatusErrors/UserNotFound E0505 12:12:53.781681 s3api_embedded_iam.go:199 IAM Response the user with name NonExistentUser cannot be found. === RUN TestEmbeddedIamSetUserStatusErrors/InvalidStatus E0505 12:12:53.781702 s3api_embedded_iam.go:199 IAM Response Status must be 'Active' or 'Inactive' === RUN TestEmbeddedIamSetUserStatusErrors/MissingUserName E0505 12:12:53.781720 s3api_embedded_iam.go:199 IAM Response UserName is required === RUN TestEmbeddedIamSetUserStatusErrors/MissingStatus E0505 12:12:53.781741 s3api_embedded_iam.go:199 IAM Response Status parameter is required --- PASS: TestEmbeddedIamSetUserStatusErrors (0.00s) --- PASS: TestEmbeddedIamSetUserStatusErrors/UserNotFound (0.00s) --- PASS: TestEmbeddedIamSetUserStatusErrors/InvalidStatus (0.00s) --- PASS: TestEmbeddedIamSetUserStatusErrors/MissingUserName (0.00s) --- PASS: TestEmbeddedIamSetUserStatusErrors/MissingStatus (0.00s) === RUN TestEmbeddedIamUpdateAccessKey === RUN TestEmbeddedIamUpdateAccessKey/DeactivateAccessKey === RUN TestEmbeddedIamUpdateAccessKey/ActivateAccessKey --- PASS: TestEmbeddedIamUpdateAccessKey (0.00s) --- PASS: TestEmbeddedIamUpdateAccessKey/DeactivateAccessKey (0.00s) --- PASS: TestEmbeddedIamUpdateAccessKey/ActivateAccessKey (0.00s) === RUN TestEmbeddedIamUpdateAccessKeyErrors === RUN TestEmbeddedIamUpdateAccessKeyErrors/AccessKeyNotFound E0505 12:12:53.781845 s3api_embedded_iam.go:199 IAM Response the access key with id NONEXISTENT123 for user TestUser cannot be found === RUN TestEmbeddedIamUpdateAccessKeyErrors/InvalidStatus E0505 12:12:53.781865 s3api_embedded_iam.go:199 IAM Response Status must be 'Active' or 'Inactive' === RUN TestEmbeddedIamUpdateAccessKeyErrors/MissingUserName E0505 12:12:53.781885 s3api_embedded_iam.go:199 IAM Response UserName is required === RUN TestEmbeddedIamUpdateAccessKeyErrors/MissingAccessKeyId E0505 12:12:53.781906 s3api_embedded_iam.go:199 IAM Response AccessKeyId is required === RUN TestEmbeddedIamUpdateAccessKeyErrors/UserNotFound E0505 12:12:53.781925 s3api_embedded_iam.go:199 IAM Response the user with name NonExistentUser cannot be found. === RUN TestEmbeddedIamUpdateAccessKeyErrors/MissingStatus E0505 12:12:53.781945 s3api_embedded_iam.go:199 IAM Response Status parameter is required --- PASS: TestEmbeddedIamUpdateAccessKeyErrors (0.00s) --- PASS: TestEmbeddedIamUpdateAccessKeyErrors/AccessKeyNotFound (0.00s) --- PASS: TestEmbeddedIamUpdateAccessKeyErrors/InvalidStatus (0.00s) --- PASS: TestEmbeddedIamUpdateAccessKeyErrors/MissingUserName (0.00s) --- PASS: TestEmbeddedIamUpdateAccessKeyErrors/MissingAccessKeyId (0.00s) --- PASS: TestEmbeddedIamUpdateAccessKeyErrors/UserNotFound (0.00s) --- PASS: TestEmbeddedIamUpdateAccessKeyErrors/MissingStatus (0.00s) === RUN TestEmbeddedIamListAccessKeysShowsStatus --- PASS: TestEmbeddedIamListAccessKeysShowsStatus (0.00s) === RUN TestDisabledUserLookupFails --- PASS: TestDisabledUserLookupFails (0.00s) === RUN TestInactiveAccessKeyLookupFails --- PASS: TestInactiveAccessKeyLookupFails (0.00s) === RUN TestAuthIamAuthenticatesBeforeParseForm --- PASS: TestAuthIamAuthenticatesBeforeParseForm (0.00s) === RUN TestOldCodeOrderWouldFail s3api_embedded_iam_test.go:2583: This demonstrates the bug: ParseForm before auth causes SignatureDoesNotMatch --- PASS: TestOldCodeOrderWouldFail (0.00s) === RUN TestEmbeddedIamExecuteAction --- PASS: TestEmbeddedIamExecuteAction (0.00s) === RUN TestEmbeddedIamReadOnly E0505 12:12:53.782209 s3api_embedded_iam.go:199 IAM Response IAM write operations are disabled on this server --- PASS: TestEmbeddedIamReadOnly (0.00s) === RUN TestCreateDestinationChunkPreservesEncryption === RUN TestCreateDestinationChunkPreservesEncryption/Encrypted_and_compressed_chunk === RUN TestCreateDestinationChunkPreservesEncryption/Only_encrypted_chunk === RUN TestCreateDestinationChunkPreservesEncryption/Only_compressed_chunk === RUN TestCreateDestinationChunkPreservesEncryption/Unencrypted_and_uncompressed_chunk --- PASS: TestCreateDestinationChunkPreservesEncryption (0.00s) --- PASS: TestCreateDestinationChunkPreservesEncryption/Encrypted_and_compressed_chunk (0.00s) --- PASS: TestCreateDestinationChunkPreservesEncryption/Only_encrypted_chunk (0.00s) --- PASS: TestCreateDestinationChunkPreservesEncryption/Only_compressed_chunk (0.00s) --- PASS: TestCreateDestinationChunkPreservesEncryption/Unencrypted_and_uncompressed_chunk (0.00s) === RUN TestEncryptedVolumeCopyScenario === RUN TestEncryptedVolumeCopyScenario/Scenario:_Copy_file_on_encrypted_volume_with_multiple_chunks s3api_encrypted_volume_copy_test.go:173: ✓ All chunk metadata properly preserved for encrypted volume copy scenario --- PASS: TestEncryptedVolumeCopyScenario (0.00s) --- PASS: TestEncryptedVolumeCopyScenario/Scenario:_Copy_file_on_encrypted_volume_with_multiple_chunks (0.00s) === RUN TestCheckGovernanceBypassPermissionResourceGeneration === RUN TestCheckGovernanceBypassPermissionResourceGeneration/simple_object === RUN TestCheckGovernanceBypassPermissionResourceGeneration/object_with_leading_slash === RUN TestCheckGovernanceBypassPermissionResourceGeneration/nested_object === RUN TestCheckGovernanceBypassPermissionResourceGeneration/empty_object === RUN TestCheckGovernanceBypassPermissionResourceGeneration/root_object --- PASS: TestCheckGovernanceBypassPermissionResourceGeneration (0.00s) --- PASS: TestCheckGovernanceBypassPermissionResourceGeneration/simple_object (0.00s) --- PASS: TestCheckGovernanceBypassPermissionResourceGeneration/object_with_leading_slash (0.00s) --- PASS: TestCheckGovernanceBypassPermissionResourceGeneration/nested_object (0.00s) --- PASS: TestCheckGovernanceBypassPermissionResourceGeneration/empty_object (0.00s) --- PASS: TestCheckGovernanceBypassPermissionResourceGeneration/root_object (0.00s) === RUN TestCheckGovernanceBypassPermissionActionGeneration === RUN TestCheckGovernanceBypassPermissionActionGeneration/bypass_action_generation === RUN TestCheckGovernanceBypassPermissionActionGeneration/leading_slash_handling --- PASS: TestCheckGovernanceBypassPermissionActionGeneration (0.00s) --- PASS: TestCheckGovernanceBypassPermissionActionGeneration/bypass_action_generation (0.00s) --- PASS: TestCheckGovernanceBypassPermissionActionGeneration/leading_slash_handling (0.00s) === RUN TestCheckGovernanceBypassPermissionErrorHandling === RUN TestCheckGovernanceBypassPermissionErrorHandling/empty_bucket s3api_governance_permissions_test.go:169: Generated resource path for Empty bucket should be handled gracefully: /test-object.txt === RUN TestCheckGovernanceBypassPermissionErrorHandling/special_characters s3api_governance_permissions_test.go:169: Generated resource path for Objects with special characters should be handled: test-bucket/test object with spaces.txt === RUN TestCheckGovernanceBypassPermissionErrorHandling/unicode_characters s3api_governance_permissions_test.go:169: Generated resource path for Objects with unicode characters should be handled: test-bucket/测试文件.txt --- PASS: TestCheckGovernanceBypassPermissionErrorHandling (0.00s) --- PASS: TestCheckGovernanceBypassPermissionErrorHandling/empty_bucket (0.00s) --- PASS: TestCheckGovernanceBypassPermissionErrorHandling/special_characters (0.00s) --- PASS: TestCheckGovernanceBypassPermissionErrorHandling/unicode_characters (0.00s) === RUN TestCheckGovernanceBypassPermissionIntegrationBehavior s3api_governance_permissions_test.go:177: Documentation test - describes expected behavior with full IAM integration --- SKIP: TestCheckGovernanceBypassPermissionIntegrationBehavior (0.00s) === RUN TestGovernanceBypassWithIAMPermission s3api_governance_permissions_test.go:206: Integration test requires full IAM setup - demonstrates expected behavior --- SKIP: TestGovernanceBypassWithIAMPermission (0.00s) === RUN TestGovernancePermissionIntegration s3api_governance_permissions_test.go:224: Integration test requires full IAM setup - demonstrates expected behavior --- SKIP: TestGovernancePermissionIntegration (0.00s) === RUN TestGovernanceBypassHeader === RUN TestGovernanceBypassHeader/bypass_header_true === RUN TestGovernanceBypassHeader/bypass_header_false === RUN TestGovernanceBypassHeader/bypass_header_empty === RUN TestGovernanceBypassHeader/bypass_header_invalid --- PASS: TestGovernanceBypassHeader (0.00s) --- PASS: TestGovernanceBypassHeader/bypass_header_true (0.00s) --- PASS: TestGovernanceBypassHeader/bypass_header_false (0.00s) --- PASS: TestGovernanceBypassHeader/bypass_header_empty (0.00s) --- PASS: TestGovernanceBypassHeader/bypass_header_invalid (0.00s) === RUN TestGovernanceRetentionModeChecking === RUN TestGovernanceRetentionModeChecking/compliance_mode_cannot_bypass === RUN TestGovernanceRetentionModeChecking/governance_mode_without_bypass === RUN TestGovernanceRetentionModeChecking/governance_mode_with_bypass_no_permission === RUN TestGovernanceRetentionModeChecking/governance_mode_with_bypass_and_permission --- PASS: TestGovernanceRetentionModeChecking (0.00s) --- PASS: TestGovernanceRetentionModeChecking/compliance_mode_cannot_bypass (0.00s) --- PASS: TestGovernanceRetentionModeChecking/governance_mode_without_bypass (0.00s) --- PASS: TestGovernanceRetentionModeChecking/governance_mode_with_bypass_no_permission (0.00s) --- PASS: TestGovernanceRetentionModeChecking/governance_mode_with_bypass_and_permission (0.00s) === RUN TestGovernancePermissionActionGeneration === RUN TestGovernancePermissionActionGeneration/bucket_and_object_action === RUN TestGovernancePermissionActionGeneration/bucket_only_action === RUN TestGovernancePermissionActionGeneration/nested_object_action --- PASS: TestGovernancePermissionActionGeneration (0.00s) --- PASS: TestGovernancePermissionActionGeneration/bucket_and_object_action (0.00s) --- PASS: TestGovernancePermissionActionGeneration/bucket_only_action (0.00s) --- PASS: TestGovernancePermissionActionGeneration/nested_object_action (0.00s) === RUN TestGovernancePermissionEndToEnd s3api_governance_permissions_test.go:406: End-to-end testing requires full S3 API server setup - demonstrates expected behavior --- SKIP: TestGovernancePermissionEndToEnd (0.00s) === RUN TestGovernancePermissionHTTPFlow === RUN TestGovernancePermissionHTTPFlow/bypass_header_true === RUN TestGovernancePermissionHTTPFlow/bypass_header_false === RUN TestGovernancePermissionHTTPFlow/bypass_header_missing --- PASS: TestGovernancePermissionHTTPFlow (0.00s) --- PASS: TestGovernancePermissionHTTPFlow/bypass_header_true (0.00s) --- PASS: TestGovernancePermissionHTTPFlow/bypass_header_false (0.00s) --- PASS: TestGovernancePermissionHTTPFlow/bypass_header_missing (0.00s) === RUN TestGovernancePermissionMethodCalls === RUN TestGovernancePermissionMethodCalls/delete_object_handler_pattern s3api_governance_permissions_test.go:482: Extracted bucket: , object: === RUN TestGovernancePermissionMethodCalls/put_object_handler_pattern s3api_governance_permissions_test.go:503: Extracted bucket: , object: --- PASS: TestGovernancePermissionMethodCalls (0.00s) --- PASS: TestGovernancePermissionMethodCalls/delete_object_handler_pattern (0.00s) --- PASS: TestGovernancePermissionMethodCalls/put_object_handler_pattern (0.00s) === RUN TestGovernanceBypassNotPermittedError === RUN TestGovernanceBypassNotPermittedError/governance_bypass_without_permission === RUN TestGovernanceBypassNotPermittedError/governance_bypass_with_permission === RUN TestGovernanceBypassNotPermittedError/governance_no_bypass --- PASS: TestGovernanceBypassNotPermittedError (0.00s) --- PASS: TestGovernanceBypassNotPermittedError/governance_bypass_without_permission (0.00s) --- PASS: TestGovernanceBypassNotPermittedError/governance_bypass_with_permission (0.00s) --- PASS: TestGovernanceBypassNotPermittedError/governance_no_bypass (0.00s) === RUN TestImplicitDirectoryBehaviorLogic === RUN TestImplicitDirectoryBehaviorLogic/Implicit_directory:_0-byte_file_with_children,_no_trailing_slash s3api_implicit_directory_test.go:143: ✓ Implicit directory: 0-byte file with children, no trailing slash: correctly returns 404 === RUN TestImplicitDirectoryBehaviorLogic/Implicit_directory:_actual_directory_with_children,_no_trailing_slash s3api_implicit_directory_test.go:143: ✓ Implicit directory: actual directory with children, no trailing slash: correctly returns 404 === RUN TestImplicitDirectoryBehaviorLogic/Explicit_directory_request:_trailing_slash s3api_implicit_directory_test.go:143: ✓ Explicit directory request: trailing slash: correctly returns 200 === RUN TestImplicitDirectoryBehaviorLogic/Empty_file:_0-byte_file_without_children s3api_implicit_directory_test.go:143: ✓ Empty file: 0-byte file without children: correctly returns 200 === RUN TestImplicitDirectoryBehaviorLogic/Empty_directory:_0-byte_directory_without_children s3api_implicit_directory_test.go:143: ✓ Empty directory: 0-byte directory without children: correctly returns 404 === RUN TestImplicitDirectoryBehaviorLogic/Regular_file:_non-zero_size s3api_implicit_directory_test.go:143: ✓ Regular file: non-zero size: correctly returns 200 === RUN TestImplicitDirectoryBehaviorLogic/Versioned_bucket:_implicit_directory_should_return_200 s3api_implicit_directory_test.go:143: ✓ Versioned bucket: implicit directory should return 200: correctly returns 200 === RUN TestImplicitDirectoryBehaviorLogic/PyArrow_directory_marker:_0-byte_with_children s3api_implicit_directory_test.go:143: ✓ PyArrow directory marker: 0-byte with children: correctly returns 404 --- PASS: TestImplicitDirectoryBehaviorLogic (0.00s) --- PASS: TestImplicitDirectoryBehaviorLogic/Implicit_directory:_0-byte_file_with_children,_no_trailing_slash (0.00s) --- PASS: TestImplicitDirectoryBehaviorLogic/Implicit_directory:_actual_directory_with_children,_no_trailing_slash (0.00s) --- PASS: TestImplicitDirectoryBehaviorLogic/Explicit_directory_request:_trailing_slash (0.00s) --- PASS: TestImplicitDirectoryBehaviorLogic/Empty_file:_0-byte_file_without_children (0.00s) --- PASS: TestImplicitDirectoryBehaviorLogic/Empty_directory:_0-byte_directory_without_children (0.00s) --- PASS: TestImplicitDirectoryBehaviorLogic/Regular_file:_non-zero_size (0.00s) --- PASS: TestImplicitDirectoryBehaviorLogic/Versioned_bucket:_implicit_directory_should_return_200 (0.00s) --- PASS: TestImplicitDirectoryBehaviorLogic/PyArrow_directory_marker:_0-byte_with_children (0.00s) === RUN TestHasChildrenLogic === RUN TestHasChildrenLogic/Directory_with_children s3api_implicit_directory_test.go:218: ✓ Directory with children: correctly returns true === RUN TestHasChildrenLogic/Empty_directory s3api_implicit_directory_test.go:218: ✓ Empty directory: correctly returns false === RUN TestHasChildrenLogic/Directory_with_leading_slash_in_prefix s3api_implicit_directory_test.go:218: ✓ Directory with leading slash in prefix: correctly returns true --- PASS: TestHasChildrenLogic (0.00s) --- PASS: TestHasChildrenLogic/Directory_with_children (0.00s) --- PASS: TestHasChildrenLogic/Empty_directory (0.00s) --- PASS: TestHasChildrenLogic/Directory_with_leading_slash_in_prefix (0.00s) === RUN TestImplicitDirectoryEdgeCases === RUN TestImplicitDirectoryEdgeCases/PyArrow_write_dataset_creates_0-byte_files s3api_implicit_directory_test.go:265: Scenario: PyArrow creates 'dataset' as 0-byte file, then writes 'dataset/file.parquet' s3api_implicit_directory_test.go:266: Expected: HEAD dataset → 404 (has children), s3fs uses LIST → correctly identifies as directory === RUN TestImplicitDirectoryEdgeCases/Filer_creates_actual_directories s3api_implicit_directory_test.go:265: Scenario: Filer creates 'dataset' as actual directory with IsDirectory=true s3api_implicit_directory_test.go:266: Expected: HEAD dataset → 404 (has children), s3fs uses LIST → correctly identifies as directory === RUN TestImplicitDirectoryEdgeCases/Empty_file_edge_case s3api_implicit_directory_test.go:265: Scenario: User creates 'empty.txt' as 0-byte file with no children s3api_implicit_directory_test.go:266: Expected: HEAD empty.txt → 200 (no children), s3fs correctly reports as file === RUN TestImplicitDirectoryEdgeCases/Explicit_directory_request s3api_implicit_directory_test.go:265: Scenario: User requests 'dataset/' with trailing slash s3api_implicit_directory_test.go:266: Expected: HEAD dataset/ → 200 (explicit directory request), normal directory behavior === RUN TestImplicitDirectoryEdgeCases/Versioned_bucket s3api_implicit_directory_test.go:265: Scenario: Bucket has versioning enabled s3api_implicit_directory_test.go:266: Expected: HEAD dataset → 200 (skip implicit dir check), versioned semantics apply === RUN TestImplicitDirectoryEdgeCases/AWS_S3_compatibility s3api_implicit_directory_test.go:265: Scenario: Only 'dataset/file.txt' exists, no marker at 'dataset' s3api_implicit_directory_test.go:266: Expected: HEAD dataset → 404 (object doesn't exist), matches AWS S3 behavior --- PASS: TestImplicitDirectoryEdgeCases (0.00s) --- PASS: TestImplicitDirectoryEdgeCases/PyArrow_write_dataset_creates_0-byte_files (0.00s) --- PASS: TestImplicitDirectoryEdgeCases/Filer_creates_actual_directories (0.00s) --- PASS: TestImplicitDirectoryEdgeCases/Empty_file_edge_case (0.00s) --- PASS: TestImplicitDirectoryEdgeCases/Explicit_directory_request (0.00s) --- PASS: TestImplicitDirectoryEdgeCases/Versioned_bucket (0.00s) --- PASS: TestImplicitDirectoryEdgeCases/AWS_S3_compatibility (0.00s) === RUN TestImplicitDirectoryIntegration s3api_implicit_directory_test.go:278: Integration test - run manually with: cd test/s3/parquet && make test-implicit-dir-with-server --- SKIP: TestImplicitDirectoryIntegration (0.00s) === RUN TestPrefixNormalizationInList === RUN TestPrefixNormalizationInList/simple_prefix === RUN TestPrefixNormalizationInList/leading_slash === RUN TestPrefixNormalizationInList/duplicate_slashes === RUN TestPrefixNormalizationInList/backslashes --- PASS: TestPrefixNormalizationInList (0.00s) --- PASS: TestPrefixNormalizationInList/simple_prefix (0.00s) --- PASS: TestPrefixNormalizationInList/leading_slash (0.00s) --- PASS: TestPrefixNormalizationInList/duplicate_slashes (0.00s) --- PASS: TestPrefixNormalizationInList/backslashes (0.00s) === RUN TestListPrefixConsistency --- PASS: TestListPrefixConsistency (0.00s) === RUN TestBuildMultipartSSEKMSReader_RejectsBadIVBeforeAnyFetch === RUN TestBuildMultipartSSEKMSReader_RejectsBadIVBeforeAnyFetch/missing_IV === RUN TestBuildMultipartSSEKMSReader_RejectsBadIVBeforeAnyFetch/empty_IV === RUN TestBuildMultipartSSEKMSReader_RejectsBadIVBeforeAnyFetch/short_IV === RUN TestBuildMultipartSSEKMSReader_RejectsBadIVBeforeAnyFetch/long_IV --- PASS: TestBuildMultipartSSEKMSReader_RejectsBadIVBeforeAnyFetch (0.00s) --- PASS: TestBuildMultipartSSEKMSReader_RejectsBadIVBeforeAnyFetch/missing_IV (0.00s) --- PASS: TestBuildMultipartSSEKMSReader_RejectsBadIVBeforeAnyFetch/empty_IV (0.00s) --- PASS: TestBuildMultipartSSEKMSReader_RejectsBadIVBeforeAnyFetch/short_IV (0.00s) --- PASS: TestBuildMultipartSSEKMSReader_RejectsBadIVBeforeAnyFetch/long_IV (0.00s) === RUN TestBuildMultipartSSEKMSReader_RejectsMissingMetadataBeforeAnyFetch --- PASS: TestBuildMultipartSSEKMSReader_RejectsMissingMetadataBeforeAnyFetch (0.00s) === RUN TestBuildMultipartSSEKMSReader_RejectsUnparseableMetadataBeforeAnyFetch --- PASS: TestBuildMultipartSSEKMSReader_RejectsUnparseableMetadataBeforeAnyFetch (0.00s) === RUN TestBuildMultipartSSEKMSReader_SortsByOffset --- PASS: TestBuildMultipartSSEKMSReader_SortsByOffset (0.00s) === RUN TestNextMarkerWithNestedPrefix === RUN TestNextMarkerWithNestedPrefix/nested_prefix_with_both_requestDir_and_prefix === RUN TestNextMarkerWithNestedPrefix/only_requestDir,_no_prefix === RUN TestNextMarkerWithNestedPrefix/no_requestDir,_only_prefix === RUN TestNextMarkerWithNestedPrefix/deeply_nested_prefix --- PASS: TestNextMarkerWithNestedPrefix (0.00s) --- PASS: TestNextMarkerWithNestedPrefix/nested_prefix_with_both_requestDir_and_prefix (0.00s) --- PASS: TestNextMarkerWithNestedPrefix/only_requestDir,_no_prefix (0.00s) --- PASS: TestNextMarkerWithNestedPrefix/no_requestDir,_only_prefix (0.00s) --- PASS: TestNextMarkerWithNestedPrefix/deeply_nested_prefix (0.00s) === RUN TestNextMarkerWithCommonPrefix === RUN TestNextMarkerWithCommonPrefix/nested_prefix_with_CommonPrefix === RUN TestNextMarkerWithCommonPrefix/only_requestDir_with_CommonPrefix === RUN TestNextMarkerWithCommonPrefix/no_requestDir_with_CommonPrefix --- PASS: TestNextMarkerWithCommonPrefix (0.00s) --- PASS: TestNextMarkerWithCommonPrefix/nested_prefix_with_CommonPrefix (0.00s) --- PASS: TestNextMarkerWithCommonPrefix/only_requestDir_with_CommonPrefix (0.00s) --- PASS: TestNextMarkerWithCommonPrefix/no_requestDir_with_CommonPrefix (0.00s) === RUN TestDirectoryListedAsCommonPrefix --- PASS: TestDirectoryListedAsCommonPrefix (0.00s) === RUN TestListObjectsHandler --- PASS: TestListObjectsHandler (0.00s) === RUN TestListObjectsV1NamespaceResponse --- PASS: TestListObjectsV1NamespaceResponse (0.00s) === RUN Test_normalizePrefixMarker === RUN Test_normalizePrefixMarker/bucket_root_listing_with_delimiter === RUN Test_normalizePrefixMarker/prefix_is_a_directory === RUN Test_normalizePrefixMarker/normal_case === RUN Test_normalizePrefixMarker/empty_prefix === RUN Test_normalizePrefixMarker/empty_directory --- PASS: Test_normalizePrefixMarker (0.00s) --- PASS: Test_normalizePrefixMarker/bucket_root_listing_with_delimiter (0.00s) --- PASS: Test_normalizePrefixMarker/prefix_is_a_directory (0.00s) --- PASS: Test_normalizePrefixMarker/normal_case (0.00s) --- PASS: Test_normalizePrefixMarker/empty_prefix (0.00s) --- PASS: Test_normalizePrefixMarker/empty_directory (0.00s) === RUN TestBuildTruncatedNextMarker === RUN TestBuildTruncatedNextMarker/does_not_duplicate_prefix_segment_in_next_continuation_token === RUN TestBuildTruncatedNextMarker/keeps_common_prefix_marker_trailing_slash === RUN TestBuildTruncatedNextMarker/includes_prefix_for_common_prefix_marker_when_request_dir_is_empty --- PASS: TestBuildTruncatedNextMarker (0.00s) --- PASS: TestBuildTruncatedNextMarker/does_not_duplicate_prefix_segment_in_next_continuation_token (0.00s) --- PASS: TestBuildTruncatedNextMarker/keeps_common_prefix_marker_trailing_slash (0.00s) --- PASS: TestBuildTruncatedNextMarker/includes_prefix_for_common_prefix_marker_when_request_dir_is_empty (0.00s) === RUN TestAllowUnorderedParameterValidation === RUN TestAllowUnorderedParameterValidation/getListObjectsV1Args_with_allow-unordered === RUN TestAllowUnorderedParameterValidation/getListObjectsV2Args_with_allow-unordered --- PASS: TestAllowUnorderedParameterValidation (0.00s) --- PASS: TestAllowUnorderedParameterValidation/getListObjectsV1Args_with_allow-unordered (0.00s) --- PASS: TestAllowUnorderedParameterValidation/getListObjectsV2Args_with_allow-unordered (0.00s) === RUN TestDoListFilerEntries_BucketRootPrefixSlashDelimiterSlash_ListsDirectories --- PASS: TestDoListFilerEntries_BucketRootPrefixSlashDelimiterSlash_ListsDirectories (0.00s) === RUN TestDoListFilerEntries_ExclusiveStartSkipsMarkerEcho --- PASS: TestDoListFilerEntries_ExclusiveStartSkipsMarkerEcho (0.00s) === RUN TestDoListFilerEntries_ExclusiveStartSkipsMarkerEchoWithSubsequentEntries --- PASS: TestDoListFilerEntries_ExclusiveStartSkipsMarkerEchoWithSubsequentEntries (0.00s) === RUN TestAllowUnorderedWithDelimiterValidation === RUN TestAllowUnorderedWithDelimiterValidation/should_return_error_when_allow-unordered=true_and_delimiter_are_both_present === RUN TestAllowUnorderedWithDelimiterValidation/should_allow_allow-unordered=true_without_delimiter === RUN TestAllowUnorderedWithDelimiterValidation/should_allow_delimiter_without_allow-unordered --- PASS: TestAllowUnorderedWithDelimiterValidation (0.00s) --- PASS: TestAllowUnorderedWithDelimiterValidation/should_return_error_when_allow-unordered=true_and_delimiter_are_both_present (0.00s) --- PASS: TestAllowUnorderedWithDelimiterValidation/should_allow_allow-unordered=true_without_delimiter (0.00s) --- PASS: TestAllowUnorderedWithDelimiterValidation/should_allow_delimiter_without_allow-unordered (0.00s) === RUN TestSanitizeV1MarkerEcho_NoProgressGuard --- PASS: TestSanitizeV1MarkerEcho_NoProgressGuard (0.00s) === RUN TestMaxKeysParameterValidation === RUN TestMaxKeysParameterValidation/valid_max-keys_values_should_work === RUN TestMaxKeysParameterValidation/invalid_max-keys_values_should_return_error === RUN TestMaxKeysParameterValidation/empty_max-keys_should_use_default --- PASS: TestMaxKeysParameterValidation (0.00s) --- PASS: TestMaxKeysParameterValidation/valid_max-keys_values_should_work (0.00s) --- PASS: TestMaxKeysParameterValidation/invalid_max-keys_values_should_return_error (0.00s) --- PASS: TestMaxKeysParameterValidation/empty_max-keys_should_use_default (0.00s) === RUN TestDelimiterWithDirectoryKeyObjects === RUN TestDelimiterWithDirectoryKeyObjects/directory_key_object_should_be_grouped_into_common_prefix_with_delimiter === RUN TestDelimiterWithDirectoryKeyObjects/directory_key_object_without_delimiter_should_be_individual_key --- PASS: TestDelimiterWithDirectoryKeyObjects (0.00s) --- PASS: TestDelimiterWithDirectoryKeyObjects/directory_key_object_should_be_grouped_into_common_prefix_with_delimiter (0.00s) --- PASS: TestDelimiterWithDirectoryKeyObjects/directory_key_object_without_delimiter_should_be_individual_key (0.00s) === RUN TestObjectLevelListPermissions === RUN TestObjectLevelListPermissions/Identity_CanDo_Object_Level_Permissions === RUN TestObjectLevelListPermissions/Identity_CanDo_Object_Level_Permissions/allowed_prefix_exact_match === RUN TestObjectLevelListPermissions/Identity_CanDo_Object_Level_Permissions/allowed_prefix_subdirectory === RUN TestObjectLevelListPermissions/Identity_CanDo_Object_Level_Permissions/denied_different_prefix === RUN TestObjectLevelListPermissions/Identity_CanDo_Object_Level_Permissions/denied_different_bucket === RUN TestObjectLevelListPermissions/Identity_CanDo_Object_Level_Permissions/denied_root_level === RUN TestObjectLevelListPermissions/Bucket_Level_Permissions_Still_Work === RUN TestObjectLevelListPermissions/Empty_Object_With_Prefix_Logic === RUN TestObjectLevelListPermissions/Empty_Object_With_Prefix_Logic/empty_object_with_prefix === RUN TestObjectLevelListPermissions/Empty_Object_With_Prefix_Logic/slash_object_with_prefix === RUN TestObjectLevelListPermissions/Empty_Object_With_Prefix_Logic/object_already_set === RUN TestObjectLevelListPermissions/Empty_Object_With_Prefix_Logic/no_prefix_provided === RUN TestObjectLevelListPermissions/Issue_7039_Scenario === NAME TestObjectLevelListPermissions s3api_object_handlers_list_test.go:733: This test validates the fix for issue #7039 s3api_object_handlers_list_test.go:734: Object-level List permissions like 'List:bucket/prefix/*' now work correctly s3api_object_handlers_list_test.go:735: Middleware properly extracts prefix for permission validation --- PASS: TestObjectLevelListPermissions (0.00s) --- PASS: TestObjectLevelListPermissions/Identity_CanDo_Object_Level_Permissions (0.00s) --- PASS: TestObjectLevelListPermissions/Identity_CanDo_Object_Level_Permissions/allowed_prefix_exact_match (0.00s) --- PASS: TestObjectLevelListPermissions/Identity_CanDo_Object_Level_Permissions/allowed_prefix_subdirectory (0.00s) --- PASS: TestObjectLevelListPermissions/Identity_CanDo_Object_Level_Permissions/denied_different_prefix (0.00s) --- PASS: TestObjectLevelListPermissions/Identity_CanDo_Object_Level_Permissions/denied_different_bucket (0.00s) --- PASS: TestObjectLevelListPermissions/Identity_CanDo_Object_Level_Permissions/denied_root_level (0.00s) --- PASS: TestObjectLevelListPermissions/Bucket_Level_Permissions_Still_Work (0.00s) --- PASS: TestObjectLevelListPermissions/Empty_Object_With_Prefix_Logic (0.00s) --- PASS: TestObjectLevelListPermissions/Empty_Object_With_Prefix_Logic/empty_object_with_prefix (0.00s) --- PASS: TestObjectLevelListPermissions/Empty_Object_With_Prefix_Logic/slash_object_with_prefix (0.00s) --- PASS: TestObjectLevelListPermissions/Empty_Object_With_Prefix_Logic/object_already_set (0.00s) --- PASS: TestObjectLevelListPermissions/Empty_Object_With_Prefix_Logic/no_prefix_provided (0.00s) --- PASS: TestObjectLevelListPermissions/Issue_7039_Scenario (0.00s) === RUN TestListObjectsV2_Regression --- PASS: TestListObjectsV2_Regression (0.00s) === RUN TestListObjectsV2_Regression_Sorting --- PASS: TestListObjectsV2_Regression_Sorting (0.00s) === RUN TestListObjectsV2_PrefixEndingWithSlash_DoesNotMatchSiblings --- PASS: TestListObjectsV2_PrefixEndingWithSlash_DoesNotMatchSiblings (0.00s) === RUN TestListObjectsV2_PrefixEndingWithSlash_WithDelimiter --- PASS: TestListObjectsV2_PrefixEndingWithSlash_WithDelimiter (0.00s) === RUN TestListObjectsWithVersionedObjects === RUN TestListObjectsWithVersionedObjects/List_all_objects_including_versioned_(no_delimiter) === RUN TestListObjectsWithVersionedObjects/List_bucket_root_with_delimiter --- PASS: TestListObjectsWithVersionedObjects (0.00s) --- PASS: TestListObjectsWithVersionedObjects/List_all_objects_including_versioned_(no_delimiter) (0.00s) --- PASS: TestListObjectsWithVersionedObjects/List_bucket_root_with_delimiter (0.00s) === RUN TestVersionedObjectsNoDuplication --- PASS: TestVersionedObjectsNoDuplication (0.00s) === RUN TestVersionedObjectsWithDeleteMarker --- PASS: TestVersionedObjectsWithDeleteMarker (0.00s) === RUN TestVersionedObjectsMaxKeys --- PASS: TestVersionedObjectsMaxKeys (0.00s) === RUN TestVersionsDirectoryNotTraversed --- PASS: TestVersionsDirectoryNotTraversed (0.00s) === RUN TestListObjectVersionsResult_XMLInterleaving --- PASS: TestListObjectVersionsResult_XMLInterleaving (0.00s) === RUN TestListObjectVersionsResult_XMLInterleavingMultipleKeys --- PASS: TestListObjectVersionsResult_XMLInterleavingMultipleKeys (0.00s) === RUN TestListObjectVersionsResult_XMLCommonPrefixes --- PASS: TestListObjectVersionsResult_XMLCommonPrefixes (0.00s) === RUN TestListObjectVersions_PrefixWithLeadingSlash === RUN TestListObjectVersions_PrefixWithLeadingSlash/Prefix_without_leading_slash_matches_file === RUN TestListObjectVersions_PrefixWithLeadingSlash/Prefix_with_leading_slash_(bug_fix_test)_-_normalized_and_matches_file === RUN TestListObjectVersions_PrefixWithLeadingSlash/Normalized_prefix_matches_subdirectory_file === RUN TestListObjectVersions_PrefixWithLeadingSlash/Normalized_prefix_does_not_match_different_path === RUN TestListObjectVersions_PrefixWithLeadingSlash/Prefix_with_leading_slash_allows_descending_into_directory === RUN TestListObjectVersions_PrefixWithLeadingSlash/Prefix_with_leading_slash_matches_directory_with_trailing_slash --- PASS: TestListObjectVersions_PrefixWithLeadingSlash (0.00s) --- PASS: TestListObjectVersions_PrefixWithLeadingSlash/Prefix_without_leading_slash_matches_file (0.00s) --- PASS: TestListObjectVersions_PrefixWithLeadingSlash/Prefix_with_leading_slash_(bug_fix_test)_-_normalized_and_matches_file (0.00s) --- PASS: TestListObjectVersions_PrefixWithLeadingSlash/Normalized_prefix_matches_subdirectory_file (0.00s) --- PASS: TestListObjectVersions_PrefixWithLeadingSlash/Normalized_prefix_does_not_match_different_path (0.00s) --- PASS: TestListObjectVersions_PrefixWithLeadingSlash/Prefix_with_leading_slash_allows_descending_into_directory (0.00s) --- PASS: TestListObjectVersions_PrefixWithLeadingSlash/Prefix_with_leading_slash_matches_directory_with_trailing_slash (0.00s) === RUN TestComputeStartFrom === RUN TestComputeStartFrom/empty_marker === RUN TestComputeStartFrom/empty_marker_with_path === RUN TestComputeStartFrom/root_level_file === RUN TestComputeStartFrom/root_level_with_subpath === RUN TestComputeStartFrom/matching_subdir === RUN TestComputeStartFrom/deeper_subdir === RUN TestComputeStartFrom/at_leaf_level === RUN TestComputeStartFrom/unrelated_directory === RUN TestComputeStartFrom/marker_equals_relativePath === RUN TestComputeStartFrom/marker_before_directory --- PASS: TestComputeStartFrom (0.00s) --- PASS: TestComputeStartFrom/empty_marker (0.00s) --- PASS: TestComputeStartFrom/empty_marker_with_path (0.00s) --- PASS: TestComputeStartFrom/root_level_file (0.00s) --- PASS: TestComputeStartFrom/root_level_with_subpath (0.00s) --- PASS: TestComputeStartFrom/matching_subdir (0.00s) --- PASS: TestComputeStartFrom/deeper_subdir (0.00s) --- PASS: TestComputeStartFrom/at_leaf_level (0.00s) --- PASS: TestComputeStartFrom/unrelated_directory (0.00s) --- PASS: TestComputeStartFrom/marker_equals_relativePath (0.00s) --- PASS: TestComputeStartFrom/marker_before_directory (0.00s) === RUN TestProcessDirectorySkipsBeforeMarker === RUN TestProcessDirectorySkipsBeforeMarker/no_marker === RUN TestProcessDirectorySkipsBeforeMarker/dir_before_marker === RUN TestProcessDirectorySkipsBeforeMarker/marker_descends_into_dir === RUN TestProcessDirectorySkipsBeforeMarker/dir_after_marker === RUN TestProcessDirectorySkipsBeforeMarker/same_prefix_different_suffix --- PASS: TestProcessDirectorySkipsBeforeMarker (0.00s) --- PASS: TestProcessDirectorySkipsBeforeMarker/no_marker (0.00s) --- PASS: TestProcessDirectorySkipsBeforeMarker/dir_before_marker (0.00s) --- PASS: TestProcessDirectorySkipsBeforeMarker/marker_descends_into_dir (0.00s) --- PASS: TestProcessDirectorySkipsBeforeMarker/dir_after_marker (0.00s) --- PASS: TestProcessDirectorySkipsBeforeMarker/same_prefix_different_suffix (0.00s) === RUN TestPostPolicyKeyNormalization === RUN TestPostPolicyKeyNormalization/key_without_leading_slash === RUN TestPostPolicyKeyNormalization/key_with_leading_slash === RUN TestPostPolicyKeyNormalization/key_with_path_without_leading_slash === RUN TestPostPolicyKeyNormalization/key_with_path_with_leading_slash === RUN TestPostPolicyKeyNormalization/simple_filename === RUN TestPostPolicyKeyNormalization/key_with_duplicate_slashes === RUN TestPostPolicyKeyNormalization/key_with_leading_duplicate_slashes === RUN TestPostPolicyKeyNormalization/key_with_trailing_slash --- PASS: TestPostPolicyKeyNormalization (0.00s) --- PASS: TestPostPolicyKeyNormalization/key_without_leading_slash (0.00s) --- PASS: TestPostPolicyKeyNormalization/key_with_leading_slash (0.00s) --- PASS: TestPostPolicyKeyNormalization/key_with_path_without_leading_slash (0.00s) --- PASS: TestPostPolicyKeyNormalization/key_with_path_with_leading_slash (0.00s) --- PASS: TestPostPolicyKeyNormalization/simple_filename (0.00s) --- PASS: TestPostPolicyKeyNormalization/key_with_duplicate_slashes (0.00s) --- PASS: TestPostPolicyKeyNormalization/key_with_leading_duplicate_slashes (0.00s) --- PASS: TestPostPolicyKeyNormalization/key_with_trailing_slash (0.00s) === RUN TestNormalizeObjectKey === RUN TestNormalizeObjectKey/empty_string === RUN TestNormalizeObjectKey/simple_file === RUN TestNormalizeObjectKey/with_leading_slash === RUN TestNormalizeObjectKey/path_without_slash === RUN TestNormalizeObjectKey/path_with_slash === RUN TestNormalizeObjectKey/duplicate_slashes === RUN TestNormalizeObjectKey/leading_duplicates === RUN TestNormalizeObjectKey/all_duplicates === RUN TestNormalizeObjectKey/just_slashes === RUN TestNormalizeObjectKey/trailing_slash === RUN TestNormalizeObjectKey/backslash_to_forward_slash === RUN TestNormalizeObjectKey/windows_path === RUN TestNormalizeObjectKey/mixed_slashes --- PASS: TestNormalizeObjectKey (0.00s) --- PASS: TestNormalizeObjectKey/empty_string (0.00s) --- PASS: TestNormalizeObjectKey/simple_file (0.00s) --- PASS: TestNormalizeObjectKey/with_leading_slash (0.00s) --- PASS: TestNormalizeObjectKey/path_without_slash (0.00s) --- PASS: TestNormalizeObjectKey/path_with_slash (0.00s) --- PASS: TestNormalizeObjectKey/duplicate_slashes (0.00s) --- PASS: TestNormalizeObjectKey/leading_duplicates (0.00s) --- PASS: TestNormalizeObjectKey/all_duplicates (0.00s) --- PASS: TestNormalizeObjectKey/just_slashes (0.00s) --- PASS: TestNormalizeObjectKey/trailing_slash (0.00s) --- PASS: TestNormalizeObjectKey/backslash_to_forward_slash (0.00s) --- PASS: TestNormalizeObjectKey/windows_path (0.00s) --- PASS: TestNormalizeObjectKey/mixed_slashes (0.00s) === RUN TestPostPolicyFilenameSubstitution === RUN TestPostPolicyFilenameSubstitution/filename_at_end === RUN TestPostPolicyFilenameSubstitution/filename_in_middle === RUN TestPostPolicyFilenameSubstitution/no_substitution_needed === RUN TestPostPolicyFilenameSubstitution/filename_only --- PASS: TestPostPolicyFilenameSubstitution (0.00s) --- PASS: TestPostPolicyFilenameSubstitution/filename_at_end (0.00s) --- PASS: TestPostPolicyFilenameSubstitution/filename_in_middle (0.00s) --- PASS: TestPostPolicyFilenameSubstitution/no_substitution_needed (0.00s) --- PASS: TestPostPolicyFilenameSubstitution/filename_only (0.00s) === RUN TestExtractPostPolicyFormValues === RUN TestExtractPostPolicyFormValues/basic_upload === RUN TestExtractPostPolicyFormValues/upload_with_path_key --- PASS: TestExtractPostPolicyFormValues (0.00s) --- PASS: TestExtractPostPolicyFormValues/basic_upload (0.00s) --- PASS: TestExtractPostPolicyFormValues/upload_with_path_key (0.00s) === RUN TestPostPolicyPathConstruction === RUN TestPostPolicyPathConstruction/simple_key_without_slash_-_the_bug_case === RUN TestPostPolicyPathConstruction/simple_key_with_slash === RUN TestPostPolicyPathConstruction/nested_path_without_leading_slash === RUN TestPostPolicyPathConstruction/nested_path_with_leading_slash === RUN TestPostPolicyPathConstruction/key_with_duplicate_slashes --- PASS: TestPostPolicyPathConstruction (0.00s) --- PASS: TestPostPolicyPathConstruction/simple_key_without_slash_-_the_bug_case (0.00s) --- PASS: TestPostPolicyPathConstruction/simple_key_with_slash (0.00s) --- PASS: TestPostPolicyPathConstruction/nested_path_without_leading_slash (0.00s) --- PASS: TestPostPolicyPathConstruction/nested_path_with_leading_slash (0.00s) --- PASS: TestPostPolicyPathConstruction/key_with_duplicate_slashes (0.00s) === RUN TestApplyPostPolicyFormHeaders_ForwardsAcl --- PASS: TestApplyPostPolicyFormHeaders_ForwardsAcl (0.00s) === RUN TestApplyPostPolicyFormHeaders_ForwardsContentHeaders === RUN TestApplyPostPolicyFormHeaders_ForwardsContentHeaders/Content-Encoding === RUN TestApplyPostPolicyFormHeaders_ForwardsContentHeaders/Content-Language --- PASS: TestApplyPostPolicyFormHeaders_ForwardsContentHeaders (0.00s) --- PASS: TestApplyPostPolicyFormHeaders_ForwardsContentHeaders/Content-Encoding (0.00s) --- PASS: TestApplyPostPolicyFormHeaders_ForwardsContentHeaders/Content-Language (0.00s) === RUN TestApplyPostPolicyFormHeaders_ForwardsXAmzHeaders --- PASS: TestApplyPostPolicyFormHeaders_ForwardsXAmzHeaders (0.00s) === RUN TestApplyPostPolicyFormHeaders_SkipsReserved --- PASS: TestApplyPostPolicyFormHeaders_SkipsReserved (0.00s) === RUN TestApplyPostPolicyFormHeaders_KeepsExistingCacheControl --- PASS: TestApplyPostPolicyFormHeaders_KeepsExistingCacheControl (0.00s) === RUN TestApplyPostPolicyFormHeaders_IgnoresContentType --- PASS: TestApplyPostPolicyFormHeaders_IgnoresContentType (0.00s) === RUN TestPostPolicyBucketHandlerKeyExtraction === RUN TestPostPolicyBucketHandlerKeyExtraction/key_without_leading_slash === RUN TestPostPolicyBucketHandlerKeyExtraction/key_with_leading_slash === RUN TestPostPolicyBucketHandlerKeyExtraction/key_with_duplicate_slashes --- PASS: TestPostPolicyBucketHandlerKeyExtraction (0.00s) --- PASS: TestPostPolicyBucketHandlerKeyExtraction/key_without_leading_slash (0.00s) --- PASS: TestPostPolicyBucketHandlerKeyExtraction/key_with_leading_slash (0.00s) --- PASS: TestPostPolicyBucketHandlerKeyExtraction/key_with_duplicate_slashes (0.00s) === RUN TestPostPolicyBucketHandler_PolicyViolationReturns403 --- PASS: TestPostPolicyBucketHandler_PolicyViolationReturns403 (0.00s) === RUN TestDetectRequestedChecksumAlgorithm === RUN TestDetectRequestedChecksumAlgorithm/sdk_algorithm_header === RUN TestDetectRequestedChecksumAlgorithm/algorithm_header === RUN TestDetectRequestedChecksumAlgorithm/presigned_url_hoists_sdk_algorithm_to_query === RUN TestDetectRequestedChecksumAlgorithm/presigned_url_hoists_checksum-algorithm_to_query_(lowercase) === RUN TestDetectRequestedChecksumAlgorithm/presigned_url_hoists_individual_checksum_value === RUN TestDetectRequestedChecksumAlgorithm/unsupported_in_query_returns_error W0505 12:12:53.784448 s3api_object_handlers_put.go:964 unsupported checksum algorithm in X-Amz-Sdk-Checksum-Algorithm: "MD5" === RUN TestDetectRequestedChecksumAlgorithm/no_checksum --- PASS: TestDetectRequestedChecksumAlgorithm (0.00s) --- PASS: TestDetectRequestedChecksumAlgorithm/sdk_algorithm_header (0.00s) --- PASS: TestDetectRequestedChecksumAlgorithm/algorithm_header (0.00s) --- PASS: TestDetectRequestedChecksumAlgorithm/presigned_url_hoists_sdk_algorithm_to_query (0.00s) --- PASS: TestDetectRequestedChecksumAlgorithm/presigned_url_hoists_checksum-algorithm_to_query_(lowercase) (0.00s) --- PASS: TestDetectRequestedChecksumAlgorithm/presigned_url_hoists_individual_checksum_value (0.00s) --- PASS: TestDetectRequestedChecksumAlgorithm/unsupported_in_query_returns_error (0.00s) --- PASS: TestDetectRequestedChecksumAlgorithm/no_checksum (0.00s) === RUN TestLookupHeaderOrQueryCaseInsensitive --- PASS: TestLookupHeaderOrQueryCaseInsensitive (0.00s) === RUN TestVeeamObjectLockBugFix === RUN TestVeeamObjectLockBugFix/Bug_case:_bucket_with_no_extended_attributes === RUN TestVeeamObjectLockBugFix/Fix_verification:_bucket_with_Object_Lock_enabled_via_boolean_flag === RUN TestVeeamObjectLockBugFix/Fix_verification:_bucket_with_Object_Lock_enabled_via_Enabled_constant --- PASS: TestVeeamObjectLockBugFix (0.00s) --- PASS: TestVeeamObjectLockBugFix/Bug_case:_bucket_with_no_extended_attributes (0.00s) --- PASS: TestVeeamObjectLockBugFix/Fix_verification:_bucket_with_Object_Lock_enabled_via_boolean_flag (0.00s) --- PASS: TestVeeamObjectLockBugFix/Fix_verification:_bucket_with_Object_Lock_enabled_via_Enabled_constant (0.00s) === RUN TestExtractObjectLockMetadataFromRequest === RUN TestExtractObjectLockMetadataFromRequest/Extract_COMPLIANCE_mode_and_retention_date === RUN TestExtractObjectLockMetadataFromRequest/Extract_GOVERNANCE_mode_and_retention_date === RUN TestExtractObjectLockMetadataFromRequest/Extract_legal_hold_ON === RUN TestExtractObjectLockMetadataFromRequest/Extract_legal_hold_OFF === RUN TestExtractObjectLockMetadataFromRequest/Handle_all_object_lock_headers_together === RUN TestExtractObjectLockMetadataFromRequest/Handle_no_object_lock_headers === RUN TestExtractObjectLockMetadataFromRequest/Handle_invalid_retention_date_-_should_return_error E0505 12:12:53.784557 s3api_object_handlers_put.go:1503 extractObjectLockMetadataFromRequest: failed to parse retention until date, expected format: 2006-01-02T15:04:05Z07:00, error: parsing time "invalid-date" as "2006-01-02T15:04:05Z07:00": cannot parse "invalid-date" as "2006" === RUN TestExtractObjectLockMetadataFromRequest/Handle_invalid_legal_hold_value_-_should_return_error E0505 12:12:53.784569 s3api_object_handlers_put.go:1517 extractObjectLockMetadataFromRequest: unexpected legal hold value provided, expected 'ON' or 'OFF' --- PASS: TestExtractObjectLockMetadataFromRequest (0.00s) --- PASS: TestExtractObjectLockMetadataFromRequest/Extract_COMPLIANCE_mode_and_retention_date (0.00s) --- PASS: TestExtractObjectLockMetadataFromRequest/Extract_GOVERNANCE_mode_and_retention_date (0.00s) --- PASS: TestExtractObjectLockMetadataFromRequest/Extract_legal_hold_ON (0.00s) --- PASS: TestExtractObjectLockMetadataFromRequest/Extract_legal_hold_OFF (0.00s) --- PASS: TestExtractObjectLockMetadataFromRequest/Handle_all_object_lock_headers_together (0.00s) --- PASS: TestExtractObjectLockMetadataFromRequest/Handle_no_object_lock_headers (0.00s) --- PASS: TestExtractObjectLockMetadataFromRequest/Handle_invalid_retention_date_-_should_return_error (0.00s) --- PASS: TestExtractObjectLockMetadataFromRequest/Handle_invalid_legal_hold_value_-_should_return_error (0.00s) === RUN TestAddObjectLockHeadersToResponse === RUN TestAddObjectLockHeadersToResponse/Add_COMPLIANCE_mode_and_retention_date_to_response === RUN TestAddObjectLockHeadersToResponse/Add_GOVERNANCE_mode_to_response === RUN TestAddObjectLockHeadersToResponse/Add_legal_hold_ON_to_response === RUN TestAddObjectLockHeadersToResponse/Add_legal_hold_OFF_to_response === RUN TestAddObjectLockHeadersToResponse/Add_all_object_lock_headers_to_response === RUN TestAddObjectLockHeadersToResponse/Handle_entry_with_no_object_lock_metadata === RUN TestAddObjectLockHeadersToResponse/Handle_entry_with_object_lock_mode_but_no_legal_hold_-_should_default_to_OFF === RUN TestAddObjectLockHeadersToResponse/Handle_entry_with_retention_date_but_no_legal_hold_-_should_default_to_OFF === RUN TestAddObjectLockHeadersToResponse/Handle_nil_entry_gracefully === RUN TestAddObjectLockHeadersToResponse/Handle_entry_with_nil_Extended_map_gracefully === RUN TestAddObjectLockHeadersToResponse/Handle_invalid_retention_timestamp_gracefully E0505 12:12:53.784652 s3api_object_handlers.go:2468 addObjectLockHeadersToResponse: failed to parse retention until date from stored metadata (dateStr: invalid-timestamp): strconv.ParseInt: parsing "invalid-timestamp": invalid syntax --- PASS: TestAddObjectLockHeadersToResponse (0.00s) --- PASS: TestAddObjectLockHeadersToResponse/Add_COMPLIANCE_mode_and_retention_date_to_response (0.00s) --- PASS: TestAddObjectLockHeadersToResponse/Add_GOVERNANCE_mode_to_response (0.00s) --- PASS: TestAddObjectLockHeadersToResponse/Add_legal_hold_ON_to_response (0.00s) --- PASS: TestAddObjectLockHeadersToResponse/Add_legal_hold_OFF_to_response (0.00s) --- PASS: TestAddObjectLockHeadersToResponse/Add_all_object_lock_headers_to_response (0.00s) --- PASS: TestAddObjectLockHeadersToResponse/Handle_entry_with_no_object_lock_metadata (0.00s) --- PASS: TestAddObjectLockHeadersToResponse/Handle_entry_with_object_lock_mode_but_no_legal_hold_-_should_default_to_OFF (0.00s) --- PASS: TestAddObjectLockHeadersToResponse/Handle_entry_with_retention_date_but_no_legal_hold_-_should_default_to_OFF (0.00s) --- PASS: TestAddObjectLockHeadersToResponse/Handle_nil_entry_gracefully (0.00s) --- PASS: TestAddObjectLockHeadersToResponse/Handle_entry_with_nil_Extended_map_gracefully (0.00s) --- PASS: TestAddObjectLockHeadersToResponse/Handle_invalid_retention_timestamp_gracefully (0.00s) === RUN TestObjectLockHeaderRoundTrip === RUN TestObjectLockHeaderRoundTrip/Complete_round_trip_for_COMPLIANCE_mode === RUN TestObjectLockHeaderRoundTrip/Complete_round_trip_for_GOVERNANCE_mode --- PASS: TestObjectLockHeaderRoundTrip (0.00s) --- PASS: TestObjectLockHeaderRoundTrip/Complete_round_trip_for_COMPLIANCE_mode (0.00s) --- PASS: TestObjectLockHeaderRoundTrip/Complete_round_trip_for_GOVERNANCE_mode (0.00s) === RUN TestValidateObjectLockHeaders === RUN TestValidateObjectLockHeaders/Valid_COMPLIANCE_mode_with_retention_date_on_versioned_bucket === RUN TestValidateObjectLockHeaders/Valid_GOVERNANCE_mode_with_retention_date_on_versioned_bucket === RUN TestValidateObjectLockHeaders/Valid_legal_hold_ON_on_versioned_bucket === RUN TestValidateObjectLockHeaders/Valid_legal_hold_OFF_on_versioned_bucket === RUN TestValidateObjectLockHeaders/Invalid_object_lock_mode === RUN TestValidateObjectLockHeaders/Invalid_legal_hold_status === RUN TestValidateObjectLockHeaders/Object_lock_headers_on_non-versioned_bucket === RUN TestValidateObjectLockHeaders/Invalid_retention_date_format === RUN TestValidateObjectLockHeaders/Retention_date_in_the_past === RUN TestValidateObjectLockHeaders/Mode_without_retention_date === RUN TestValidateObjectLockHeaders/Retention_date_without_mode === RUN TestValidateObjectLockHeaders/Governance_bypass_header_on_non-versioned_bucket === RUN TestValidateObjectLockHeaders/Governance_bypass_header_on_versioned_bucket_should_pass === RUN TestValidateObjectLockHeaders/No_object_lock_headers_should_pass === RUN TestValidateObjectLockHeaders/Mixed_valid_headers_should_pass --- PASS: TestValidateObjectLockHeaders (0.00s) --- PASS: TestValidateObjectLockHeaders/Valid_COMPLIANCE_mode_with_retention_date_on_versioned_bucket (0.00s) --- PASS: TestValidateObjectLockHeaders/Valid_GOVERNANCE_mode_with_retention_date_on_versioned_bucket (0.00s) --- PASS: TestValidateObjectLockHeaders/Valid_legal_hold_ON_on_versioned_bucket (0.00s) --- PASS: TestValidateObjectLockHeaders/Valid_legal_hold_OFF_on_versioned_bucket (0.00s) --- PASS: TestValidateObjectLockHeaders/Invalid_object_lock_mode (0.00s) --- PASS: TestValidateObjectLockHeaders/Invalid_legal_hold_status (0.00s) --- PASS: TestValidateObjectLockHeaders/Object_lock_headers_on_non-versioned_bucket (0.00s) --- PASS: TestValidateObjectLockHeaders/Invalid_retention_date_format (0.00s) --- PASS: TestValidateObjectLockHeaders/Retention_date_in_the_past (0.00s) --- PASS: TestValidateObjectLockHeaders/Mode_without_retention_date (0.00s) --- PASS: TestValidateObjectLockHeaders/Retention_date_without_mode (0.00s) --- PASS: TestValidateObjectLockHeaders/Governance_bypass_header_on_non-versioned_bucket (0.00s) --- PASS: TestValidateObjectLockHeaders/Governance_bypass_header_on_versioned_bucket_should_pass (0.00s) --- PASS: TestValidateObjectLockHeaders/No_object_lock_headers_should_pass (0.00s) --- PASS: TestValidateObjectLockHeaders/Mixed_valid_headers_should_pass (0.00s) === RUN TestMapValidationErrorToS3Error === RUN TestMapValidationErrorToS3Error/ErrObjectLockVersioningRequired === RUN TestMapValidationErrorToS3Error/ErrInvalidObjectLockMode === RUN TestMapValidationErrorToS3Error/ErrInvalidLegalHoldStatus === RUN TestMapValidationErrorToS3Error/ErrInvalidRetentionDateFormat === RUN TestMapValidationErrorToS3Error/ErrRetentionDateMustBeFuture === RUN TestMapValidationErrorToS3Error/ErrObjectLockModeRequiresDate === RUN TestMapValidationErrorToS3Error/ErrRetentionDateRequiresMode === RUN TestMapValidationErrorToS3Error/ErrGovernanceBypassVersioningRequired === RUN TestMapValidationErrorToS3Error/Unknown_error_defaults_to_ErrInvalidRequest --- PASS: TestMapValidationErrorToS3Error (0.00s) --- PASS: TestMapValidationErrorToS3Error/ErrObjectLockVersioningRequired (0.00s) --- PASS: TestMapValidationErrorToS3Error/ErrInvalidObjectLockMode (0.00s) --- PASS: TestMapValidationErrorToS3Error/ErrInvalidLegalHoldStatus (0.00s) --- PASS: TestMapValidationErrorToS3Error/ErrInvalidRetentionDateFormat (0.00s) --- PASS: TestMapValidationErrorToS3Error/ErrRetentionDateMustBeFuture (0.00s) --- PASS: TestMapValidationErrorToS3Error/ErrObjectLockModeRequiresDate (0.00s) --- PASS: TestMapValidationErrorToS3Error/ErrRetentionDateRequiresMode (0.00s) --- PASS: TestMapValidationErrorToS3Error/ErrGovernanceBypassVersioningRequired (0.00s) --- PASS: TestMapValidationErrorToS3Error/Unknown_error_defaults_to_ErrInvalidRequest (0.00s) === RUN TestObjectLockPermissionLogic === RUN TestObjectLockPermissionLogic/Non-versioned_bucket_PUT_operation_logic s3api_object_lock_headers_test.go:626: For non-versioned buckets: s3api_object_lock_headers_test.go:627: - PUT operations overwrite existing objects s3api_object_lock_headers_test.go:628: - Must check existing object lock protections before allowing overwrite s3api_object_lock_headers_test.go:629: - Governance bypass headers can be used to override GOVERNANCE mode retention s3api_object_lock_headers_test.go:630: - COMPLIANCE mode retention and legal holds cannot be bypassed === RUN TestObjectLockPermissionLogic/Versioned_bucket_PUT_operation_logic s3api_object_lock_headers_test.go:643: For versioned buckets: s3api_object_lock_headers_test.go:644: - PUT operations create new versions without overwriting existing objects s3api_object_lock_headers_test.go:645: - No need to check existing object lock protections s3api_object_lock_headers_test.go:646: - Only validate object lock headers for the new version being created s3api_object_lock_headers_test.go:647: - Each version has independent object lock settings === RUN TestObjectLockPermissionLogic/Governance_bypass_header_validation s3api_object_lock_headers_test.go:656: Governance bypass behavior: s3api_object_lock_headers_test.go:657: - Only valid on versioned buckets (header validation) s3api_object_lock_headers_test.go:658: - For non-versioned buckets: Allows overwriting objects under GOVERNANCE retention s3api_object_lock_headers_test.go:659: - For versioned buckets: Not typically needed for PUT operations s3api_object_lock_headers_test.go:660: - Must have s3:BypassGovernanceRetention permission --- PASS: TestObjectLockPermissionLogic (0.00s) --- PASS: TestObjectLockPermissionLogic/Non-versioned_bucket_PUT_operation_logic (0.00s) --- PASS: TestObjectLockPermissionLogic/Versioned_bucket_PUT_operation_logic (0.00s) --- PASS: TestObjectLockPermissionLogic/Governance_bypass_header_validation (0.00s) === RUN TestSetObjectOwnerFromRequest === RUN TestSetObjectOwnerFromRequest/BucketOwnerEnforced_-_use_bucket_owner === RUN TestSetObjectOwnerFromRequest/ObjectWriter_-_use_uploader === RUN TestSetObjectOwnerFromRequest/BucketOwnerPreferred_-_use_uploader === RUN TestSetObjectOwnerFromRequest/BucketOwnerEnforced_but_owner_is_nil_-_fallback_to_uploader === RUN TestSetObjectOwnerFromRequest/BucketOwnerEnforced_but_owner_ID_is_nil_-_fallback_to_uploader === RUN TestSetObjectOwnerFromRequest/Bucket_metadata_error_-_fallback_to_uploader === RUN TestSetObjectOwnerFromRequest/Bucket_registry_is_nil_-_fallback_to_uploader === RUN TestSetObjectOwnerFromRequest/Empty_uploader_account_ID_-_no_owner_set --- PASS: TestSetObjectOwnerFromRequest (0.00s) --- PASS: TestSetObjectOwnerFromRequest/BucketOwnerEnforced_-_use_bucket_owner (0.00s) --- PASS: TestSetObjectOwnerFromRequest/ObjectWriter_-_use_uploader (0.00s) --- PASS: TestSetObjectOwnerFromRequest/BucketOwnerPreferred_-_use_uploader (0.00s) --- PASS: TestSetObjectOwnerFromRequest/BucketOwnerEnforced_but_owner_is_nil_-_fallback_to_uploader (0.00s) --- PASS: TestSetObjectOwnerFromRequest/BucketOwnerEnforced_but_owner_ID_is_nil_-_fallback_to_uploader (0.00s) --- PASS: TestSetObjectOwnerFromRequest/Bucket_metadata_error_-_fallback_to_uploader (0.00s) --- PASS: TestSetObjectOwnerFromRequest/Bucket_registry_is_nil_-_fallback_to_uploader (0.00s) --- PASS: TestSetObjectOwnerFromRequest/Empty_uploader_account_ID_-_no_owner_set (0.00s) === RUN TestValidateRetention === RUN TestValidateRetention/Valid_GOVERNANCE_retention === RUN TestValidateRetention/Valid_COMPLIANCE_retention === RUN TestValidateRetention/Missing_Mode === RUN TestValidateRetention/Missing_RetainUntilDate === RUN TestValidateRetention/Invalid_Mode === RUN TestValidateRetention/Past_RetainUntilDate === RUN TestValidateRetention/Empty_retention --- PASS: TestValidateRetention (0.00s) --- PASS: TestValidateRetention/Valid_GOVERNANCE_retention (0.00s) --- PASS: TestValidateRetention/Valid_COMPLIANCE_retention (0.00s) --- PASS: TestValidateRetention/Missing_Mode (0.00s) --- PASS: TestValidateRetention/Missing_RetainUntilDate (0.00s) --- PASS: TestValidateRetention/Invalid_Mode (0.00s) --- PASS: TestValidateRetention/Past_RetainUntilDate (0.00s) --- PASS: TestValidateRetention/Empty_retention (0.00s) === RUN TestValidateLegalHold === RUN TestValidateLegalHold/Valid_ON_status === RUN TestValidateLegalHold/Valid_OFF_status === RUN TestValidateLegalHold/Invalid_status === RUN TestValidateLegalHold/Empty_status === RUN TestValidateLegalHold/Lowercase_on === RUN TestValidateLegalHold/Lowercase_off --- PASS: TestValidateLegalHold (0.00s) --- PASS: TestValidateLegalHold/Valid_ON_status (0.00s) --- PASS: TestValidateLegalHold/Valid_OFF_status (0.00s) --- PASS: TestValidateLegalHold/Invalid_status (0.00s) --- PASS: TestValidateLegalHold/Empty_status (0.00s) --- PASS: TestValidateLegalHold/Lowercase_on (0.00s) --- PASS: TestValidateLegalHold/Lowercase_off (0.00s) === RUN TestParseObjectRetention === RUN TestParseObjectRetention/Valid_retention_XML === RUN TestParseObjectRetention/Valid_compliance_retention_XML === RUN TestParseObjectRetention/Valid_retention_XML_without_namespace_(Veeam_compatibility) === RUN TestParseObjectRetention/Valid_compliance_retention_XML_without_namespace_(Veeam_compatibility) === RUN TestParseObjectRetention/Empty_XML_body === RUN TestParseObjectRetention/Invalid_XML === RUN TestParseObjectRetention/Malformed_XML === RUN TestParseObjectRetention/Missing_Mode === RUN TestParseObjectRetention/Missing_RetainUntilDate --- PASS: TestParseObjectRetention (0.00s) --- PASS: TestParseObjectRetention/Valid_retention_XML (0.00s) --- PASS: TestParseObjectRetention/Valid_compliance_retention_XML (0.00s) --- PASS: TestParseObjectRetention/Valid_retention_XML_without_namespace_(Veeam_compatibility) (0.00s) --- PASS: TestParseObjectRetention/Valid_compliance_retention_XML_without_namespace_(Veeam_compatibility) (0.00s) --- PASS: TestParseObjectRetention/Empty_XML_body (0.00s) --- PASS: TestParseObjectRetention/Invalid_XML (0.00s) --- PASS: TestParseObjectRetention/Malformed_XML (0.00s) --- PASS: TestParseObjectRetention/Missing_Mode (0.00s) --- PASS: TestParseObjectRetention/Missing_RetainUntilDate (0.00s) === RUN TestParseObjectLegalHold === RUN TestParseObjectLegalHold/Valid_legal_hold_ON === RUN TestParseObjectLegalHold/Valid_legal_hold_OFF === RUN TestParseObjectLegalHold/Valid_legal_hold_ON_without_namespace === RUN TestParseObjectLegalHold/Valid_legal_hold_OFF_without_namespace === RUN TestParseObjectLegalHold/Empty_XML_body === RUN TestParseObjectLegalHold/Invalid_XML === RUN TestParseObjectLegalHold/Missing_Status --- PASS: TestParseObjectLegalHold (0.00s) --- PASS: TestParseObjectLegalHold/Valid_legal_hold_ON (0.00s) --- PASS: TestParseObjectLegalHold/Valid_legal_hold_OFF (0.00s) --- PASS: TestParseObjectLegalHold/Valid_legal_hold_ON_without_namespace (0.00s) --- PASS: TestParseObjectLegalHold/Valid_legal_hold_OFF_without_namespace (0.00s) --- PASS: TestParseObjectLegalHold/Empty_XML_body (0.00s) --- PASS: TestParseObjectLegalHold/Invalid_XML (0.00s) --- PASS: TestParseObjectLegalHold/Missing_Status (0.00s) === RUN TestParseObjectLockConfiguration === RUN TestParseObjectLockConfiguration/Valid_object_lock_configuration === RUN TestParseObjectLockConfiguration/Valid_object_lock_configuration_with_rule === RUN TestParseObjectLockConfiguration/Valid_object_lock_configuration_without_namespace === RUN TestParseObjectLockConfiguration/Valid_object_lock_configuration_with_rule_without_namespace === RUN TestParseObjectLockConfiguration/Empty_XML_body === RUN TestParseObjectLockConfiguration/Invalid_XML --- PASS: TestParseObjectLockConfiguration (0.00s) --- PASS: TestParseObjectLockConfiguration/Valid_object_lock_configuration (0.00s) --- PASS: TestParseObjectLockConfiguration/Valid_object_lock_configuration_with_rule (0.00s) --- PASS: TestParseObjectLockConfiguration/Valid_object_lock_configuration_without_namespace (0.00s) --- PASS: TestParseObjectLockConfiguration/Valid_object_lock_configuration_with_rule_without_namespace (0.00s) --- PASS: TestParseObjectLockConfiguration/Empty_XML_body (0.00s) --- PASS: TestParseObjectLockConfiguration/Invalid_XML (0.00s) === RUN TestValidateObjectLockConfiguration === RUN TestValidateObjectLockConfiguration/Valid_config_with_ObjectLockEnabled_only === RUN TestValidateObjectLockConfiguration/Missing_ObjectLockEnabled === RUN TestValidateObjectLockConfiguration/Valid_config_with_rule_and_days === RUN TestValidateObjectLockConfiguration/Valid_config_with_rule_and_years === RUN TestValidateObjectLockConfiguration/Invalid_ObjectLockEnabled_value === RUN TestValidateObjectLockConfiguration/Invalid_rule_-_missing_mode === RUN TestValidateObjectLockConfiguration/Invalid_rule_-_both_days_and_years === RUN TestValidateObjectLockConfiguration/Invalid_rule_-_neither_days_nor_years === RUN TestValidateObjectLockConfiguration/Invalid_rule_-_invalid_mode === RUN TestValidateObjectLockConfiguration/Invalid_rule_-_days_out_of_range === RUN TestValidateObjectLockConfiguration/Invalid_rule_-_years_out_of_range === RUN TestValidateObjectLockConfiguration/Invalid_rule_-_missing_DefaultRetention --- PASS: TestValidateObjectLockConfiguration (0.00s) --- PASS: TestValidateObjectLockConfiguration/Valid_config_with_ObjectLockEnabled_only (0.00s) --- PASS: TestValidateObjectLockConfiguration/Missing_ObjectLockEnabled (0.00s) --- PASS: TestValidateObjectLockConfiguration/Valid_config_with_rule_and_days (0.00s) --- PASS: TestValidateObjectLockConfiguration/Valid_config_with_rule_and_years (0.00s) --- PASS: TestValidateObjectLockConfiguration/Invalid_ObjectLockEnabled_value (0.00s) --- PASS: TestValidateObjectLockConfiguration/Invalid_rule_-_missing_mode (0.00s) --- PASS: TestValidateObjectLockConfiguration/Invalid_rule_-_both_days_and_years (0.00s) --- PASS: TestValidateObjectLockConfiguration/Invalid_rule_-_neither_days_nor_years (0.00s) --- PASS: TestValidateObjectLockConfiguration/Invalid_rule_-_invalid_mode (0.00s) --- PASS: TestValidateObjectLockConfiguration/Invalid_rule_-_days_out_of_range (0.00s) --- PASS: TestValidateObjectLockConfiguration/Invalid_rule_-_years_out_of_range (0.00s) --- PASS: TestValidateObjectLockConfiguration/Invalid_rule_-_missing_DefaultRetention (0.00s) === RUN TestValidateDefaultRetention === RUN TestValidateDefaultRetention/Valid_retention_with_days === RUN TestValidateDefaultRetention/Valid_retention_with_years === RUN TestValidateDefaultRetention/Missing_mode === RUN TestValidateDefaultRetention/Invalid_mode === RUN TestValidateDefaultRetention/Both_days_and_years_specified === RUN TestValidateDefaultRetention/Neither_days_nor_years_specified --- PASS: TestValidateDefaultRetention (0.00s) --- PASS: TestValidateDefaultRetention/Valid_retention_with_days (0.00s) --- PASS: TestValidateDefaultRetention/Valid_retention_with_years (0.00s) --- PASS: TestValidateDefaultRetention/Missing_mode (0.00s) --- PASS: TestValidateDefaultRetention/Invalid_mode (0.00s) --- PASS: TestValidateDefaultRetention/Both_days_and_years_specified (0.00s) --- PASS: TestValidateDefaultRetention/Neither_days_nor_years_specified (0.00s) === RUN TestSelectLatestVersion_MixedFormats --- PASS: TestSelectLatestVersion_MixedFormats (0.00s) === RUN TestSelectLatestVersion_PromotesNewestDeleteMarker --- PASS: TestSelectLatestVersion_PromotesNewestDeleteMarker (0.00s) === RUN TestSelectLatestVersion_ContentWinsWhenNewer --- PASS: TestSelectLatestVersion_ContentWinsWhenNewer (0.00s) === RUN TestSelectLatestVersion_OnlyDeleteMarkers --- PASS: TestSelectLatestVersion_OnlyDeleteMarkers (0.00s) === RUN TestSelectLatestVersion_EmptyOrUntagged --- PASS: TestSelectLatestVersion_EmptyOrUntagged (0.00s) === RUN TestLifecycleXMLRoundTrip_NoncurrentVersionExpiration --- PASS: TestLifecycleXMLRoundTrip_NoncurrentVersionExpiration (0.00s) === RUN TestLifecycleXMLRoundTrip_AbortIncompleteMultipartUpload --- PASS: TestLifecycleXMLRoundTrip_AbortIncompleteMultipartUpload (0.00s) === RUN TestLifecycleXMLRoundTrip_FilterWithTag --- PASS: TestLifecycleXMLRoundTrip_FilterWithTag (0.00s) === RUN TestLifecycleXMLRoundTrip_FilterWithAnd --- PASS: TestLifecycleXMLRoundTrip_FilterWithAnd (0.00s) === RUN TestLifecycleXMLRoundTrip_FilterWithSizeOnly --- PASS: TestLifecycleXMLRoundTrip_FilterWithSizeOnly (0.00s) === RUN TestLifecycleXML_TransitionSetFlag --- PASS: TestLifecycleXML_TransitionSetFlag (0.00s) === RUN TestLifecycleXML_NoncurrentVersionTransitionSetFlag --- PASS: TestLifecycleXML_NoncurrentVersionTransitionSetFlag (0.00s) === RUN TestLifecycleXMLRoundTrip_CompleteRule --- PASS: TestLifecycleXMLRoundTrip_CompleteRule (0.00s) === RUN TestGetRequestDataReader_ChunkedEncodingWithoutIAM I0505 12:12:53.785712 config_loader.go:73 Using explicit credential store: memory === RUN TestGetRequestDataReader_ChunkedEncodingWithoutIAM/RegularRequest s3api_put_object_helper_test.go:82: Test case: RegularRequest - Regular requests without chunked encoding should pass through unchanged === RUN TestGetRequestDataReader_ChunkedEncodingWithoutIAM/StreamingSignedWithoutIAM s3api_put_object_helper_test.go:82: Test case: StreamingSignedWithoutIAM - Streaming signed requests should fail when IAM is disabled === RUN TestGetRequestDataReader_ChunkedEncodingWithoutIAM/StreamingUnsignedWithoutIAM s3api_put_object_helper_test.go:82: Test case: StreamingUnsignedWithoutIAM - Streaming unsigned requests should be processed even when IAM is disabled --- PASS: TestGetRequestDataReader_ChunkedEncodingWithoutIAM (0.00s) --- PASS: TestGetRequestDataReader_ChunkedEncodingWithoutIAM/RegularRequest (0.00s) --- PASS: TestGetRequestDataReader_ChunkedEncodingWithoutIAM/StreamingSignedWithoutIAM (0.00s) --- PASS: TestGetRequestDataReader_ChunkedEncodingWithoutIAM/StreamingUnsignedWithoutIAM (0.00s) === RUN TestGetRequestDataReader_AuthTypeDetection I0505 12:12:53.785799 config_loader.go:73 Using explicit credential store: memory === RUN TestGetRequestDataReader_AuthTypeDetection/ChunkedDataWithChecksum --- PASS: TestGetRequestDataReader_AuthTypeDetection (0.00s) --- PASS: TestGetRequestDataReader_AuthTypeDetection/ChunkedDataWithChecksum (0.00s) === RUN TestGetRequestDataReader_IAMEnabled I0505 12:12:53.785828 config_loader.go:73 Using explicit credential store: memory === RUN TestGetRequestDataReader_IAMEnabled/StreamingUnsignedWithIAMEnabled --- PASS: TestGetRequestDataReader_IAMEnabled (0.00s) --- PASS: TestGetRequestDataReader_IAMEnabled/StreamingUnsignedWithIAMEnabled (0.00s) === RUN TestAuthTypeDetection === RUN TestAuthTypeDetection/StreamingUnsigned === RUN TestAuthTypeDetection/StreamingSigned === RUN TestAuthTypeDetection/Regular --- PASS: TestAuthTypeDetection (0.00s) --- PASS: TestAuthTypeDetection/StreamingUnsigned (0.00s) --- PASS: TestAuthTypeDetection/StreamingSigned (0.00s) --- PASS: TestAuthTypeDetection/Regular (0.00s) === RUN TestIsInRemoteOnly === RUN TestIsInRemoteOnly/remote-only_entry_with_no_chunks === RUN TestIsInRemoteOnly/remote_entry_with_chunks_(cached) === RUN TestIsInRemoteOnly/local_file_with_chunks_(not_remote) === RUN TestIsInRemoteOnly/empty_remote_entry_(size_0) === RUN TestIsInRemoteOnly/no_chunks_but_nil_RemoteEntry --- PASS: TestIsInRemoteOnly (0.00s) --- PASS: TestIsInRemoteOnly/remote-only_entry_with_no_chunks (0.00s) --- PASS: TestIsInRemoteOnly/remote_entry_with_chunks_(cached) (0.00s) --- PASS: TestIsInRemoteOnly/local_file_with_chunks_(not_remote) (0.00s) --- PASS: TestIsInRemoteOnly/empty_remote_entry_(size_0) (0.00s) --- PASS: TestIsInRemoteOnly/no_chunks_but_nil_RemoteEntry (0.00s) === RUN TestRemoteOnlyEntryDetection === RUN TestRemoteOnlyEntryDetection/remote-only_entry_(no_chunks,_has_remote_entry) === RUN TestRemoteOnlyEntryDetection/data_integrity_error_(no_chunks,_no_remote,_has_size) === RUN TestRemoteOnlyEntryDetection/empty_local_file_(no_chunks,_no_remote,_size_0) === RUN TestRemoteOnlyEntryDetection/normal_file_with_chunks --- PASS: TestRemoteOnlyEntryDetection (0.00s) --- PASS: TestRemoteOnlyEntryDetection/remote-only_entry_(no_chunks,_has_remote_entry) (0.00s) --- PASS: TestRemoteOnlyEntryDetection/data_integrity_error_(no_chunks,_no_remote,_has_size) (0.00s) --- PASS: TestRemoteOnlyEntryDetection/empty_local_file_(no_chunks,_no_remote,_size_0) (0.00s) --- PASS: TestRemoteOnlyEntryDetection/normal_file_with_chunks (0.00s) === RUN TestVersionedRemoteObjectPathBuilding === RUN TestVersionedRemoteObjectPathBuilding/non-versioned_object_(empty_versionId) === RUN TestVersionedRemoteObjectPathBuilding/null_version === RUN TestVersionedRemoteObjectPathBuilding/specific_version === RUN TestVersionedRemoteObjectPathBuilding/nested_object_with_version === RUN TestVersionedRemoteObjectPathBuilding/object_with_leading_slash_and_version --- PASS: TestVersionedRemoteObjectPathBuilding (0.00s) --- PASS: TestVersionedRemoteObjectPathBuilding/non-versioned_object_(empty_versionId) (0.00s) --- PASS: TestVersionedRemoteObjectPathBuilding/null_version (0.00s) --- PASS: TestVersionedRemoteObjectPathBuilding/specific_version (0.00s) --- PASS: TestVersionedRemoteObjectPathBuilding/nested_object_with_version (0.00s) --- PASS: TestVersionedRemoteObjectPathBuilding/object_with_leading_slash_and_version (0.00s) === RUN TestResolvedSourceVersionId === RUN TestResolvedSourceVersionId/explicit_request_versionId_wins === RUN TestResolvedSourceVersionId/empty_request_falls_back_to_entry_version_(latest_in_versioned_bucket) === RUN TestResolvedSourceVersionId/empty_request_and_pre-versioning_entry_stays_empty === RUN TestResolvedSourceVersionId/empty_request_and_nil_Extended_stays_empty === RUN TestResolvedSourceVersionId/nil_entry_tolerated_when_no_request_version --- PASS: TestResolvedSourceVersionId (0.00s) --- PASS: TestResolvedSourceVersionId/explicit_request_versionId_wins (0.00s) --- PASS: TestResolvedSourceVersionId/empty_request_falls_back_to_entry_version_(latest_in_versioned_bucket) (0.00s) --- PASS: TestResolvedSourceVersionId/empty_request_and_pre-versioning_entry_stays_empty (0.00s) --- PASS: TestResolvedSourceVersionId/empty_request_and_nil_Extended_stays_empty (0.00s) --- PASS: TestResolvedSourceVersionId/nil_entry_tolerated_when_no_request_version (0.00s) === RUN TestCachedEntryHasLocalData === RUN TestCachedEntryHasLocalData/nil_entry_is_not_a_hit === RUN TestCachedEntryHasLocalData/entry_with_chunks_is_a_hit === RUN TestCachedEntryHasLocalData/entry_with_inline_content_is_a_hit === RUN TestCachedEntryHasLocalData/entry_with_neither_chunks_nor_content_is_not_a_hit --- PASS: TestCachedEntryHasLocalData (0.00s) --- PASS: TestCachedEntryHasLocalData/nil_entry_is_not_a_hit (0.00s) --- PASS: TestCachedEntryHasLocalData/entry_with_chunks_is_a_hit (0.00s) --- PASS: TestCachedEntryHasLocalData/entry_with_inline_content_is_a_hit (0.00s) --- PASS: TestCachedEntryHasLocalData/entry_with_neither_chunks_nor_content_is_not_a_hit (0.00s) === RUN TestCopyObjectRemoteOnlySourceDetection === RUN TestCopyObjectRemoteOnlySourceDetection/remote-only_object_with_size_and_no_chunks/content === RUN TestCopyObjectRemoteOnlySourceDetection/local_file_with_chunks_-_copy_works_fine,_fix_does_not_engage === RUN TestCopyObjectRemoteOnlySourceDetection/small_inline_file_(no_chunks,_has_Content)_-_hits_inline_branch_but_not_broken === RUN TestCopyObjectRemoteOnlySourceDetection/remote_entry_already_cached_(has_chunks)_-_fix_does_not_engage === RUN TestCopyObjectRemoteOnlySourceDetection/zero-byte_remote_object_-_fix_does_not_engage,_inline_branch_handles_it --- PASS: TestCopyObjectRemoteOnlySourceDetection (0.00s) --- PASS: TestCopyObjectRemoteOnlySourceDetection/remote-only_object_with_size_and_no_chunks/content (0.00s) --- PASS: TestCopyObjectRemoteOnlySourceDetection/local_file_with_chunks_-_copy_works_fine,_fix_does_not_engage (0.00s) --- PASS: TestCopyObjectRemoteOnlySourceDetection/small_inline_file_(no_chunks,_has_Content)_-_hits_inline_branch_but_not_broken (0.00s) --- PASS: TestCopyObjectRemoteOnlySourceDetection/remote_entry_already_cached_(has_chunks)_-_fix_does_not_engage (0.00s) --- PASS: TestCopyObjectRemoteOnlySourceDetection/zero-byte_remote_object_-_fix_does_not_engage,_inline_branch_handles_it (0.00s) === RUN TestRouting_STSWithQueryParams I0505 12:12:53.786357 config_loader.go:73 Using explicit credential store: memory --- PASS: TestRouting_STSWithQueryParams (0.00s) === RUN TestRouting_STSWithBodyParams I0505 12:12:53.787133 config_loader.go:73 Using explicit credential store: memory --- PASS: TestRouting_STSWithBodyParams (0.00s) === RUN TestRouting_GetFederationTokenWithQueryParams I0505 12:12:53.787861 config_loader.go:73 Using explicit credential store: memory --- PASS: TestRouting_GetFederationTokenWithQueryParams (0.00s) === RUN TestRouting_GetFederationTokenAuthenticatedBody I0505 12:12:53.790025 config_loader.go:73 Using explicit credential store: memory --- PASS: TestRouting_GetFederationTokenAuthenticatedBody (0.00s) === RUN TestRouting_AuthenticatedIAM I0505 12:12:53.790909 config_loader.go:73 Using explicit credential store: memory --- PASS: TestRouting_AuthenticatedIAM (0.00s) === RUN TestRouting_IAMMatcherLogic === RUN TestRouting_IAMMatcherLogic/No_auth_-_anonymous I0505 12:12:53.791692 config_loader.go:73 Using explicit credential store: memory === RUN TestRouting_IAMMatcherLogic/AWS4_signature I0505 12:12:53.792434 config_loader.go:73 Using explicit credential store: memory === RUN TestRouting_IAMMatcherLogic/AWS2_signature I0505 12:12:53.793138 config_loader.go:73 Using explicit credential store: memory W0505 12:12:53.796537 auth_signature_v2.go:137 InvalidAccessKeyId (V2 signed): attempted key 'AKIA...' not found. Available keys: 1, Auth enabled: true === RUN TestRouting_IAMMatcherLogic/Presigned_V4 I0505 12:12:53.796577 config_loader.go:73 Using explicit credential store: memory === RUN TestRouting_IAMMatcherLogic/Presigned_V2 I0505 12:12:53.798009 config_loader.go:73 Using explicit credential store: memory === RUN TestRouting_IAMMatcherLogic/AWS4_signature_with_STS_action_in_body I0505 12:12:53.799247 config_loader.go:73 Using explicit credential store: memory --- PASS: TestRouting_IAMMatcherLogic (0.01s) --- PASS: TestRouting_IAMMatcherLogic/No_auth_-_anonymous (0.00s) --- PASS: TestRouting_IAMMatcherLogic/AWS4_signature (0.00s) --- PASS: TestRouting_IAMMatcherLogic/AWS2_signature (0.00s) --- PASS: TestRouting_IAMMatcherLogic/Presigned_V4 (0.00s) --- PASS: TestRouting_IAMMatcherLogic/Presigned_V2 (0.00s) --- PASS: TestRouting_IAMMatcherLogic/AWS4_signature_with_STS_action_in_body (0.00s) === RUN TestSSECDecryptChunkView_NoOffsetAdjustment s3api_sse_decrypt_test.go:63: ✓ Correct decryption (using stored IV directly) successful s3api_sse_decrypt_test.go:91: ✓ Verified: Offset-adjusted IV produces corrupted data (as expected for SSE-C) s3api_sse_decrypt_test.go:96: Plaintext: "This is a test messa" s3api_sse_decrypt_test.go:101: Corrupted: "\x05.\xfa\x05@2\x01\xbd18%\xbc\t\xc1\xf8;\x96\xb6\x87W" --- PASS: TestSSECDecryptChunkView_NoOffsetAdjustment (0.00s) === RUN TestSSEKMSDecryptChunkView_RequiresOffsetAdjustment s3api_sse_decrypt_test.go:161: ✓ SSE-KMS decryption with offset adjustment successful s3api_sse_decrypt_test.go:182: ✓ Verified: double-adjusted IV produces corrupted data (range path must not pre-adjust) s3api_sse_decrypt_test.go:199: ✓ Verified: Base IV without offset produces corrupted data (as expected for SSE-KMS) --- PASS: TestSSEKMSDecryptChunkView_RequiresOffsetAdjustment (0.00s) === RUN TestSSEDecryptionDifferences s3api_sse_decrypt_test.go:205: SSE-C: Random IV per part → Use stored IV DIRECTLY (no offset) s3api_sse_decrypt_test.go:206: SSE-KMS: Base IV + offset → MUST call calculateIVWithOffset(baseIV, offset) s3api_sse_decrypt_test.go:207: SSE-S3: Base IV + offset → Stores ADJUSTED IV, use directly --- PASS: TestSSEDecryptionDifferences (0.00s) === RUN TestSSES3MultipartUploadStoresDerivedIV === RUN TestSSES3MultipartUploadStoresDerivedIV/Part_1_at_offset_0 s3api_sse_s3_upload_test.go:103: ✓ Derived IV decryption successful for offset 0 === RUN TestSSES3MultipartUploadStoresDerivedIV/Part_2_at_offset_1MB s3api_sse_s3_upload_test.go:103: ✓ Derived IV decryption successful for offset 1048576 s3api_sse_s3_upload_test.go:127: ✓ Verified: Base IV produces corrupted data at offset 1048576 (bug would cause this) === RUN TestSSES3MultipartUploadStoresDerivedIV/Part_3_at_offset_5MB s3api_sse_s3_upload_test.go:103: ✓ Derived IV decryption successful for offset 5242880 s3api_sse_s3_upload_test.go:127: ✓ Verified: Base IV produces corrupted data at offset 5242880 (bug would cause this) --- PASS: TestSSES3MultipartUploadStoresDerivedIV (0.00s) --- PASS: TestSSES3MultipartUploadStoresDerivedIV/Part_1_at_offset_0 (0.00s) --- PASS: TestSSES3MultipartUploadStoresDerivedIV/Part_2_at_offset_1MB (0.00s) --- PASS: TestSSES3MultipartUploadStoresDerivedIV/Part_3_at_offset_5MB (0.00s) === RUN TestHandleSSES3MultipartEncryptionFlow s3api_sse_s3_upload_test.go:203: ✓ Key.IV correctly updated with derived IV s3api_sse_s3_upload_test.go:225: ✓ Full encrypt-update_key-decrypt cycle successful --- PASS: TestHandleSSES3MultipartEncryptionFlow (0.00s) === RUN TestSSES3HeaderEncoding --- PASS: TestSSES3HeaderEncoding (0.00s) === RUN TestShouldWriteStreamingErrorResponse === RUN TestShouldWriteStreamingErrorResponse/nil_error === RUN TestShouldWriteStreamingErrorResponse/context_canceled === RUN TestShouldWriteStreamingErrorResponse/wrapped_context_canceled === RUN TestShouldWriteStreamingErrorResponse/grpc_canceled === RUN TestShouldWriteStreamingErrorResponse/wrapped_grpc_canceled === RUN TestShouldWriteStreamingErrorResponse/deadline_exceeded === RUN TestShouldWriteStreamingErrorResponse/wrapped_deadline_exceeded --- PASS: TestShouldWriteStreamingErrorResponse (0.00s) --- PASS: TestShouldWriteStreamingErrorResponse/nil_error (0.00s) --- PASS: TestShouldWriteStreamingErrorResponse/context_canceled (0.00s) --- PASS: TestShouldWriteStreamingErrorResponse/wrapped_context_canceled (0.00s) --- PASS: TestShouldWriteStreamingErrorResponse/grpc_canceled (0.00s) --- PASS: TestShouldWriteStreamingErrorResponse/wrapped_grpc_canceled (0.00s) --- PASS: TestShouldWriteStreamingErrorResponse/deadline_exceeded (0.00s) --- PASS: TestShouldWriteStreamingErrorResponse/wrapped_deadline_exceeded (0.00s) === RUN TestAssumeRole_CallerIdentityFallback === RUN TestAssumeRole_CallerIdentityFallback/Caller_is_IAM_User,_No_RoleArn === RUN TestAssumeRole_CallerIdentityFallback/Caller_is_STS_Assumed_Role,_No_RoleArn === RUN TestAssumeRole_CallerIdentityFallback/Explicit_RoleArn_Provided === RUN TestAssumeRole_CallerIdentityFallback/Malformed_ARN --- PASS: TestAssumeRole_CallerIdentityFallback (0.00s) --- PASS: TestAssumeRole_CallerIdentityFallback/Caller_is_IAM_User,_No_RoleArn (0.00s) --- PASS: TestAssumeRole_CallerIdentityFallback/Caller_is_STS_Assumed_Role,_No_RoleArn (0.00s) --- PASS: TestAssumeRole_CallerIdentityFallback/Explicit_RoleArn_Provided (0.00s) --- PASS: TestAssumeRole_CallerIdentityFallback/Malformed_ARN (0.00s) === RUN TestAssumeRole_EmbedsRolePolicies === RUN TestAssumeRole_EmbedsRolePolicies/RoleWithAttachedPolicies === RUN TestAssumeRole_EmbedsRolePolicies/RoleWithoutAttachedPolicies --- PASS: TestAssumeRole_EmbedsRolePolicies (0.00s) --- PASS: TestAssumeRole_EmbedsRolePolicies/RoleWithAttachedPolicies (0.00s) --- PASS: TestAssumeRole_EmbedsRolePolicies/RoleWithoutAttachedPolicies (0.00s) === RUN TestGetCallerIdentityResponse_XMLMarshal --- PASS: TestGetCallerIdentityResponse_XMLMarshal (0.00s) === RUN TestGetFederationToken_BasicFlow --- PASS: TestGetFederationToken_BasicFlow (0.00s) === RUN TestGetFederationToken_WithSessionPolicy --- PASS: TestGetFederationToken_WithSessionPolicy (0.00s) === RUN TestGetFederationToken_RejectTemporaryCredentials === RUN TestGetFederationToken_RejectTemporaryCredentials/SessionTokenInHeader === RUN TestGetFederationToken_RejectTemporaryCredentials/SessionTokenInQuery --- PASS: TestGetFederationToken_RejectTemporaryCredentials (0.00s) --- PASS: TestGetFederationToken_RejectTemporaryCredentials/SessionTokenInHeader (0.00s) --- PASS: TestGetFederationToken_RejectTemporaryCredentials/SessionTokenInQuery (0.00s) === RUN TestGetFederationToken_MissingName --- PASS: TestGetFederationToken_MissingName (0.00s) === RUN TestGetFederationToken_NameValidation === RUN TestGetFederationToken_NameValidation/TooShort === RUN TestGetFederationToken_NameValidation/TooLong === RUN TestGetFederationToken_NameValidation/MinLength === RUN TestGetFederationToken_NameValidation/MaxLength === RUN TestGetFederationToken_NameValidation/ValidSpecialChars === RUN TestGetFederationToken_NameValidation/InvalidChars_Space === RUN TestGetFederationToken_NameValidation/InvalidChars_Slash --- PASS: TestGetFederationToken_NameValidation (0.00s) --- PASS: TestGetFederationToken_NameValidation/TooShort (0.00s) --- PASS: TestGetFederationToken_NameValidation/TooLong (0.00s) --- PASS: TestGetFederationToken_NameValidation/MinLength (0.00s) --- PASS: TestGetFederationToken_NameValidation/MaxLength (0.00s) --- PASS: TestGetFederationToken_NameValidation/ValidSpecialChars (0.00s) --- PASS: TestGetFederationToken_NameValidation/InvalidChars_Space (0.00s) --- PASS: TestGetFederationToken_NameValidation/InvalidChars_Slash (0.00s) === RUN TestGetFederationToken_DurationValidation === RUN TestGetFederationToken_DurationValidation/BelowMinimum === RUN TestGetFederationToken_DurationValidation/AboveMaximum === RUN TestGetFederationToken_DurationValidation/InvalidFormat === RUN TestGetFederationToken_DurationValidation/MinimumValid === RUN TestGetFederationToken_DurationValidation/MaximumValid_36Hours === RUN TestGetFederationToken_DurationValidation/Default12Hours --- PASS: TestGetFederationToken_DurationValidation (0.00s) --- PASS: TestGetFederationToken_DurationValidation/BelowMinimum (0.00s) --- PASS: TestGetFederationToken_DurationValidation/AboveMaximum (0.00s) --- PASS: TestGetFederationToken_DurationValidation/InvalidFormat (0.00s) --- PASS: TestGetFederationToken_DurationValidation/MinimumValid (0.00s) --- PASS: TestGetFederationToken_DurationValidation/MaximumValid_36Hours (0.00s) --- PASS: TestGetFederationToken_DurationValidation/Default12Hours (0.00s) === RUN TestGetFederationToken_ResponseFormat --- PASS: TestGetFederationToken_ResponseFormat (0.00s) === RUN TestGetFederationToken_PolicyEmbedding --- PASS: TestGetFederationToken_PolicyEmbedding (0.00s) === RUN TestGetFederationToken_PolicyIntersection --- PASS: TestGetFederationToken_PolicyIntersection (0.00s) === RUN TestGetFederationToken_MalformedPolicy === RUN TestGetFederationToken_MalformedPolicy/InvalidJSON === RUN TestGetFederationToken_MalformedPolicy/EmptyObject === RUN TestGetFederationToken_MalformedPolicy/TooLarge === RUN TestGetFederationToken_MalformedPolicy/ValidPolicy === RUN TestGetFederationToken_MalformedPolicy/EmptyString --- PASS: TestGetFederationToken_MalformedPolicy (0.00s) --- PASS: TestGetFederationToken_MalformedPolicy/InvalidJSON (0.00s) --- PASS: TestGetFederationToken_MalformedPolicy/EmptyObject (0.00s) --- PASS: TestGetFederationToken_MalformedPolicy/TooLarge (0.00s) --- PASS: TestGetFederationToken_MalformedPolicy/ValidPolicy (0.00s) --- PASS: TestGetFederationToken_MalformedPolicy/EmptyString (0.00s) === RUN TestGetFederationToken_STSNotReady --- PASS: TestGetFederationToken_STSNotReady (0.00s) === RUN TestGetFederationToken_DefaultDuration --- PASS: TestGetFederationToken_DefaultDuration (0.00s) === RUN TestGetFederationToken_GetPoliciesForUser === RUN TestGetFederationToken_GetPoliciesForUser/NoUserStore === RUN TestGetFederationToken_GetPoliciesForUser/UserNotFound === RUN TestGetFederationToken_GetPoliciesForUser/UserWithPolicies === RUN TestGetFederationToken_GetPoliciesForUser/UserWithNoPolicies --- PASS: TestGetFederationToken_GetPoliciesForUser (0.00s) --- PASS: TestGetFederationToken_GetPoliciesForUser/NoUserStore (0.00s) --- PASS: TestGetFederationToken_GetPoliciesForUser/UserNotFound (0.00s) --- PASS: TestGetFederationToken_GetPoliciesForUser/UserWithPolicies (0.00s) --- PASS: TestGetFederationToken_GetPoliciesForUser/UserWithNoPolicies (0.00s) === RUN TestGetFederationToken_PolicyMergeAndDedup --- PASS: TestGetFederationToken_PolicyMergeAndDedup (0.00s) === RUN TestGetFederationToken_PolicyMergeNoManager --- PASS: TestGetFederationToken_PolicyMergeNoManager (0.00s) === RUN TestBuildListTablesRequestRejectsInvalidNamespaceQuery === RUN TestBuildListTablesRequestRejectsInvalidNamespaceQuery/uppercase === RUN TestBuildListTablesRequestRejectsInvalidNamespaceQuery/hyphen === RUN TestBuildListTablesRequestRejectsInvalidNamespaceQuery/slash --- PASS: TestBuildListTablesRequestRejectsInvalidNamespaceQuery (0.00s) --- PASS: TestBuildListTablesRequestRejectsInvalidNamespaceQuery/uppercase (0.00s) --- PASS: TestBuildListTablesRequestRejectsInvalidNamespaceQuery/hyphen (0.00s) --- PASS: TestBuildListTablesRequestRejectsInvalidNamespaceQuery/slash (0.00s) === RUN TestBuildGetTableRequestRejectsInvalidNamespaceQuery === RUN TestBuildGetTableRequestRejectsInvalidNamespaceQuery/uppercase === RUN TestBuildGetTableRequestRejectsInvalidNamespaceQuery/hyphen === RUN TestBuildGetTableRequestRejectsInvalidNamespaceQuery/slash --- PASS: TestBuildGetTableRequestRejectsInvalidNamespaceQuery (0.00s) --- PASS: TestBuildGetTableRequestRejectsInvalidNamespaceQuery/uppercase (0.00s) --- PASS: TestBuildGetTableRequestRejectsInvalidNamespaceQuery/hyphen (0.00s) --- PASS: TestBuildGetTableRequestRejectsInvalidNamespaceQuery/slash (0.00s) === RUN TestHandleRestOperationReturnsBadRequestForInvalidNamespaceQuery === RUN TestHandleRestOperationReturnsBadRequestForInvalidNamespaceQuery/uppercase === RUN TestHandleRestOperationReturnsBadRequestForInvalidNamespaceQuery/hyphen === RUN TestHandleRestOperationReturnsBadRequestForInvalidNamespaceQuery/slash --- PASS: TestHandleRestOperationReturnsBadRequestForInvalidNamespaceQuery (0.00s) --- PASS: TestHandleRestOperationReturnsBadRequestForInvalidNamespaceQuery/uppercase (0.00s) --- PASS: TestHandleRestOperationReturnsBadRequestForInvalidNamespaceQuery/hyphen (0.00s) --- PASS: TestHandleRestOperationReturnsBadRequestForInvalidNamespaceQuery/slash (0.00s) === RUN TestCopyObjectResponse 2026-05-05T12:12:53.802710802Z12345678 --- PASS: TestCopyObjectResponse (0.00s) === RUN TestCopyPartResponse 2026-05-05T12:12:53.802728726Z12345678 --- PASS: TestCopyPartResponse (0.00s) === RUN TestVersionIdFormatDetection === RUN TestVersionIdFormatDetection/new_format_-_inverted_timestamp === RUN TestVersionIdFormatDetection/new_format_-_high_value === RUN TestVersionIdFormatDetection/old_format_-_raw_timestamp === RUN TestVersionIdFormatDetection/old_format_-_low_value === RUN TestVersionIdFormatDetection/null_version === RUN TestVersionIdFormatDetection/short_version_ID === RUN TestVersionIdFormatDetection/empty_version_ID --- PASS: TestVersionIdFormatDetection (0.00s) --- PASS: TestVersionIdFormatDetection/new_format_-_inverted_timestamp (0.00s) --- PASS: TestVersionIdFormatDetection/new_format_-_high_value (0.00s) --- PASS: TestVersionIdFormatDetection/old_format_-_raw_timestamp (0.00s) --- PASS: TestVersionIdFormatDetection/old_format_-_low_value (0.00s) --- PASS: TestVersionIdFormatDetection/null_version (0.00s) --- PASS: TestVersionIdFormatDetection/short_version_ID (0.00s) --- PASS: TestVersionIdFormatDetection/empty_version_ID (0.00s) === RUN TestGenerateVersionIdFormats --- PASS: TestGenerateVersionIdFormats (0.00s) === RUN TestGetVersionTimestamp --- PASS: TestGetVersionTimestamp (0.00s) === RUN TestCompareVersionIdsSameFormatOld --- PASS: TestCompareVersionIdsSameFormatOld (0.00s) === RUN TestCompareVersionIdsSameFormatNew --- PASS: TestCompareVersionIdsSameFormatNew (0.00s) === RUN TestCompareVersionIdsMixedFormats --- PASS: TestCompareVersionIdsMixedFormats (0.00s) === RUN TestCompareVersionIdsNullHandling --- PASS: TestCompareVersionIdsNullHandling (0.00s) === RUN TestOldFormatBackwardCompatibility --- PASS: TestOldFormatBackwardCompatibility (0.00s) === RUN TestNewFormatSorting --- PASS: TestNewFormatSorting (0.00s) === RUN TestMixedFormatTransition --- PASS: TestMixedFormatTransition (0.00s) === RUN TestMultipartSSES3RealisticEndToEnd --- PASS: TestMultipartSSES3RealisticEndToEnd (0.08s) === RUN TestBuildMultipartSSES3Reader_LazyChunkFetch --- PASS: TestBuildMultipartSSES3Reader_LazyChunkFetch (0.00s) === RUN TestSTSAssumeRolePostBody === RUN TestSTSAssumeRolePostBody/ActionInQuery === RUN TestSTSAssumeRolePostBody/ActionInBody === RUN TestSTSAssumeRolePostBody/ActionInBodyWithSigV4Style --- PASS: TestSTSAssumeRolePostBody (0.00s) --- PASS: TestSTSAssumeRolePostBody/ActionInQuery (0.00s) --- PASS: TestSTSAssumeRolePostBody/ActionInBody (0.00s) --- PASS: TestSTSAssumeRolePostBody/ActionInBodyWithSigV4Style (0.00s) === RUN TestParseTagsHeader === RUN TestParseTagsHeader/simple_tags === RUN TestParseTagsHeader/URL_encoded_timestamp_-_issue_#7040_scenario === RUN TestParseTagsHeader/URL_encoded_key_and_value === RUN TestParseTagsHeader/empty_value === RUN TestParseTagsHeader/special_characters_encoded === RUN TestParseTagsHeader/invalid_URL_encoding === RUN TestParseTagsHeader/plus_signs_and_equals_in_values --- PASS: TestParseTagsHeader (0.00s) --- PASS: TestParseTagsHeader/simple_tags (0.00s) --- PASS: TestParseTagsHeader/URL_encoded_timestamp_-_issue_#7040_scenario (0.00s) --- PASS: TestParseTagsHeader/URL_encoded_key_and_value (0.00s) --- PASS: TestParseTagsHeader/empty_value (0.00s) --- PASS: TestParseTagsHeader/special_characters_encoded (0.00s) --- PASS: TestParseTagsHeader/invalid_URL_encoding (0.00s) --- PASS: TestParseTagsHeader/plus_signs_and_equals_in_values (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/s3api 1.310s === RUN TestValidateConfiguration === RUN TestValidateConfiguration/nil_config === RUN TestValidateConfiguration/empty_rules === RUN TestValidateConfiguration/valid_single_rule === RUN TestValidateConfiguration/too_many_rules === RUN TestValidateConfiguration/invalid_method === RUN TestValidateConfiguration/empty_origins === RUN TestValidateConfiguration/invalid_origin_with_multiple_wildcards === RUN TestValidateConfiguration/negative_MaxAgeSeconds --- PASS: TestValidateConfiguration (0.00s) --- PASS: TestValidateConfiguration/nil_config (0.00s) --- PASS: TestValidateConfiguration/empty_rules (0.00s) --- PASS: TestValidateConfiguration/valid_single_rule (0.00s) --- PASS: TestValidateConfiguration/too_many_rules (0.00s) --- PASS: TestValidateConfiguration/invalid_method (0.00s) --- PASS: TestValidateConfiguration/empty_origins (0.00s) --- PASS: TestValidateConfiguration/invalid_origin_with_multiple_wildcards (0.00s) --- PASS: TestValidateConfiguration/negative_MaxAgeSeconds (0.00s) === RUN TestValidateOrigin === RUN TestValidateOrigin/empty_origin === RUN TestValidateOrigin/valid_origin === RUN TestValidateOrigin/wildcard_origin === RUN TestValidateOrigin/valid_wildcard_origin === RUN TestValidateOrigin/https_wildcard_origin === RUN TestValidateOrigin/invalid_wildcard_origin === RUN TestValidateOrigin/multiple_wildcards --- PASS: TestValidateOrigin (0.00s) --- PASS: TestValidateOrigin/empty_origin (0.00s) --- PASS: TestValidateOrigin/valid_origin (0.00s) --- PASS: TestValidateOrigin/wildcard_origin (0.00s) --- PASS: TestValidateOrigin/valid_wildcard_origin (0.00s) --- PASS: TestValidateOrigin/https_wildcard_origin (0.00s) --- PASS: TestValidateOrigin/invalid_wildcard_origin (0.00s) --- PASS: TestValidateOrigin/multiple_wildcards (0.00s) === RUN TestParseRequest === RUN TestParseRequest/simple_GET_request === RUN TestParseRequest/OPTIONS_preflight_request === RUN TestParseRequest/request_without_origin --- PASS: TestParseRequest (0.00s) --- PASS: TestParseRequest/simple_GET_request (0.00s) --- PASS: TestParseRequest/OPTIONS_preflight_request (0.00s) --- PASS: TestParseRequest/request_without_origin (0.00s) === RUN TestMatchesOrigin === RUN TestMatchesOrigin/wildcard_match === RUN TestMatchesOrigin/exact_match === RUN TestMatchesOrigin/no_match === RUN TestMatchesOrigin/wildcard_subdomain_match === RUN TestMatchesOrigin/wildcard_subdomain_no_match === RUN TestMatchesOrigin/multiple_origins_with_match === RUN TestMatchesOrigin/https_exact_match === RUN TestMatchesOrigin/https_no_match === RUN TestMatchesOrigin/https_wildcard_subdomain_match === RUN TestMatchesOrigin/https_wildcard_subdomain_no_match_-_base_domain === RUN TestMatchesOrigin/https_wildcard_subdomain_no_match_-_different_domain === RUN TestMatchesOrigin/protocol_mismatch_-_http_pattern_https_origin === RUN TestMatchesOrigin/protocol_mismatch_-_https_pattern_http_origin --- PASS: TestMatchesOrigin (0.00s) --- PASS: TestMatchesOrigin/wildcard_match (0.00s) --- PASS: TestMatchesOrigin/exact_match (0.00s) --- PASS: TestMatchesOrigin/no_match (0.00s) --- PASS: TestMatchesOrigin/wildcard_subdomain_match (0.00s) --- PASS: TestMatchesOrigin/wildcard_subdomain_no_match (0.00s) --- PASS: TestMatchesOrigin/multiple_origins_with_match (0.00s) --- PASS: TestMatchesOrigin/https_exact_match (0.00s) --- PASS: TestMatchesOrigin/https_no_match (0.00s) --- PASS: TestMatchesOrigin/https_wildcard_subdomain_match (0.00s) --- PASS: TestMatchesOrigin/https_wildcard_subdomain_no_match_-_base_domain (0.00s) --- PASS: TestMatchesOrigin/https_wildcard_subdomain_no_match_-_different_domain (0.00s) --- PASS: TestMatchesOrigin/protocol_mismatch_-_http_pattern_https_origin (0.00s) --- PASS: TestMatchesOrigin/protocol_mismatch_-_https_pattern_http_origin (0.00s) === RUN TestMatchesHeader === RUN TestMatchesHeader/empty_allowed_headers === RUN TestMatchesHeader/wildcard_match === RUN TestMatchesHeader/exact_match === RUN TestMatchesHeader/case_insensitive_match === RUN TestMatchesHeader/no_match === RUN TestMatchesHeader/wildcard_prefix_match --- PASS: TestMatchesHeader (0.00s) --- PASS: TestMatchesHeader/empty_allowed_headers (0.00s) --- PASS: TestMatchesHeader/wildcard_match (0.00s) --- PASS: TestMatchesHeader/exact_match (0.00s) --- PASS: TestMatchesHeader/case_insensitive_match (0.00s) --- PASS: TestMatchesHeader/no_match (0.00s) --- PASS: TestMatchesHeader/wildcard_prefix_match (0.00s) === RUN TestEvaluateRequest === RUN TestEvaluateRequest/matching_first_rule === RUN TestEvaluateRequest/matching_second_rule === RUN TestEvaluateRequest/no_matching_rule === RUN TestEvaluateRequest/preflight_request === RUN TestEvaluateRequest/preflight_request_with_forbidden_header === RUN TestEvaluateRequest/request_without_origin --- PASS: TestEvaluateRequest (0.00s) --- PASS: TestEvaluateRequest/matching_first_rule (0.00s) --- PASS: TestEvaluateRequest/matching_second_rule (0.00s) --- PASS: TestEvaluateRequest/no_matching_rule (0.00s) --- PASS: TestEvaluateRequest/preflight_request (0.00s) --- PASS: TestEvaluateRequest/preflight_request_with_forbidden_header (0.00s) --- PASS: TestEvaluateRequest/request_without_origin (0.00s) === RUN TestApplyHeaders === RUN TestApplyHeaders/nil_response === RUN TestApplyHeaders/complete_response === RUN TestApplyHeaders/with_credentials --- PASS: TestApplyHeaders (0.00s) --- PASS: TestApplyHeaders/nil_response (0.00s) --- PASS: TestApplyHeaders/complete_response (0.00s) --- PASS: TestApplyHeaders/with_credentials (0.00s) === RUN TestMiddlewareNonExistentBucket === RUN TestMiddlewareNonExistentBucket/Preflight_request_to_non-existent_bucket_with_global_CORS_config === RUN TestMiddlewareNonExistentBucket/Actual_request_to_non-existent_bucket_with_global_CORS_config === RUN TestMiddlewareNonExistentBucket/Preflight_to_non-existent_bucket_with_specific_origin === RUN TestMiddlewareNonExistentBucket/Preflight_to_non-existent_bucket_with_non-matching_origin === RUN TestMiddlewareNonExistentBucket/Preflight_to_non-existent_bucket_without_CORS_config === RUN TestMiddlewareNonExistentBucket/Bucket_listing_request_to_non-existent_bucket_with_CORS --- PASS: TestMiddlewareNonExistentBucket (0.00s) --- PASS: TestMiddlewareNonExistentBucket/Preflight_request_to_non-existent_bucket_with_global_CORS_config (0.00s) --- PASS: TestMiddlewareNonExistentBucket/Actual_request_to_non-existent_bucket_with_global_CORS_config (0.00s) --- PASS: TestMiddlewareNonExistentBucket/Preflight_to_non-existent_bucket_with_specific_origin (0.00s) --- PASS: TestMiddlewareNonExistentBucket/Preflight_to_non-existent_bucket_with_non-matching_origin (0.00s) --- PASS: TestMiddlewareNonExistentBucket/Preflight_to_non-existent_bucket_without_CORS_config (0.00s) --- PASS: TestMiddlewareNonExistentBucket/Bucket_listing_request_to_non-existent_bucket_with_CORS (0.00s) === RUN TestMiddlewareConsistentBehavior === RUN TestMiddlewareConsistentBehavior/existing_bucket === RUN TestMiddlewareConsistentBehavior/non-existent_bucket --- PASS: TestMiddlewareConsistentBehavior (0.00s) --- PASS: TestMiddlewareConsistentBehavior/existing_bucket (0.00s) --- PASS: TestMiddlewareConsistentBehavior/non-existent_bucket (0.00s) === RUN TestMiddlewareFallbackConfig === RUN TestMiddlewareFallbackConfig/No_bucket_config,_fallback_to_global_config_with_wildcard === RUN TestMiddlewareFallbackConfig/No_bucket_config,_fallback_to_global_config_with_specific_origin === RUN TestMiddlewareFallbackConfig/No_bucket_config,_fallback_rejects_non-matching_origin === RUN TestMiddlewareFallbackConfig/Bucket_config_takes_precedence_over_fallback === RUN TestMiddlewareFallbackConfig/Bucket_config_rejects,_even_though_fallback_would_allow === RUN TestMiddlewareFallbackConfig/No_config_at_all,_no_CORS_headers === RUN TestMiddlewareFallbackConfig/OPTIONS_preflight_with_fallback_config === RUN TestMiddlewareFallbackConfig/OPTIONS_preflight_without_any_config_should_fail --- PASS: TestMiddlewareFallbackConfig (0.00s) --- PASS: TestMiddlewareFallbackConfig/No_bucket_config,_fallback_to_global_config_with_wildcard (0.00s) --- PASS: TestMiddlewareFallbackConfig/No_bucket_config,_fallback_to_global_config_with_specific_origin (0.00s) --- PASS: TestMiddlewareFallbackConfig/No_bucket_config,_fallback_rejects_non-matching_origin (0.00s) --- PASS: TestMiddlewareFallbackConfig/Bucket_config_takes_precedence_over_fallback (0.00s) --- PASS: TestMiddlewareFallbackConfig/Bucket_config_rejects,_even_though_fallback_would_allow (0.00s) --- PASS: TestMiddlewareFallbackConfig/No_config_at_all,_no_CORS_headers (0.00s) --- PASS: TestMiddlewareFallbackConfig/OPTIONS_preflight_with_fallback_config (0.00s) --- PASS: TestMiddlewareFallbackConfig/OPTIONS_preflight_without_any_config_should_fail (0.00s) === RUN TestMiddlewareFallbackConfigWithMultipleOrigins === RUN TestMiddlewareFallbackConfigWithMultipleOrigins/First_allowed_origin_should_match === RUN TestMiddlewareFallbackConfigWithMultipleOrigins/Second_allowed_origin_should_match === RUN TestMiddlewareFallbackConfigWithMultipleOrigins/Non-allowed_origin_should_not_match --- PASS: TestMiddlewareFallbackConfigWithMultipleOrigins (0.00s) --- PASS: TestMiddlewareFallbackConfigWithMultipleOrigins/First_allowed_origin_should_match (0.00s) --- PASS: TestMiddlewareFallbackConfigWithMultipleOrigins/Second_allowed_origin_should_match (0.00s) --- PASS: TestMiddlewareFallbackConfigWithMultipleOrigins/Non-allowed_origin_should_not_match (0.00s) === RUN TestMiddlewareFallbackWithError === RUN TestMiddlewareFallbackWithError/ErrAccessDenied_should_not_trigger_fallback === RUN TestMiddlewareFallbackWithError/ErrInternalError_should_not_trigger_fallback === RUN TestMiddlewareFallbackWithError/ErrNoSuchBucket_should_trigger_fallback === RUN TestMiddlewareFallbackWithError/ErrNoSuchCORSConfiguration_should_trigger_fallback --- PASS: TestMiddlewareFallbackWithError (0.00s) --- PASS: TestMiddlewareFallbackWithError/ErrAccessDenied_should_not_trigger_fallback (0.00s) --- PASS: TestMiddlewareFallbackWithError/ErrInternalError_should_not_trigger_fallback (0.00s) --- PASS: TestMiddlewareFallbackWithError/ErrNoSuchBucket_should_trigger_fallback (0.00s) --- PASS: TestMiddlewareFallbackWithError/ErrNoSuchCORSConfiguration_should_trigger_fallback (0.00s) === RUN TestMiddlewareVaryHeader === RUN TestMiddlewareVaryHeader/Specific_allowed_origin === RUN TestMiddlewareVaryHeader/Wildcard_allowed_origin === RUN TestMiddlewareVaryHeader/No_CORS_configuration --- PASS: TestMiddlewareVaryHeader (0.00s) --- PASS: TestMiddlewareVaryHeader/Specific_allowed_origin (0.00s) --- PASS: TestMiddlewareVaryHeader/Wildcard_allowed_origin (0.00s) --- PASS: TestMiddlewareVaryHeader/No_CORS_configuration (0.00s) === RUN TestHandleOptionsRequestVaryHeader --- PASS: TestHandleOptionsRequestVaryHeader (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/s3api/cors 0.007s === RUN TestHandleOAuthTokens_Success --- PASS: TestHandleOAuthTokens_Success (0.00s) === RUN TestHandleOAuthTokens_InvalidCredentials --- PASS: TestHandleOAuthTokens_InvalidCredentials (0.00s) === RUN TestHandleOAuthTokens_UnsupportedGrantType --- PASS: TestHandleOAuthTokens_UnsupportedGrantType (0.00s) === RUN TestBearerTokenRoundTrip --- PASS: TestBearerTokenRoundTrip (0.00s) === RUN TestBearerTokenInvalid --- PASS: TestBearerTokenInvalid (0.00s) === RUN TestBearerTokenNone --- PASS: TestBearerTokenNone (0.00s) === RUN TestParseCommitUpdatesSeparatesStatistics --- PASS: TestParseCommitUpdatesSeparatesStatistics (0.00s) === RUN TestParseCommitUpdatesRejectsIncompleteSetStatistics --- PASS: TestParseCommitUpdatesRejectsIncompleteSetStatistics (0.00s) === RUN TestApplyStatisticsUpdatesUpsertAndRemove --- PASS: TestApplyStatisticsUpdatesUpsertAndRemove (0.00s) === RUN TestIsS3TablesConflict --- PASS: TestIsS3TablesConflict (0.00s) === RUN TestValidateCreateTableRequestRequiresName --- PASS: TestValidateCreateTableRequestRequiresName (0.00s) === RUN TestValidateCreateTableRequestAcceptsWithName --- PASS: TestValidateCreateTableRequestAcceptsWithName (0.00s) === RUN TestIsStageCreateEnabledDefaultsToTrue --- PASS: TestIsStageCreateEnabledDefaultsToTrue (0.00s) === RUN TestIsStageCreateEnabledFalseValues --- PASS: TestIsStageCreateEnabledFalseValues (0.00s) === RUN TestGetBucketFromPrefix_WarehouseQueryFallback === RUN TestGetBucketFromPrefix_WarehouseQueryFallback/warehouse_query_routes_to_its_bucket_when_no_prefix_in_path === RUN TestGetBucketFromPrefix_WarehouseQueryFallback/warehouse_query_with_sub-path_still_picks_the_bucket === RUN TestGetBucketFromPrefix_WarehouseQueryFallback/malformed_warehouse_value_falls_through_to_default === RUN TestGetBucketFromPrefix_WarehouseQueryFallback/no_warehouse_and_no_prefix_returns_default --- PASS: TestGetBucketFromPrefix_WarehouseQueryFallback (0.00s) --- PASS: TestGetBucketFromPrefix_WarehouseQueryFallback/warehouse_query_routes_to_its_bucket_when_no_prefix_in_path (0.00s) --- PASS: TestGetBucketFromPrefix_WarehouseQueryFallback/warehouse_query_with_sub-path_still_picks_the_bucket (0.00s) --- PASS: TestGetBucketFromPrefix_WarehouseQueryFallback/malformed_warehouse_value_falls_through_to_default (0.00s) --- PASS: TestGetBucketFromPrefix_WarehouseQueryFallback/no_warehouse_and_no_prefix_returns_default (0.00s) === RUN TestBuildFileIOConfig === RUN TestBuildFileIOConfig/no_endpoint_configured_yields_empty_config === RUN TestBuildFileIOConfig/endpoint_is_advertised_with_path-style-access_and_region --- PASS: TestBuildFileIOConfig (0.00s) --- PASS: TestBuildFileIOConfig/no_endpoint_configured_yields_empty_config (0.00s) --- PASS: TestBuildFileIOConfig/endpoint_is_advertised_with_path-style-access_and_region (0.00s) === RUN TestNormalizeNamespacePropertiesNil --- PASS: TestNormalizeNamespacePropertiesNil (0.00s) === RUN TestNormalizeNamespacePropertiesReturnsInputWhenSet --- PASS: TestNormalizeNamespacePropertiesReturnsInputWhenSet (0.00s) === RUN TestParsePaginationDefaultValues --- PASS: TestParsePaginationDefaultValues (0.00s) === RUN TestParsePaginationUsesCamelCaseParameters --- PASS: TestParsePaginationUsesCamelCaseParameters (0.00s) === RUN TestParsePaginationSupportsHyphenatedFallback --- PASS: TestParsePaginationSupportsHyphenatedFallback (0.00s) === RUN TestParsePaginationRejectsInvalidPageSize === RUN TestParsePaginationRejectsInvalidPageSize//v1/namespaces?pageSize=0 === RUN TestParsePaginationRejectsInvalidPageSize//v1/namespaces?pageSize=-1 === RUN TestParsePaginationRejectsInvalidPageSize//v1/namespaces?pageSize=foo === RUN TestParsePaginationRejectsInvalidPageSize//v1/namespaces?pageSize=1001 --- PASS: TestParsePaginationRejectsInvalidPageSize (0.00s) --- PASS: TestParsePaginationRejectsInvalidPageSize//v1/namespaces?pageSize=0 (0.00s) --- PASS: TestParsePaginationRejectsInvalidPageSize//v1/namespaces?pageSize=-1 (0.00s) --- PASS: TestParsePaginationRejectsInvalidPageSize//v1/namespaces?pageSize=foo (0.00s) --- PASS: TestParsePaginationRejectsInvalidPageSize//v1/namespaces?pageSize=1001 (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/s3api/iceberg 0.101s === RUN TestCheckPostPolicy_RejectsUnknownConditionKey --- PASS: TestCheckPostPolicy_RejectsUnknownConditionKey (0.00s) === RUN TestCheckPostPolicy_RejectsExtraXAmzFormField --- PASS: TestCheckPostPolicy_RejectsExtraXAmzFormField (0.00s) === RUN TestCheckPostPolicy_AllowsXAmzAuthFields --- PASS: TestCheckPostPolicy_AllowsXAmzAuthFields (0.00s) === RUN TestCheckPostPolicy_AllowsMatchingXAmzField --- PASS: TestCheckPostPolicy_AllowsMatchingXAmzField (0.00s) === RUN TestCheckPostPolicy_ExistingXAmzMetaCheckStillWorks --- PASS: TestCheckPostPolicy_ExistingXAmzMetaCheckStillWorks (0.00s) === RUN TestCheckPostPolicy_AllowsStartsWithPrefixStem --- PASS: TestCheckPostPolicy_AllowsStartsWithPrefixStem (0.00s) === RUN TestCheckPostPolicy_PrefixStemDoesNotCoverOtherPrefixes --- PASS: TestCheckPostPolicy_PrefixStemDoesNotCoverOtherPrefixes (0.00s) === RUN TestCheckPostPolicy_PrefixStemEnforcesValuePrefix --- PASS: TestCheckPostPolicy_PrefixStemEnforcesValuePrefix (0.00s) === RUN TestCheckPostPolicy_ExactAndPrefixBothEnforced --- PASS: TestCheckPostPolicy_ExactAndPrefixBothEnforced (0.00s) === RUN TestCheckPostPolicy_MultiplePrefixStemsAllEnforced --- PASS: TestCheckPostPolicy_MultiplePrefixStemsAllEnforced (0.00s) === RUN TestCheckPostPolicy_UnknownKeyErrorIncludesPolicyValue --- PASS: TestCheckPostPolicy_UnknownKeyErrorIncludesPolicyValue (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/s3api/policy 0.004s === RUN TestExtractPrincipalVariables === RUN TestExtractPrincipalVariables/IAM_User_ARN === RUN TestExtractPrincipalVariables/Assumed_Role_ARN === RUN TestExtractPrincipalVariables/IAM_Role_ARN === RUN TestExtractPrincipalVariables/Non-ARN_principal === RUN TestExtractPrincipalVariables/Wildcard_principal --- PASS: TestExtractPrincipalVariables (0.00s) --- PASS: TestExtractPrincipalVariables/IAM_User_ARN (0.00s) --- PASS: TestExtractPrincipalVariables/Assumed_Role_ARN (0.00s) --- PASS: TestExtractPrincipalVariables/IAM_Role_ARN (0.00s) --- PASS: TestExtractPrincipalVariables/Non-ARN_principal (0.00s) --- PASS: TestExtractPrincipalVariables/Wildcard_principal (0.00s) === RUN TestSubstituteVariablesWithClaims === RUN TestSubstituteVariablesWithClaims/Standard_context_variable === RUN TestSubstituteVariablesWithClaims/JWT_claim_substitution === RUN TestSubstituteVariablesWithClaims/Mixed_variables === RUN TestSubstituteVariablesWithClaims/Variable_not_found --- PASS: TestSubstituteVariablesWithClaims (0.00s) --- PASS: TestSubstituteVariablesWithClaims/Standard_context_variable (0.00s) --- PASS: TestSubstituteVariablesWithClaims/JWT_claim_substitution (0.00s) --- PASS: TestSubstituteVariablesWithClaims/Mixed_variables (0.00s) --- PASS: TestSubstituteVariablesWithClaims/Variable_not_found (0.00s) === RUN TestPolicyVariablesWithPrincipalType --- PASS: TestPolicyVariablesWithPrincipalType (0.00s) === RUN TestPolicyVariablesWithJWTClaims --- PASS: TestPolicyVariablesWithJWTClaims (0.00s) === RUN TestExtractPrincipalVariablesWithAccount --- PASS: TestExtractPrincipalVariablesWithAccount (0.00s) === RUN TestSubstituteVariablesWithLDAP --- PASS: TestSubstituteVariablesWithLDAP (0.00s) === RUN TestSubstituteVariablesSpecialChars === RUN TestSubstituteVariablesSpecialChars/Comparison_operators_in_claims/vars === RUN TestSubstituteVariablesSpecialChars/Path_traversal_attempt_(should_just_substitute_text) --- PASS: TestSubstituteVariablesSpecialChars (0.00s) --- PASS: TestSubstituteVariablesSpecialChars/Comparison_operators_in_claims/vars (0.00s) --- PASS: TestSubstituteVariablesSpecialChars/Path_traversal_attempt_(should_just_substitute_text) (0.00s) === RUN TestIsolationPolicy --- PASS: TestIsolationPolicy (0.00s) === RUN TestNotResourceWithVariables --- PASS: TestNotResourceWithVariables (0.00s) === RUN TestExtractPrincipalVariablesWithPaths === RUN TestExtractPrincipalVariablesWithPaths/IAM_User_with_path === RUN TestExtractPrincipalVariablesWithPaths/IAM_Role_with_path === RUN TestExtractPrincipalVariablesWithPaths/Assumed_Role_with_path --- PASS: TestExtractPrincipalVariablesWithPaths (0.00s) --- PASS: TestExtractPrincipalVariablesWithPaths/IAM_User_with_path (0.00s) --- PASS: TestExtractPrincipalVariablesWithPaths/IAM_Role_with_path (0.00s) --- PASS: TestExtractPrincipalVariablesWithPaths/Assumed_Role_with_path (0.00s) === RUN TestPolicyEngine --- PASS: TestPolicyEngine (0.00s) === RUN TestConditionEvaluators === RUN TestConditionEvaluators/StringEquals_-_match === RUN TestConditionEvaluators/StringEquals_-_no_match === RUN TestConditionEvaluators/StringLike_-_wildcard_match === RUN TestConditionEvaluators/StringLike_-_wildcard_no_match === RUN TestConditionEvaluators/NumericEquals_-_match === RUN TestConditionEvaluators/NumericLessThan_-_match === RUN TestConditionEvaluators/NumericLessThan_-_no_match === RUN TestConditionEvaluators/IpAddress_-_CIDR_match === RUN TestConditionEvaluators/IpAddress_-_CIDR_no_match === RUN TestConditionEvaluators/Bool_-_true_match === RUN TestConditionEvaluators/Bool_-_false_match === RUN TestConditionEvaluators/Bool_-_no_match --- PASS: TestConditionEvaluators (0.00s) --- PASS: TestConditionEvaluators/StringEquals_-_match (0.00s) --- PASS: TestConditionEvaluators/StringEquals_-_no_match (0.00s) --- PASS: TestConditionEvaluators/StringLike_-_wildcard_match (0.00s) --- PASS: TestConditionEvaluators/StringLike_-_wildcard_no_match (0.00s) --- PASS: TestConditionEvaluators/NumericEquals_-_match (0.00s) --- PASS: TestConditionEvaluators/NumericLessThan_-_match (0.00s) --- PASS: TestConditionEvaluators/NumericLessThan_-_no_match (0.00s) --- PASS: TestConditionEvaluators/IpAddress_-_CIDR_match (0.00s) --- PASS: TestConditionEvaluators/IpAddress_-_CIDR_no_match (0.00s) --- PASS: TestConditionEvaluators/Bool_-_true_match (0.00s) --- PASS: TestConditionEvaluators/Bool_-_false_match (0.00s) --- PASS: TestConditionEvaluators/Bool_-_no_match (0.00s) === RUN TestPolicyValidation === RUN TestPolicyValidation/Valid_policy === RUN TestPolicyValidation/Valid_policy_with_single_statement_object === RUN TestPolicyValidation/Invalid_version === RUN TestPolicyValidation/Missing_action === RUN TestPolicyValidation/Invalid_JSON --- PASS: TestPolicyValidation (0.00s) --- PASS: TestPolicyValidation/Valid_policy (0.00s) --- PASS: TestPolicyValidation/Valid_policy_with_single_statement_object (0.00s) --- PASS: TestPolicyValidation/Invalid_version (0.00s) --- PASS: TestPolicyValidation/Missing_action (0.00s) --- PASS: TestPolicyValidation/Invalid_JSON (0.00s) === RUN TestPatternMatching === RUN TestPatternMatching/Exact_match === RUN TestPatternMatching/Wildcard_match === RUN TestPatternMatching/Wildcard_no_match === RUN TestPatternMatching/Full_wildcard === RUN TestPatternMatching/Question_mark_wildcard --- PASS: TestPatternMatching (0.00s) --- PASS: TestPatternMatching/Exact_match (0.00s) --- PASS: TestPatternMatching/Wildcard_match (0.00s) --- PASS: TestPatternMatching/Wildcard_no_match (0.00s) --- PASS: TestPatternMatching/Full_wildcard (0.00s) --- PASS: TestPatternMatching/Question_mark_wildcard (0.00s) === RUN TestExtractConditionValuesFromRequest --- PASS: TestExtractConditionValuesFromRequest (0.00s) === RUN TestExtractConditionValuesFromRequestSourceIPPrecedence === RUN TestExtractConditionValuesFromRequestSourceIPPrecedence/uses_right-most_public_X-Forwarded-For_entry === RUN TestExtractConditionValuesFromRequestSourceIPPrecedence/falls_back_to_X-Real-Ip_when_X-Forwarded-For_has_no_valid_ip === RUN TestExtractConditionValuesFromRequestSourceIPPrecedence/uses_RemoteAddr_ip_when_no_forwarding_headers === RUN TestExtractConditionValuesFromRequestSourceIPPrecedence/keeps_unix_socket_marker_when_RemoteAddr_is_not_an_ip === RUN TestExtractConditionValuesFromRequestSourceIPPrecedence/uses_IPv6_X-Forwarded-For_entry === RUN TestExtractConditionValuesFromRequestSourceIPPrecedence/ignores_spoofed_IP_when_real_client_is_public === RUN TestExtractConditionValuesFromRequestSourceIPPrecedence/handles_bracketed_IPv6_remote_address === RUN TestExtractConditionValuesFromRequestSourceIPPrecedence/avoids_returning_DNS_host_names --- PASS: TestExtractConditionValuesFromRequestSourceIPPrecedence (0.00s) --- PASS: TestExtractConditionValuesFromRequestSourceIPPrecedence/uses_right-most_public_X-Forwarded-For_entry (0.00s) --- PASS: TestExtractConditionValuesFromRequestSourceIPPrecedence/falls_back_to_X-Real-Ip_when_X-Forwarded-For_has_no_valid_ip (0.00s) --- PASS: TestExtractConditionValuesFromRequestSourceIPPrecedence/uses_RemoteAddr_ip_when_no_forwarding_headers (0.00s) --- PASS: TestExtractConditionValuesFromRequestSourceIPPrecedence/keeps_unix_socket_marker_when_RemoteAddr_is_not_an_ip (0.00s) --- PASS: TestExtractConditionValuesFromRequestSourceIPPrecedence/uses_IPv6_X-Forwarded-For_entry (0.00s) --- PASS: TestExtractConditionValuesFromRequestSourceIPPrecedence/ignores_spoofed_IP_when_real_client_is_public (0.00s) --- PASS: TestExtractConditionValuesFromRequestSourceIPPrecedence/handles_bracketed_IPv6_remote_address (0.00s) --- PASS: TestExtractConditionValuesFromRequestSourceIPPrecedence/avoids_returning_DNS_host_names (0.00s) === RUN TestPolicyEvaluationWithConditions --- PASS: TestPolicyEvaluationWithConditions (0.00s) === RUN TestResourceArn === RUN TestResourceArn/Bucket_only === RUN TestResourceArn/Bucket_and_object === RUN TestResourceArn/Bucket_and_nested_object --- PASS: TestResourceArn (0.00s) --- PASS: TestResourceArn/Bucket_only (0.00s) --- PASS: TestResourceArn/Bucket_and_object (0.00s) --- PASS: TestResourceArn/Bucket_and_nested_object (0.00s) === RUN TestActionConversion === RUN TestActionConversion/Already_has_s3_prefix === RUN TestActionConversion/Add_s3_prefix --- PASS: TestActionConversion (0.00s) --- PASS: TestActionConversion/Already_has_s3_prefix (0.00s) --- PASS: TestActionConversion/Add_s3_prefix (0.00s) === RUN TestPolicyEngineForRequest --- PASS: TestPolicyEngineForRequest (0.00s) === RUN TestWildcardMatching === RUN TestWildcardMatching/Exact_match === RUN TestWildcardMatching/Single_wildcard === RUN TestWildcardMatching/Prefix_wildcard === RUN TestWildcardMatching/Suffix_wildcard === RUN TestWildcardMatching/Middle_wildcard === RUN TestWildcardMatching/No_match === RUN TestWildcardMatching/Multiple_wildcards --- PASS: TestWildcardMatching (0.00s) --- PASS: TestWildcardMatching/Exact_match (0.00s) --- PASS: TestWildcardMatching/Single_wildcard (0.00s) --- PASS: TestWildcardMatching/Prefix_wildcard (0.00s) --- PASS: TestWildcardMatching/Suffix_wildcard (0.00s) --- PASS: TestWildcardMatching/Middle_wildcard (0.00s) --- PASS: TestWildcardMatching/No_match (0.00s) --- PASS: TestWildcardMatching/Multiple_wildcards (0.00s) === RUN TestCompilePolicy --- PASS: TestCompilePolicy (0.00s) === RUN TestExistingObjectTagCondition === RUN TestExistingObjectTagCondition/Matching_tag_value_-_should_allow === RUN TestExistingObjectTagCondition/Non-matching_tag_value_-_should_be_indeterminate === RUN TestExistingObjectTagCondition/Missing_tag_-_should_be_indeterminate === RUN TestExistingObjectTagCondition/No_tags_-_should_be_indeterminate === RUN TestExistingObjectTagCondition/Empty_tags_-_should_be_indeterminate === RUN TestExistingObjectTagCondition/Multiple_tags_with_matching_one_-_should_allow --- PASS: TestExistingObjectTagCondition (0.00s) --- PASS: TestExistingObjectTagCondition/Matching_tag_value_-_should_allow (0.00s) --- PASS: TestExistingObjectTagCondition/Non-matching_tag_value_-_should_be_indeterminate (0.00s) --- PASS: TestExistingObjectTagCondition/Missing_tag_-_should_be_indeterminate (0.00s) --- PASS: TestExistingObjectTagCondition/No_tags_-_should_be_indeterminate (0.00s) --- PASS: TestExistingObjectTagCondition/Empty_tags_-_should_be_indeterminate (0.00s) --- PASS: TestExistingObjectTagCondition/Multiple_tags_with_matching_one_-_should_allow (0.00s) === RUN TestExistingObjectTagConditionMultipleTags === RUN TestExistingObjectTagConditionMultipleTags/Both_tags_match_-_should_allow === RUN TestExistingObjectTagConditionMultipleTags/Both_tags_match_(premium_tier)_-_should_allow === RUN TestExistingObjectTagConditionMultipleTags/Only_status_matches_-_should_be_indeterminate === RUN TestExistingObjectTagConditionMultipleTags/Only_tier_matches_-_should_be_indeterminate === RUN TestExistingObjectTagConditionMultipleTags/Neither_tag_matches_-_should_be_indeterminate --- PASS: TestExistingObjectTagConditionMultipleTags (0.00s) --- PASS: TestExistingObjectTagConditionMultipleTags/Both_tags_match_-_should_allow (0.00s) --- PASS: TestExistingObjectTagConditionMultipleTags/Both_tags_match_(premium_tier)_-_should_allow (0.00s) --- PASS: TestExistingObjectTagConditionMultipleTags/Only_status_matches_-_should_be_indeterminate (0.00s) --- PASS: TestExistingObjectTagConditionMultipleTags/Only_tier_matches_-_should_be_indeterminate (0.00s) --- PASS: TestExistingObjectTagConditionMultipleTags/Neither_tag_matches_-_should_be_indeterminate (0.00s) === RUN TestExistingObjectTagDenyPolicy === RUN TestExistingObjectTagDenyPolicy/No_tags_-_allow_by_default_statement === RUN TestExistingObjectTagDenyPolicy/Non-confidential_tag_-_allow === RUN TestExistingObjectTagDenyPolicy/Confidential_tag_-_deny --- PASS: TestExistingObjectTagDenyPolicy (0.00s) --- PASS: TestExistingObjectTagDenyPolicy/No_tags_-_allow_by_default_statement (0.00s) --- PASS: TestExistingObjectTagDenyPolicy/Non-confidential_tag_-_allow (0.00s) --- PASS: TestExistingObjectTagDenyPolicy/Confidential_tag_-_deny (0.00s) === RUN TestMultipartUploadInheritsPutObjectPermission === RUN TestMultipartUploadInheritsPutObjectPermission/s3:CreateMultipartUpload === RUN TestMultipartUploadInheritsPutObjectPermission/s3:UploadPart === RUN TestMultipartUploadInheritsPutObjectPermission/s3:UploadPartCopy === RUN TestMultipartUploadInheritsPutObjectPermission/s3:CompleteMultipartUpload === RUN TestMultipartUploadInheritsPutObjectPermission/s3:AbortMultipartUpload === RUN TestMultipartUploadInheritsPutObjectPermission/s3:ListMultipartUploadParts === RUN TestMultipartUploadInheritsPutObjectPermission/s3:ListBucketMultipartUploads === RUN TestMultipartUploadInheritsPutObjectPermission/s3:ListBucketMultipartUploads_bucket_ARN === RUN TestMultipartUploadInheritsPutObjectPermission/s3:DeleteObject_not_inherited --- PASS: TestMultipartUploadInheritsPutObjectPermission (0.00s) --- PASS: TestMultipartUploadInheritsPutObjectPermission/s3:CreateMultipartUpload (0.00s) --- PASS: TestMultipartUploadInheritsPutObjectPermission/s3:UploadPart (0.00s) --- PASS: TestMultipartUploadInheritsPutObjectPermission/s3:UploadPartCopy (0.00s) --- PASS: TestMultipartUploadInheritsPutObjectPermission/s3:CompleteMultipartUpload (0.00s) --- PASS: TestMultipartUploadInheritsPutObjectPermission/s3:AbortMultipartUpload (0.00s) --- PASS: TestMultipartUploadInheritsPutObjectPermission/s3:ListMultipartUploadParts (0.00s) --- PASS: TestMultipartUploadInheritsPutObjectPermission/s3:ListBucketMultipartUploads (0.00s) --- PASS: TestMultipartUploadInheritsPutObjectPermission/s3:ListBucketMultipartUploads_bucket_ARN (0.00s) --- PASS: TestMultipartUploadInheritsPutObjectPermission/s3:DeleteObject_not_inherited (0.00s) === RUN TestPolicyVariables --- PASS: TestPolicyVariables (0.00s) === RUN TestEvaluatePolicyForRequestVariables --- PASS: TestEvaluatePolicyForRequestVariables (0.00s) === RUN TestSSEStringEqualsPresent --- PASS: TestSSEStringEqualsPresent (0.00s) === RUN TestSSEStringEqualsWrongValue --- PASS: TestSSEStringEqualsWrongValue (0.00s) === RUN TestSSENullConditionAbsent --- PASS: TestSSENullConditionAbsent (0.00s) === RUN TestSSENullConditionPresent --- PASS: TestSSENullConditionPresent (0.00s) === RUN TestSSECaseInsensitiveNormalizationAES256 --- PASS: TestSSECaseInsensitiveNormalizationAES256 (0.00s) === RUN TestSSECaseInsensitiveNormalizationKMS --- PASS: TestSSECaseInsensitiveNormalizationKMS (0.00s) === RUN TestSSEMultipartAES256Exempt --- PASS: TestSSEMultipartAES256Exempt (0.00s) === RUN TestSSEMultipartKMSExempt --- PASS: TestSSEMultipartKMSExempt (0.00s) === RUN TestSSEMultipartNoSSEDenied --- PASS: TestSSEMultipartNoSSEDenied (0.00s) === RUN TestSSEUploadPartCopyKMSExempt --- PASS: TestSSEUploadPartCopyKMSExempt (0.00s) === RUN TestSSEPutObjectStillBlockedWithoutHeader --- PASS: TestSSEPutObjectStillBlockedWithoutHeader (0.00s) === RUN TestCloneStringOrStringSliceCopiesBackingSlice --- PASS: TestCloneStringOrStringSliceCopiesBackingSlice (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/s3api/policy_engine 0.012s === RUN TestNormalizeObjectKey === RUN TestNormalizeObjectKey/simple_key === RUN TestNormalizeObjectKey/key_with_leading_slash === RUN TestNormalizeObjectKey/key_with_directory === RUN TestNormalizeObjectKey/key_with_leading_slash_and_directory === RUN TestNormalizeObjectKey/key_with_duplicate_slashes === RUN TestNormalizeObjectKey/Windows_backslash_-_simple === RUN TestNormalizeObjectKey/Windows_backslash_-_nested === RUN TestNormalizeObjectKey/Windows_backslash_-_with_leading_slash === RUN TestNormalizeObjectKey/mixed_slashes === RUN TestNormalizeObjectKey/Windows_full_path_style_(edge_case) === RUN TestNormalizeObjectKey/empty_string === RUN TestNormalizeObjectKey/just_a_slash === RUN TestNormalizeObjectKey/just_a_backslash --- PASS: TestNormalizeObjectKey (0.00s) --- PASS: TestNormalizeObjectKey/simple_key (0.00s) --- PASS: TestNormalizeObjectKey/key_with_leading_slash (0.00s) --- PASS: TestNormalizeObjectKey/key_with_directory (0.00s) --- PASS: TestNormalizeObjectKey/key_with_leading_slash_and_directory (0.00s) --- PASS: TestNormalizeObjectKey/key_with_duplicate_slashes (0.00s) --- PASS: TestNormalizeObjectKey/Windows_backslash_-_simple (0.00s) --- PASS: TestNormalizeObjectKey/Windows_backslash_-_nested (0.00s) --- PASS: TestNormalizeObjectKey/Windows_backslash_-_with_leading_slash (0.00s) --- PASS: TestNormalizeObjectKey/mixed_slashes (0.00s) --- PASS: TestNormalizeObjectKey/Windows_full_path_style_(edge_case) (0.00s) --- PASS: TestNormalizeObjectKey/empty_string (0.00s) --- PASS: TestNormalizeObjectKey/just_a_slash (0.00s) --- PASS: TestNormalizeObjectKey/just_a_backslash (0.00s) === RUN TestRemoveDuplicateSlashes === RUN TestRemoveDuplicateSlashes/no_duplicates === RUN TestRemoveDuplicateSlashes/double_slash === RUN TestRemoveDuplicateSlashes/triple_slash === RUN TestRemoveDuplicateSlashes/multiple_duplicate_locations === RUN TestRemoveDuplicateSlashes/empty_string --- PASS: TestRemoveDuplicateSlashes (0.00s) --- PASS: TestRemoveDuplicateSlashes/no_duplicates (0.00s) --- PASS: TestRemoveDuplicateSlashes/double_slash (0.00s) --- PASS: TestRemoveDuplicateSlashes/triple_slash (0.00s) --- PASS: TestRemoveDuplicateSlashes/multiple_duplicate_locations (0.00s) --- PASS: TestRemoveDuplicateSlashes/empty_string (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/s3api/s3_constants 0.004s ? github.com/seaweedfs/seaweedfs/weed/s3api/s3_objectlock [no test files] === RUN Test_verifyBucketName --- PASS: Test_verifyBucketName (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/s3api/s3bucket 0.003s === RUN TestGetAccessLogUsesAmzRequestID --- PASS: TestGetAccessLogUsesAmzRequestID (0.00s) === RUN TestGetAccessLogRemoteIP === RUN TestGetAccessLogRemoteIP/falls_back_to_RemoteAddr_(port_stripped)_when_no_headers_set === RUN TestGetAccessLogRemoteIP/preserves_IPv6_host_from_RemoteAddr === RUN TestGetAccessLogRemoteIP/returns_RemoteAddr_unchanged_when_no_port_present === RUN TestGetAccessLogRemoteIP/uses_X-Real-IP_when_X-Forwarded-For_is_absent === RUN TestGetAccessLogRemoteIP/prefers_X-Forwarded-For_over_X-Real-IP === RUN TestGetAccessLogRemoteIP/uses_first_hop_in_X-Forwarded-For_chain === RUN TestGetAccessLogRemoteIP/skips_empty_leading_entries_in_X-Forwarded-For --- PASS: TestGetAccessLogRemoteIP (0.00s) --- PASS: TestGetAccessLogRemoteIP/falls_back_to_RemoteAddr_(port_stripped)_when_no_headers_set (0.00s) --- PASS: TestGetAccessLogRemoteIP/preserves_IPv6_host_from_RemoteAddr (0.00s) --- PASS: TestGetAccessLogRemoteIP/returns_RemoteAddr_unchanged_when_no_port_present (0.00s) --- PASS: TestGetAccessLogRemoteIP/uses_X-Real-IP_when_X-Forwarded-For_is_absent (0.00s) --- PASS: TestGetAccessLogRemoteIP/prefers_X-Forwarded-For_over_X-Real-IP (0.00s) --- PASS: TestGetAccessLogRemoteIP/uses_first_hop_in_X-Forwarded-For_chain (0.00s) --- PASS: TestGetAccessLogRemoteIP/skips_empty_leading_entries_in_X-Forwarded-For (0.00s) === RUN TestWriteErrorResponseReusesRequestID --- PASS: TestWriteErrorResponseReusesRequestID (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/s3api/s3err 0.005s ? github.com/seaweedfs/seaweedfs/weed/s3api/s3lifecycle [no test files] === RUN TestGetAccountIDPrefersClaimsOverAccountID --- PASS: TestGetAccountIDPrefersClaimsOverAccountID (0.00s) === RUN TestGetAccountIDUsesSubWhenPreferredUsernameMissing --- PASS: TestGetAccountIDUsesSubWhenPreferredUsernameMissing (0.00s) === RUN TestGetAccountIDFallsBackToHandlerDefaultAccount --- PASS: TestGetAccountIDFallsBackToHandlerDefaultAccount (0.00s) === RUN TestGetAccountIDIgnoresEmptyClaimValues --- PASS: TestGetAccountIDIgnoresEmptyClaimValues (0.00s) === RUN TestGetAccountIDFallsBackToIdentityName --- PASS: TestGetAccountIDFallsBackToIdentityName (0.00s) === RUN TestGetAccountIDFallsBackToARNColonSegment --- PASS: TestGetAccountIDFallsBackToARNColonSegment (0.00s) === RUN TestGetAccountIDFallsBackToAmzAccountIdHeader --- PASS: TestGetAccountIDFallsBackToAmzAccountIdHeader (0.00s) === RUN TestGetAccountIDFallsBackToAccountID --- PASS: TestGetAccountIDFallsBackToAccountID (0.00s) === RUN TestGetAccountIDNormalizesAccountIDARN --- PASS: TestGetAccountIDNormalizesAccountIDARN (0.00s) === RUN TestMatchesActionPattern === RUN TestMatchesActionPattern/exact_match === RUN TestMatchesActionPattern/no_match === RUN TestMatchesActionPattern/universal_wildcard === RUN TestMatchesActionPattern/suffix_wildcard_match === RUN TestMatchesActionPattern/suffix_wildcard_no_match === RUN TestMatchesActionPattern/middle_wildcard_Get*Table === RUN TestMatchesActionPattern/middle_wildcard_Get*Table_no_match_GetTableBucket === RUN TestMatchesActionPattern/middle_wildcard_Get*Table_no_match_DeleteTable === RUN TestMatchesActionPattern/middle_wildcard_*Table* === RUN TestMatchesActionPattern/middle_wildcard_*Table*_match_CreateTable === RUN TestMatchesActionPattern/question_mark_single_char === RUN TestMatchesActionPattern/question_mark_no_match === RUN TestMatchesActionPattern/combined_*_and_?_singular === RUN TestMatchesActionPattern/combined_*_and_?_plural === RUN TestMatchesActionPattern/combined_no_match_-_?_needs_1_char --- PASS: TestMatchesActionPattern (0.00s) --- PASS: TestMatchesActionPattern/exact_match (0.00s) --- PASS: TestMatchesActionPattern/no_match (0.00s) --- PASS: TestMatchesActionPattern/universal_wildcard (0.00s) --- PASS: TestMatchesActionPattern/suffix_wildcard_match (0.00s) --- PASS: TestMatchesActionPattern/suffix_wildcard_no_match (0.00s) --- PASS: TestMatchesActionPattern/middle_wildcard_Get*Table (0.00s) --- PASS: TestMatchesActionPattern/middle_wildcard_Get*Table_no_match_GetTableBucket (0.00s) --- PASS: TestMatchesActionPattern/middle_wildcard_Get*Table_no_match_DeleteTable (0.00s) --- PASS: TestMatchesActionPattern/middle_wildcard_*Table* (0.00s) --- PASS: TestMatchesActionPattern/middle_wildcard_*Table*_match_CreateTable (0.00s) --- PASS: TestMatchesActionPattern/question_mark_single_char (0.00s) --- PASS: TestMatchesActionPattern/question_mark_no_match (0.00s) --- PASS: TestMatchesActionPattern/combined_*_and_?_singular (0.00s) --- PASS: TestMatchesActionPattern/combined_*_and_?_plural (0.00s) --- PASS: TestMatchesActionPattern/combined_no_match_-_?_needs_1_char (0.00s) === RUN TestMatchesPrincipal === RUN TestMatchesPrincipal/exact_match === RUN TestMatchesPrincipal/no_match === RUN TestMatchesPrincipal/universal_wildcard === RUN TestMatchesPrincipal/prefix_wildcard === RUN TestMatchesPrincipal/prefix_wildcard_no_match === RUN TestMatchesPrincipal/middle_wildcard === RUN TestMatchesPrincipal/array_match_first === RUN TestMatchesPrincipal/array_match_second === RUN TestMatchesPrincipal/array_no_match === RUN TestMatchesPrincipal/array_wildcard === RUN TestMatchesPrincipal/AWS_map_exact === RUN TestMatchesPrincipal/AWS_map_wildcard === RUN TestMatchesPrincipal/AWS_map_array === RUN TestMatchesPrincipal/nil_principal --- PASS: TestMatchesPrincipal (0.00s) --- PASS: TestMatchesPrincipal/exact_match (0.00s) --- PASS: TestMatchesPrincipal/no_match (0.00s) --- PASS: TestMatchesPrincipal/universal_wildcard (0.00s) --- PASS: TestMatchesPrincipal/prefix_wildcard (0.00s) --- PASS: TestMatchesPrincipal/prefix_wildcard_no_match (0.00s) --- PASS: TestMatchesPrincipal/middle_wildcard (0.00s) --- PASS: TestMatchesPrincipal/array_match_first (0.00s) --- PASS: TestMatchesPrincipal/array_match_second (0.00s) --- PASS: TestMatchesPrincipal/array_no_match (0.00s) --- PASS: TestMatchesPrincipal/array_wildcard (0.00s) --- PASS: TestMatchesPrincipal/AWS_map_exact (0.00s) --- PASS: TestMatchesPrincipal/AWS_map_wildcard (0.00s) --- PASS: TestMatchesPrincipal/AWS_map_array (0.00s) --- PASS: TestMatchesPrincipal/nil_principal (0.00s) === RUN TestEvaluatePolicyWithConditions === RUN TestEvaluatePolicyWithConditions/all_conditions_match === RUN TestEvaluatePolicyWithConditions/namespace_mismatch === RUN TestEvaluatePolicyWithConditions/table_name_mismatch === RUN TestEvaluatePolicyWithConditions/numeric_condition_failure === RUN TestEvaluatePolicyWithConditions/bool_condition_failure --- PASS: TestEvaluatePolicyWithConditions (0.00s) --- PASS: TestEvaluatePolicyWithConditions/all_conditions_match (0.00s) --- PASS: TestEvaluatePolicyWithConditions/namespace_mismatch (0.00s) --- PASS: TestEvaluatePolicyWithConditions/table_name_mismatch (0.00s) --- PASS: TestEvaluatePolicyWithConditions/numeric_condition_failure (0.00s) --- PASS: TestEvaluatePolicyWithConditions/bool_condition_failure (0.00s) === RUN TestCheckPermissionWithDefaultAllow === RUN TestCheckPermissionWithDefaultAllow/default_deny_(no_policy,_DefaultAllow=false) === RUN TestCheckPermissionWithDefaultAllow/default_allow_(no_policy,_DefaultAllow=true) === RUN TestCheckPermissionWithDefaultAllow/explicit_deny_overrides_DefaultAllow=true === RUN TestCheckPermissionWithDefaultAllow/explicit_allow_works_with_DefaultAllow=false --- PASS: TestCheckPermissionWithDefaultAllow (0.00s) --- PASS: TestCheckPermissionWithDefaultAllow/default_deny_(no_policy,_DefaultAllow=false) (0.00s) --- PASS: TestCheckPermissionWithDefaultAllow/default_allow_(no_policy,_DefaultAllow=true) (0.00s) --- PASS: TestCheckPermissionWithDefaultAllow/explicit_deny_overrides_DefaultAllow=true (0.00s) --- PASS: TestCheckPermissionWithDefaultAllow/explicit_allow_works_with_DefaultAllow=false (0.00s) === RUN TestValidateNamespaceSupportsMultiLevel --- PASS: TestValidateNamespaceSupportsMultiLevel (0.00s) === RUN TestValidateNamespaceSupportsDottedInput --- PASS: TestValidateNamespaceSupportsDottedInput (0.00s) === RUN TestValidateNamespaceRejectsEmptyDottedSegment --- PASS: TestValidateNamespaceRejectsEmptyDottedSegment (0.00s) === RUN TestParseNamespace === RUN TestParseNamespace/single_level === RUN TestParseNamespace/multi_level_dotted === RUN TestParseNamespace/invalid_reserved_prefix === RUN TestParseNamespace/invalid_empty_segment --- PASS: TestParseNamespace (0.00s) --- PASS: TestParseNamespace/single_level (0.00s) --- PASS: TestParseNamespace/multi_level_dotted (0.00s) --- PASS: TestParseNamespace/invalid_reserved_prefix (0.00s) --- PASS: TestParseNamespace/invalid_empty_segment (0.00s) === RUN TestParseTableFromARNWithMultiLevelNamespace --- PASS: TestParseTableFromARNWithMultiLevelNamespace (0.00s) === RUN TestBuildTableARNWithDottedNamespace --- PASS: TestBuildTableARNWithDottedNamespace (0.00s) === RUN TestExpandNamespace --- PASS: TestExpandNamespace (0.00s) === RUN TestNamespaceMetadataPropertiesRoundTrip === RUN TestNamespaceMetadataPropertiesRoundTrip/with_properties === RUN TestNamespaceMetadataPropertiesRoundTrip/nil_properties === RUN TestNamespaceMetadataPropertiesRoundTrip/empty_properties --- PASS: TestNamespaceMetadataPropertiesRoundTrip (0.00s) --- PASS: TestNamespaceMetadataPropertiesRoundTrip/with_properties (0.00s) --- PASS: TestNamespaceMetadataPropertiesRoundTrip/nil_properties (0.00s) --- PASS: TestNamespaceMetadataPropertiesRoundTrip/empty_properties (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/s3api/s3tables 0.017s === RUN TestSNI_HostnameStripsPort --- PASS: TestSNI_HostnameStripsPort (0.00s) === RUN TestSNI_IPAddressEmptySNI --- PASS: TestSNI_IPAddressEmptySNI (0.00s) === RUN TestSNI_IPv6AddressEmptySNI --- PASS: TestSNI_IPv6AddressEmptySNI (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/security 0.012s === RUN TestServerGetCertificatePicksUpNewFile --- PASS: TestServerGetCertificatePicksUpNewFile (1.20s) PASS ok github.com/seaweedfs/seaweedfs/weed/security/certreload 1.205s === RUN TestSequencer I0505 12:12:52.624832 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid:for_test hex_of_nodeid: 1 1c78e04b14001000 1c78e04b14001001 1c78e04b14001002 1c78e04b14001003 1c78e04b14001004 1c78e04b14001005 1c78e04b14001006 1c78e04b14001007 1c78e04b14001008 1c78e04b14001009 1c78e04b1400100a 1c78e04b1400100b 1c78e04b1400100c 1c78e04b1400100d 1c78e04b1400100e 1c78e04b1400100f 1c78e04b14001010 1c78e04b14001011 1c78e04b14001012 1c78e04b14001013 1c78e04b14001014 1c78e04b14001015 1c78e04b14001016 1c78e04b14001017 1c78e04b14001018 1c78e04b14001019 1c78e04b1400101a 1c78e04b1400101b 1c78e04b1400101c 1c78e04b1400101d 1c78e04b1400101e 1c78e04b1400101f 1c78e04b14001020 1c78e04b14001021 1c78e04b14001022 1c78e04b14001023 1c78e04b14001024 1c78e04b14001025 1c78e04b14001026 1c78e04b14001027 1c78e04b14001028 1c78e04b14001029 1c78e04b1400102a 1c78e04b1400102b 1c78e04b1400102c 1c78e04b1400102d 1c78e04b1400102e 1c78e04b1400102f 1c78e04b14001030 1c78e04b14001031 1c78e04b14001032 1c78e04b14001033 1c78e04b14001034 1c78e04b14001035 1c78e04b14001036 1c78e04b14001037 1c78e04b14001038 1c78e04b14001039 1c78e04b1400103a 1c78e04b1400103b 1c78e04b1400103c 1c78e04b1400103d 1c78e04b1400103e 1c78e04b1400103f 1c78e04b14001040 1c78e04b14001041 1c78e04b14001042 1c78e04b14001043 1c78e04b14001044 1c78e04b14001045 1c78e04b14001046 1c78e04b14001047 1c78e04b14001048 1c78e04b14001049 1c78e04b1400104a 1c78e04b1400104b 1c78e04b1400104c 1c78e04b1400104d 1c78e04b1400104e 1c78e04b1400104f 1c78e04b14001050 1c78e04b14001051 1c78e04b14001052 1c78e04b14001053 1c78e04b14001054 1c78e04b14001055 1c78e04b14001056 1c78e04b14001057 1c78e04b14001058 1c78e04b14001059 1c78e04b1400105a 1c78e04b1400105b 1c78e04b1400105c 1c78e04b1400105d 1c78e04b1400105e 1c78e04b1400105f 1c78e04b14001060 1c78e04b14001061 1c78e04b14001062 1c78e04b14001063 --- PASS: TestSequencer (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/sequence 0.011s === RUN TestParseURL --- PASS: TestParseURL (0.00s) === RUN TestFindLockOwnerExpiredLockReturnsNotFound I0505 12:12:52.636899 filer_grpc_server_dlm.go:122 find lock expired-lock moved to : lock not found --- PASS: TestFindLockOwnerExpiredLockReturnsNotFound (0.00s) === RUN TestMountRegister_EnabledStoresAndLists --- PASS: TestMountRegister_EnabledStoresAndLists (0.00s) === RUN TestMountRegister_RenewIsIdempotent --- PASS: TestMountRegister_RenewIsIdempotent (0.00s) === RUN TestAtomicRenameEntryEmitsLogicalRenameEvent --- PASS: TestAtomicRenameEntryEmitsLogicalRenameEvent (0.01s) === RUN TestAtomicRenameEntryOverwriteEmitsDeleteThenRename --- PASS: TestAtomicRenameEntryOverwriteEmitsDeleteThenRename (0.00s) === RUN TestAtomicRenameEntryDoesNotEmitEventOnDeleteFailure --- PASS: TestAtomicRenameEntryDoesNotEmitEventOnDeleteFailure (0.00s) === RUN TestAtomicRenameEntryDoesNotEmitEventOnCommitFailure --- PASS: TestAtomicRenameEntryDoesNotEmitEventOnCommitFailure (0.00s) === RUN TestAtomicRenameEntrySkipsDescendantTargetLookups --- PASS: TestAtomicRenameEntrySkipsDescendantTargetLookups (0.00s) === RUN TestReproStreamSerializationCeiling filer_grpc_server_stream_mutate_bench_test.go:550: service delay: 2ms filer_grpc_server_stream_mutate_bench_test.go:551: concurrency: 12 filer_grpc_server_stream_mutate_bench_test.go:552: ops per run: 1200 filer_grpc_server_stream_mutate_bench_test.go:553: unary : 1200 calls in 274.981061ms -> 4364 QPS filer_grpc_server_stream_mutate_bench_test.go:554: stream : 1200 calls in 2.709656116s -> 443 QPS filer_grpc_server_stream_mutate_bench_test.go:555: unary / stream ratio: 9.85x --- PASS: TestReproStreamSerializationCeiling (2.99s) === RUN TestServerSerialVsConcurrentHandler filer_grpc_server_stream_mutate_bench_test.go:617: service delay: 2ms filer_grpc_server_stream_mutate_bench_test.go:618: server-side concurrency cap: 64 filer_grpc_server_stream_mutate_bench_test.go:619: theoretical serial ceiling: 500 QPS filer_grpc_server_stream_mutate_bench_test.go:620: theoretical concurrent cap: 32000 QPS filer_grpc_server_stream_mutate_bench_test.go:621: ops per run: 2400 filer_grpc_server_stream_mutate_bench_test.go:622: filer_grpc_server_stream_mutate_bench_test.go:623: client workers serial QPS concurrent QPS lift filer_grpc_server_stream_mutate_bench_test.go:637: 1 401 393 0.98x filer_grpc_server_stream_mutate_bench_test.go:637: 12 377 3847 10.20x filer_grpc_server_stream_mutate_bench_test.go:637: 64 349 19092 54.70x filer_grpc_server_stream_mutate_bench_test.go:637: 256 389 21735 55.87x --- PASS: TestServerSerialVsConcurrentHandler (32.36s) === RUN TestSchedulerOrderedParallelism filer_grpc_server_stream_mutate_bench_test.go:698: service delay: 2ms filer_grpc_server_stream_mutate_bench_test.go:699: server concurrency: 64 filer_grpc_server_stream_mutate_bench_test.go:700: client workers: 12 filer_grpc_server_stream_mutate_bench_test.go:701: ops per run: 2400 filer_grpc_server_stream_mutate_bench_test.go:702: serial ceiling: 500 QPS filer_grpc_server_stream_mutate_bench_test.go:703: concurrent ceiling: 32000 QPS (64 x 500) filer_grpc_server_stream_mutate_bench_test.go:704: filer_grpc_server_stream_mutate_bench_test.go:714: workload serial QPS sem QPS sched QPS sched peak-conc filer_grpc_server_stream_mutate_bench_test.go:732: distinct paths 399 4678 4635 12 filer_grpc_server_stream_mutate_bench_test.go:732: same path 436 5155 443 1 --- PASS: TestSchedulerOrderedParallelism (18.45s) === RUN TestStreamSyncVsAsyncClient filer_grpc_server_stream_mutate_bench_test.go:772: service delay: 2ms (theoretical serial ceiling = 500 QPS) filer_grpc_server_stream_mutate_bench_test.go:774: ops per run: 2400 filer_grpc_server_stream_mutate_bench_test.go:775: filer_grpc_server_stream_mutate_bench_test.go:776: concurrency sync QPS async QPS ratio filer_grpc_server_stream_mutate_bench_test.go:789: 1 452 460 1.02 x filer_grpc_server_stream_mutate_bench_test.go:789: 12 456 460 1.01 x filer_grpc_server_stream_mutate_bench_test.go:789: 64 462 464 1.01 x filer_grpc_server_stream_mutate_bench_test.go:789: 256 462 460 1.00 x --- PASS: TestStreamSyncVsAsyncClient (45.81s) === RUN TestMutatePathAncestors --- PASS: TestMutatePathAncestors (0.00s) === RUN TestClassifyMutation === RUN TestClassifyMutation/create_file === RUN TestClassifyMutation/create_directory_(barrier) === RUN TestClassifyMutation/update_file === RUN TestClassifyMutation/update_directory_(non-barrier_attr_bump) === RUN TestClassifyMutation/delete_non-recursive_(barrier:_target_type_unknown) === RUN TestClassifyMutation/delete_recursive_(barrier) === RUN TestClassifyMutation/malformed_create_(nil_Entry) === RUN TestClassifyMutation/malformed_update_(nil_Entry) === RUN TestClassifyMutation/empty_oneof === RUN TestClassifyMutation/rename --- PASS: TestClassifyMutation (0.00s) --- PASS: TestClassifyMutation/create_file (0.00s) --- PASS: TestClassifyMutation/create_directory_(barrier) (0.00s) --- PASS: TestClassifyMutation/update_file (0.00s) --- PASS: TestClassifyMutation/update_directory_(non-barrier_attr_bump) (0.00s) --- PASS: TestClassifyMutation/delete_non-recursive_(barrier:_target_type_unknown) (0.00s) --- PASS: TestClassifyMutation/delete_recursive_(barrier) (0.00s) --- PASS: TestClassifyMutation/malformed_create_(nil_Entry) (0.00s) --- PASS: TestClassifyMutation/malformed_update_(nil_Entry) (0.00s) --- PASS: TestClassifyMutation/empty_oneof (0.00s) --- PASS: TestClassifyMutation/rename (0.00s) === RUN TestPathConflictSamePathFile --- PASS: TestPathConflictSamePathFile (0.00s) === RUN TestPathConflictBarrierBlocksSamePath --- PASS: TestPathConflictBarrierBlocksSamePath (0.00s) === RUN TestPathConflictBarrierBlocksDescendants --- PASS: TestPathConflictBarrierBlocksDescendants (0.00s) === RUN TestPathConflictIncomingBarrierWaitsForDescendants --- PASS: TestPathConflictIncomingBarrierWaitsForDescendants (0.00s) === RUN TestPathConflictNonBarrierDirAllowsDescendants --- PASS: TestPathConflictNonBarrierDirAllowsDescendants (0.00s) === RUN TestPathConflictIncomingBarrierWaitsForSamePathNonBarrier --- PASS: TestPathConflictIncomingBarrierWaitsForSamePathNonBarrier (0.00s) === RUN TestAdmitDoneLifecycle --- PASS: TestAdmitDoneLifecycle (0.05s) === RUN TestAdmitParallelDistinctPaths --- PASS: TestAdmitParallelDistinctPaths (0.00s) === RUN TestAdmitConcurrencyCap --- PASS: TestAdmitConcurrencyCap (0.05s) === RUN TestAdmitRenameTwoPathConflict --- PASS: TestAdmitRenameTwoPathConflict (0.05s) === RUN TestAdmitSamePathFIFO --- PASS: TestAdmitSamePathFIFO (0.04s) === RUN TestAdmitSamePathNonBarrierSerializes --- PASS: TestAdmitSamePathNonBarrierSerializes (0.03s) === RUN TestAdmitPressureFromManyWaiters --- PASS: TestAdmitPressureFromManyWaiters (0.11s) === RUN TestPipelinedSenderThroughput === RUN TestPipelinedSenderThroughput/direct_send filer_grpc_server_sub_meta_test.go:121: direct: 2100 events 2100 sends 2.266s 927 events/sec === RUN TestPipelinedSenderThroughput/pipelined_batched_send filer_grpc_server_sub_meta_test.go:146: pipelined+batch: 2100 events 14 sends 39ms 54234 events/sec === NAME TestPipelinedSenderThroughput filer_grpc_server_sub_meta_test.go:151: Speedup: 58.5x (pipelined+batched vs direct) --- PASS: TestPipelinedSenderThroughput (2.30s) --- PASS: TestPipelinedSenderThroughput/direct_send (2.27s) --- PASS: TestPipelinedSenderThroughput/pipelined_batched_send (0.04s) === RUN TestEachEventNotificationFnMatchesRenameTargetsForAllWatchTypes === RUN TestEachEventNotificationFnMatchesRenameTargetsForAllWatchTypes/additional_path_prefix === RUN TestEachEventNotificationFnMatchesRenameTargetsForAllWatchTypes/directory_watch --- PASS: TestEachEventNotificationFnMatchesRenameTargetsForAllWatchTypes (0.00s) --- PASS: TestEachEventNotificationFnMatchesRenameTargetsForAllWatchTypes/additional_path_prefix (0.00s) --- PASS: TestEachEventNotificationFnMatchesRenameTargetsForAllWatchTypes/directory_watch (0.00s) === RUN TestBatchingAdaptive === RUN TestBatchingAdaptive/old_events_are_batched filer_grpc_server_sub_meta_test.go:224: old events: 500 events in 2 sends (avg batch size: 250.0) === RUN TestBatchingAdaptive/recent_events_sent_individually filer_grpc_server_sub_meta_test.go:243: recent events: 500 events in 500 sends (avg batch size: 1.0) --- PASS: TestBatchingAdaptive (0.53s) --- PASS: TestBatchingAdaptive/old_events_are_batched (0.00s) --- PASS: TestBatchingAdaptive/recent_events_sent_individually (0.52s) === RUN TestPipelinedSenderErrorPropagation === RUN TestPipelinedSenderErrorPropagation/send_returns_error filer_grpc_server_sub_meta_test.go:292: Send returned error after stream failure: connection reset === RUN TestPipelinedSenderErrorPropagation/close_returns_error_if_not_consumed filer_grpc_server_sub_meta_test.go:309: Close returned error: connection reset --- PASS: TestPipelinedSenderErrorPropagation (0.00s) --- PASS: TestPipelinedSenderErrorPropagation/send_returns_error (0.00s) --- PASS: TestPipelinedSenderErrorPropagation/close_returns_error_if_not_consumed (0.00s) === RUN TestPipelinedSingleVsParallelStreams === RUN TestPipelinedSingleVsParallelStreams/1_pipelined_stream filer_grpc_server_sub_meta_test.go:377: 1 stream: 21000 events 140 sends 374ms 56150 events/sec === RUN TestPipelinedSingleVsParallelStreams/10_pipelined_streams filer_grpc_server_sub_meta_test.go:404: 10 streams: 21000 events 140 sends 40ms 528017 events/sec === NAME TestPipelinedSingleVsParallelStreams filer_grpc_server_sub_meta_test.go:409: Speedup: 9.4x (10 parallel pipelined streams vs 1) --- PASS: TestPipelinedSingleVsParallelStreams (0.42s) --- PASS: TestPipelinedSingleVsParallelStreams/1_pipelined_stream (0.37s) --- PASS: TestPipelinedSingleVsParallelStreams/10_pipelined_streams (0.04s) === RUN TestResolveAssignStorageOptionUsesBucketRuleBeforeFilerDiskDefault --- PASS: TestResolveAssignStorageOptionUsesBucketRuleBeforeFilerDiskDefault (0.00s) === RUN TestResolveAssignStorageOptionFallsBackToFilerDiskDefault --- PASS: TestResolveAssignStorageOptionFallsBackToFilerDiskDefault (0.00s) === RUN TestPtrie matched1 /topics/abc matched1 /topics/abc/d matched2 /topics/abc matched2 /topics/abc/d --- PASS: TestPtrie (0.00s) === RUN TestFilerServer_maybeCheckJwtAuthorization_Scoped === RUN TestFilerServer_maybeCheckJwtAuthorization_Scoped/no_restrictions === RUN TestFilerServer_maybeCheckJwtAuthorization_Scoped/allowed_prefix_match === RUN TestFilerServer_maybeCheckJwtAuthorization_Scoped/allowed_prefix_mismatch === RUN TestFilerServer_maybeCheckJwtAuthorization_Scoped/allowed_method_match === RUN TestFilerServer_maybeCheckJwtAuthorization_Scoped/allowed_method_mismatch === RUN TestFilerServer_maybeCheckJwtAuthorization_Scoped/both_match === RUN TestFilerServer_maybeCheckJwtAuthorization_Scoped/prefix_match,_method_mismatch === RUN TestFilerServer_maybeCheckJwtAuthorization_Scoped/multiple_prefixes_match === RUN TestFilerServer_maybeCheckJwtAuthorization_Scoped/write_operation_with_method_restriction === RUN TestFilerServer_maybeCheckJwtAuthorization_Scoped/root_path_with_prefix_restriction === RUN TestFilerServer_maybeCheckJwtAuthorization_Scoped/root_path_without_token === RUN TestFilerServer_maybeCheckJwtAuthorization_Scoped/exact_prefix_match --- PASS: TestFilerServer_maybeCheckJwtAuthorization_Scoped (0.00s) --- PASS: TestFilerServer_maybeCheckJwtAuthorization_Scoped/no_restrictions (0.00s) --- PASS: TestFilerServer_maybeCheckJwtAuthorization_Scoped/allowed_prefix_match (0.00s) --- PASS: TestFilerServer_maybeCheckJwtAuthorization_Scoped/allowed_prefix_mismatch (0.00s) --- PASS: TestFilerServer_maybeCheckJwtAuthorization_Scoped/allowed_method_match (0.00s) --- PASS: TestFilerServer_maybeCheckJwtAuthorization_Scoped/allowed_method_mismatch (0.00s) --- PASS: TestFilerServer_maybeCheckJwtAuthorization_Scoped/both_match (0.00s) --- PASS: TestFilerServer_maybeCheckJwtAuthorization_Scoped/prefix_match,_method_mismatch (0.00s) --- PASS: TestFilerServer_maybeCheckJwtAuthorization_Scoped/multiple_prefixes_match (0.00s) --- PASS: TestFilerServer_maybeCheckJwtAuthorization_Scoped/write_operation_with_method_restriction (0.00s) --- PASS: TestFilerServer_maybeCheckJwtAuthorization_Scoped/root_path_with_prefix_restriction (0.00s) --- PASS: TestFilerServer_maybeCheckJwtAuthorization_Scoped/root_path_without_token (0.00s) --- PASS: TestFilerServer_maybeCheckJwtAuthorization_Scoped/exact_prefix_match (0.00s) === RUN TestCopyEntryRefreshesDestinationTimestamps --- PASS: TestCopyEntryRefreshesDestinationTimestamps (0.00s) === RUN TestPreserveDestinationMetadataForDataCopy --- PASS: TestPreserveDestinationMetadataForDataCopy (0.00s) === RUN TestValidateCopySourcePreconditions --- PASS: TestValidateCopySourcePreconditions (0.00s) === RUN TestValidateCopyDestinationPreconditions --- PASS: TestValidateCopyDestinationPreconditions (0.00s) === RUN TestRecentCopyRequestDeduplicatesByRequestID --- PASS: TestRecentCopyRequestDeduplicatesByRequestID (0.00s) === RUN TestProxySemaphore_LimitsConcurrency --- PASS: TestProxySemaphore_LimitsConcurrency (0.00s) === RUN TestProxySemaphore_ContextCancellation --- PASS: TestProxySemaphore_ContextCancellation (0.00s) === RUN TestProxySemaphore_PerHostIsolation --- PASS: TestProxySemaphore_PerHostIsolation (0.00s) === RUN TestRaftLeadershipTransfer_NoRaft --- PASS: TestRaftLeadershipTransfer_NoRaft (0.00s) === RUN TestRaftListClusterServers_NoRaft --- PASS: TestRaftListClusterServers_NoRaft (0.00s) === RUN TestRaftAddServer_NoRaft --- PASS: TestRaftAddServer_NoRaft (0.00s) === RUN TestRaftRemoveServer_NoRaft --- PASS: TestRaftRemoveServer_NoRaft (0.00s) === RUN TestInitialLockRingUpdateReturnsLastBroadcastForFilers I0505 12:14:35.832869 lock_ring_manager.go:139 LockRing: broadcasting ring update for group "group-a" version 1777983275832863421: [filer1:8888 filer2:8888] --- PASS: TestInitialLockRingUpdateReturnsLastBroadcastForFilers (0.00s) === RUN TestInitialLockRingUpdateSkipsNonFilers I0505 12:14:35.832913 lock_ring_manager.go:139 LockRing: broadcasting ring update for group "group-a" version 1777983275832909127: [filer1:8888] --- PASS: TestInitialLockRingUpdateSkipsNonFilers (0.00s) === RUN TestRaftServerID === RUN TestRaftServerID/without_grpc_suffix === RUN TestRaftServerID/with_grpc_suffix --- PASS: TestRaftServerID (0.00s) --- PASS: TestRaftServerID/without_grpc_suffix (0.00s) --- PASS: TestRaftServerID/with_grpc_suffix (0.00s) === RUN TestGetPeerIdxUsesCanonicalID --- PASS: TestGetPeerIdxUsesCanonicalID (0.00s) === RUN TestAddPeersConfigurationUsesCanonicalIDs --- PASS: TestAddPeersConfigurationUsesCanonicalIDs (0.00s) === RUN TestCheckEcVolumeStatusCountOnlyDataShards --- PASS: TestCheckEcVolumeStatusCountOnlyDataShards (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/server 103.217s ? github.com/seaweedfs/seaweedfs/weed/server/constants [no test files] === RUN TestToBreadcrumb === RUN TestToBreadcrumb/empty === RUN TestToBreadcrumb/test1 === RUN TestToBreadcrumb/test2 === RUN TestToBreadcrumb/test3 --- PASS: TestToBreadcrumb (0.00s) --- PASS: TestToBreadcrumb/empty (0.00s) --- PASS: TestToBreadcrumb/test1 (0.00s) --- PASS: TestToBreadcrumb/test2 (0.00s) --- PASS: TestToBreadcrumb/test3 (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/server/filer_ui 0.005s ? github.com/seaweedfs/seaweedfs/weed/server/master_ui [no test files] === RUN TestClientAuthorizerResolvesHostnameEntries --- PASS: TestClientAuthorizerResolvesHostnameEntries (0.00s) === RUN TestFileHandleEncodeDecodeRoundTrip --- PASS: TestFileHandleEncodeDecodeRoundTrip (0.00s) === RUN TestResolverUsesPathVisibleFromExportRoot --- PASS: TestResolverUsesPathVisibleFromExportRoot (0.00s) === RUN TestResolverRejectsGenerationMismatch --- PASS: TestResolverRejectsGenerationMismatch (0.00s) === RUN TestResolverKeepsHandleValidAcrossRename --- PASS: TestResolverKeepsHandleValidAcrossRename (0.00s) === RUN TestResolverRejectsHandleAfterDeleteRecreateWithNewInode --- PASS: TestResolverRejectsHandleAfterDeleteRecreateWithNewInode (0.00s) === RUN TestResolverSupportsSyntheticRootHandle --- PASS: TestResolverSupportsSyntheticRootHandle (0.00s) === RUN TestNewServerNormalizesExportRootAndExportID --- PASS: TestNewServerNormalizesExportRootAndExportID (0.00s) === RUN TestSeaweedNFSAcceptsAnyMountPathOverRPC === RUN TestSeaweedNFSAcceptsAnyMountPathOverRPC// I0505 12:12:52.640379 handler.go:46 nfs mount: client requested "/" (outside export "/buckets/data"); serving configured export === RUN TestSeaweedNFSAcceptsAnyMountPathOverRPC//buckets I0505 12:12:52.641507 handler.go:46 nfs mount: client requested "/buckets" (outside export "/buckets/data"); serving configured export === RUN TestSeaweedNFSAcceptsAnyMountPathOverRPC//buckets/other I0505 12:12:52.642173 handler.go:46 nfs mount: client requested "/buckets/other" (outside export "/buckets/data"); serving configured export === RUN TestSeaweedNFSAcceptsAnyMountPathOverRPC//wrong/path I0505 12:12:52.644344 handler.go:46 nfs mount: client requested "/wrong/path" (outside export "/buckets/data"); serving configured export === RUN TestSeaweedNFSAcceptsAnyMountPathOverRPC//buckets/data === RUN TestSeaweedNFSAcceptsAnyMountPathOverRPC//buckets/data/ --- PASS: TestSeaweedNFSAcceptsAnyMountPathOverRPC (0.01s) --- PASS: TestSeaweedNFSAcceptsAnyMountPathOverRPC// (0.00s) --- PASS: TestSeaweedNFSAcceptsAnyMountPathOverRPC//buckets (0.00s) --- PASS: TestSeaweedNFSAcceptsAnyMountPathOverRPC//buckets/other (0.00s) --- PASS: TestSeaweedNFSAcceptsAnyMountPathOverRPC//wrong/path (0.00s) --- PASS: TestSeaweedNFSAcceptsAnyMountPathOverRPC//buckets/data (0.00s) --- PASS: TestSeaweedNFSAcceptsAnyMountPathOverRPC//buckets/data/ (0.00s) === RUN TestSeaweedNFSSubexportMountOverRPC === RUN TestSeaweedNFSSubexportMountOverRPC/mounts_under_export_at_subdirectory === RUN TestSeaweedNFSSubexportMountOverRPC/missing_entry_under_export_rejects === RUN TestSeaweedNFSSubexportMountOverRPC/regular_file_under_export_rejects --- PASS: TestSeaweedNFSSubexportMountOverRPC (0.00s) --- PASS: TestSeaweedNFSSubexportMountOverRPC/mounts_under_export_at_subdirectory (0.00s) --- PASS: TestSeaweedNFSSubexportMountOverRPC/missing_entry_under_export_rejects (0.00s) --- PASS: TestSeaweedNFSSubexportMountOverRPC/regular_file_under_export_rejects (0.00s) === RUN TestSeaweedNFSServesInlineRoundTripOverRPC --- PASS: TestSeaweedNFSServesInlineRoundTripOverRPC (10.08s) === RUN TestSeaweedNFSReadOnlyRejectsMutations 2026/05/05 12:13:02 write(01010000343664ad00000000000000ca00000000000000037b488e93): NFS3ERR_ROFS --- PASS: TestSeaweedNFSReadOnlyRejectsMutations (10.10s) === RUN TestSeaweedNFSServesSymlinkRoundTripOverRPC --- PASS: TestSeaweedNFSServesSymlinkRoundTripOverRPC (10.13s) === RUN TestSeaweedNFSServesHardLinkRoundTripOverRPC --- PASS: TestSeaweedNFSServesHardLinkRoundTripOverRPC (10.10s) === RUN TestSeaweedNFSServesLargeChunkRoundTripOverRPC --- PASS: TestSeaweedNFSServesLargeChunkRoundTripOverRPC (10.11s) === RUN TestSeaweedNFSRejectsStaleHandleAfterDeleteRecreate --- PASS: TestSeaweedNFSRejectsStaleHandleAfterDeleteRecreate (10.06s) === RUN TestSeaweedNFSFileHandleSurvivesServerRestart --- PASS: TestSeaweedNFSFileHandleSurvivesServerRestart (20.13s) === RUN TestMountUDPNullReturnsSuccess --- PASS: TestMountUDPNullReturnsSuccess (0.00s) === RUN TestMountUDPMntReturnsHandleAndFlavors --- PASS: TestMountUDPMntReturnsHandleAndFlavors (0.00s) === RUN TestMountUDPMntAcceptsAnyPath === RUN TestMountUDPMntAcceptsAnyPath// I0505 12:14:13.359513 mount_udp.go:241 mount udp: client 127.0.0.1:44872 requested "/" (outside export "/buckets/data"); serving configured export === RUN TestMountUDPMntAcceptsAnyPath//buckets I0505 12:14:13.359612 mount_udp.go:241 mount udp: client 127.0.0.1:44193 requested "/buckets" (outside export "/buckets/data"); serving configured export === RUN TestMountUDPMntAcceptsAnyPath//buckets/other I0505 12:14:13.359669 mount_udp.go:241 mount udp: client 127.0.0.1:44749 requested "/buckets/other" (outside export "/buckets/data"); serving configured export === RUN TestMountUDPMntAcceptsAnyPath//wrong/path I0505 12:14:13.359710 mount_udp.go:241 mount udp: client 127.0.0.1:34893 requested "/wrong/path" (outside export "/buckets/data"); serving configured export === RUN TestMountUDPMntAcceptsAnyPath/#00 I0505 12:14:13.359768 mount_udp.go:241 mount udp: client 127.0.0.1:42253 requested "" (outside export "/buckets/data"); serving configured export === RUN TestMountUDPMntAcceptsAnyPath/buckets/data I0505 12:14:13.359820 mount_udp.go:241 mount udp: client 127.0.0.1:41273 requested "buckets/data" (outside export "/buckets/data"); serving configured export === RUN TestMountUDPMntAcceptsAnyPath//buckets/data === RUN TestMountUDPMntAcceptsAnyPath//buckets/data/ --- PASS: TestMountUDPMntAcceptsAnyPath (0.00s) --- PASS: TestMountUDPMntAcceptsAnyPath// (0.00s) --- PASS: TestMountUDPMntAcceptsAnyPath//buckets (0.00s) --- PASS: TestMountUDPMntAcceptsAnyPath//buckets/other (0.00s) --- PASS: TestMountUDPMntAcceptsAnyPath//wrong/path (0.00s) --- PASS: TestMountUDPMntAcceptsAnyPath/#00 (0.00s) --- PASS: TestMountUDPMntAcceptsAnyPath/buckets/data (0.00s) --- PASS: TestMountUDPMntAcceptsAnyPath//buckets/data (0.00s) --- PASS: TestMountUDPMntAcceptsAnyPath//buckets/data/ (0.00s) === RUN TestMountUDPSubexportMount === RUN TestMountUDPSubexportMount/subdirectory_one_level === RUN TestMountUDPSubexportMount/subdirectory_two_levels === RUN TestMountUDPSubexportMount/subdirectory_trailing_slash === RUN TestMountUDPSubexportMount/missing_under_export === RUN TestMountUDPSubexportMount/deep_missing_under_export === RUN TestMountUDPSubexportMount/regular_file_not_directory --- PASS: TestMountUDPSubexportMount (0.00s) --- PASS: TestMountUDPSubexportMount/subdirectory_one_level (0.00s) --- PASS: TestMountUDPSubexportMount/subdirectory_two_levels (0.00s) --- PASS: TestMountUDPSubexportMount/subdirectory_trailing_slash (0.00s) --- PASS: TestMountUDPSubexportMount/missing_under_export (0.00s) --- PASS: TestMountUDPSubexportMount/deep_missing_under_export (0.00s) --- PASS: TestMountUDPSubexportMount/regular_file_not_directory (0.00s) === RUN TestMountUDPRejectsWrongVersion --- PASS: TestMountUDPRejectsWrongVersion (0.00s) === RUN TestMountUDPRejectsWrongProgram --- PASS: TestMountUDPRejectsWrongProgram (0.00s) === RUN TestMountUDPUmntAcknowledges --- PASS: TestMountUDPUmntAcknowledges (0.00s) === RUN TestMountUDPRejectsTruncatedMntArgs --- PASS: TestMountUDPRejectsTruncatedMntArgs (0.00s) === RUN TestMountUDPCloseStopsServing --- PASS: TestMountUDPCloseStopsServing (0.00s) === RUN TestParseRPCCall_SkipsAuth --- PASS: TestParseRPCCall_SkipsAuth (0.00s) === RUN TestParseRPCCall_RejectsReply --- PASS: TestParseRPCCall_RejectsReply (0.00s) === RUN TestParseRPCCall_TruncatedAuth --- PASS: TestParseRPCCall_TruncatedAuth (0.00s) === RUN TestHandleCall_Null --- PASS: TestHandleCall_Null (0.00s) === RUN TestHandleCall_GetPort_HitAndMiss === RUN TestHandleCall_GetPort_HitAndMiss/nfs-v3-tcp-hit === RUN TestHandleCall_GetPort_HitAndMiss/mount-v3-tcp-hit === RUN TestHandleCall_GetPort_HitAndMiss/mount-v3-udp-hit === RUN TestHandleCall_GetPort_HitAndMiss/mount-v1-tcp-miss === RUN TestHandleCall_GetPort_HitAndMiss/nfs-v3-udp-miss === RUN TestHandleCall_GetPort_HitAndMiss/nlm-miss --- PASS: TestHandleCall_GetPort_HitAndMiss (0.00s) --- PASS: TestHandleCall_GetPort_HitAndMiss/nfs-v3-tcp-hit (0.00s) --- PASS: TestHandleCall_GetPort_HitAndMiss/mount-v3-tcp-hit (0.00s) --- PASS: TestHandleCall_GetPort_HitAndMiss/mount-v3-udp-hit (0.00s) --- PASS: TestHandleCall_GetPort_HitAndMiss/mount-v1-tcp-miss (0.00s) --- PASS: TestHandleCall_GetPort_HitAndMiss/nfs-v3-udp-miss (0.00s) --- PASS: TestHandleCall_GetPort_HitAndMiss/nlm-miss (0.00s) === RUN TestHandleCall_Dump --- PASS: TestHandleCall_Dump (0.00s) === RUN TestHandleCall_UnknownProg --- PASS: TestHandleCall_UnknownProg (0.00s) === RUN TestHandleCall_VersionMismatch --- PASS: TestHandleCall_VersionMismatch (0.00s) === RUN TestHandleCall_UnknownProc --- PASS: TestHandleCall_UnknownProc (0.00s) === RUN TestHandleCall_SetRefused --- PASS: TestHandleCall_SetRefused (0.00s) === RUN TestPortmapServer_UDPGetPort --- PASS: TestPortmapServer_UDPGetPort (0.00s) === RUN TestPortmapServer_CloseEvictsIdleTCPConn --- PASS: TestPortmapServer_CloseEvictsIdleTCPConn (0.00s) === RUN TestPortmapServer_TCPGetPort --- PASS: TestPortmapServer_TCPGetPort (0.00s) === RUN TestVersionFilterRejectsNFSv4WithProgMismatch --- PASS: TestVersionFilterRejectsNFSv4WithProgMismatch (0.10s) === RUN TestVersionFilterRejectsMOUNTv4WithProgMismatch --- PASS: TestVersionFilterRejectsMOUNTv4WithProgMismatch (0.00s) === RUN TestVersionFilterPassesThroughNFSv3 --- PASS: TestVersionFilterPassesThroughNFSv3 (0.00s) === RUN TestVersionFilterPassesThroughUnknownProgram --- PASS: TestVersionFilterPassesThroughUnknownProgram (0.00s) === RUN TestVersionFilterRetriesTransientAcceptErrors --- PASS: TestVersionFilterRetriesTransientAcceptErrors (0.15s) === RUN TestVersionFilterCloseReturnsPromptlyWithIdlePeekConns --- PASS: TestVersionFilterCloseReturnsPromptlyWithIdlePeekConns (0.10s) === RUN TestVersionFilterPassesThroughNonV2RPC --- PASS: TestVersionFilterPassesThroughNonV2RPC (0.00s) === RUN TestVersionFilterIgnoresShortFirstFragment --- PASS: TestVersionFilterIgnoresShortFirstFragment (0.00s) === RUN TestVersionFilterDoesNotHeadOfLineBlockOnSlowConn --- PASS: TestVersionFilterDoesNotHeadOfLineBlockOnSlowConn (0.00s) === RUN TestNewServerRejectsInvalidAllowedClientCIDR --- PASS: TestNewServerRejectsInvalidAllowedClientCIDR (0.00s) === RUN TestHandlerMountAndFileHandleRoundTrip --- PASS: TestHandlerMountAndFileHandleRoundTrip (0.00s) === RUN TestHandlerAcceptsAnyMountPath === RUN TestHandlerAcceptsAnyMountPath// I0505 12:14:13.715009 handler.go:46 nfs mount: client requested "/" (outside export "/buckets/data"); serving configured export === RUN TestHandlerAcceptsAnyMountPath//buckets I0505 12:14:13.715029 handler.go:46 nfs mount: client requested "/buckets" (outside export "/buckets/data"); serving configured export === RUN TestHandlerAcceptsAnyMountPath//buckets/other I0505 12:14:13.715041 handler.go:46 nfs mount: client requested "/buckets/other" (outside export "/buckets/data"); serving configured export === RUN TestHandlerAcceptsAnyMountPath//wrong/path I0505 12:14:13.715073 handler.go:46 nfs mount: client requested "/wrong/path" (outside export "/buckets/data"); serving configured export === RUN TestHandlerAcceptsAnyMountPath/#00 I0505 12:14:13.715115 handler.go:46 nfs mount: client requested "" (outside export "/buckets/data"); serving configured export === RUN TestHandlerAcceptsAnyMountPath/buckets/data I0505 12:14:13.715141 handler.go:46 nfs mount: client requested "buckets/data" (outside export "/buckets/data"); serving configured export === RUN TestHandlerAcceptsAnyMountPath//buckets/data === RUN TestHandlerAcceptsAnyMountPath//buckets/data/ --- PASS: TestHandlerAcceptsAnyMountPath (0.00s) --- PASS: TestHandlerAcceptsAnyMountPath// (0.00s) --- PASS: TestHandlerAcceptsAnyMountPath//buckets (0.00s) --- PASS: TestHandlerAcceptsAnyMountPath//buckets/other (0.00s) --- PASS: TestHandlerAcceptsAnyMountPath//wrong/path (0.00s) --- PASS: TestHandlerAcceptsAnyMountPath/#00 (0.00s) --- PASS: TestHandlerAcceptsAnyMountPath/buckets/data (0.00s) --- PASS: TestHandlerAcceptsAnyMountPath//buckets/data (0.00s) --- PASS: TestHandlerAcceptsAnyMountPath//buckets/data/ (0.00s) === RUN TestHandlerSubexportMount === RUN TestHandlerSubexportMount/subdirectory_one_level === RUN TestHandlerSubexportMount/subdirectory_two_levels === RUN TestHandlerSubexportMount/subdirectory_trailing_slash === RUN TestHandlerSubexportMount/missing_under_export === RUN TestHandlerSubexportMount/deep_missing_under_export === RUN TestHandlerSubexportMount/regular_file_not_directory --- PASS: TestHandlerSubexportMount (0.00s) --- PASS: TestHandlerSubexportMount/subdirectory_one_level (0.00s) --- PASS: TestHandlerSubexportMount/subdirectory_two_levels (0.00s) --- PASS: TestHandlerSubexportMount/subdirectory_trailing_slash (0.00s) --- PASS: TestHandlerSubexportMount/missing_under_export (0.00s) --- PASS: TestHandlerSubexportMount/deep_missing_under_export (0.00s) --- PASS: TestHandlerSubexportMount/regular_file_not_directory (0.00s) === RUN TestHandlerRejectsMountFromUnauthorizedClient --- PASS: TestHandlerRejectsMountFromUnauthorizedClient (0.00s) === RUN TestSeaweedFileSystemReadOnlyDisablesMutations --- PASS: TestSeaweedFileSystemReadOnlyDisablesMutations (0.00s) === RUN TestSeaweedFileSystemStatAndOpenFollowSymlinks --- PASS: TestSeaweedFileSystemStatAndOpenFollowSymlinks (0.00s) === RUN TestSeaweedFileSystemAppendModeAndUnsupportedLocks --- PASS: TestSeaweedFileSystemAppendModeAndUnsupportedLocks (0.00s) === RUN TestServerApplyMetadataInvalidationResponseUncachesExportChunks --- PASS: TestServerApplyMetadataInvalidationResponseUncachesExportChunks (0.00s) === RUN TestServerFollowMetadataStreamSubscribesAndInvalidates --- PASS: TestServerFollowMetadataStreamSubscribesAndInvalidates (0.00s) === RUN TestSeaweedFileSystemBackfillsLegacyInodeOnStat --- PASS: TestSeaweedFileSystemBackfillsLegacyInodeOnStat (0.00s) === RUN TestSeaweedFileSystemReadsInlineContent --- PASS: TestSeaweedFileSystemReadsInlineContent (0.00s) === RUN TestSeaweedFileSystemReadsChunkThroughFilerProxy --- PASS: TestSeaweedFileSystemReadsChunkThroughFilerProxy (0.00s) === RUN TestSeaweedFileSystemReadDirAndFSStat --- PASS: TestSeaweedFileSystemReadDirAndFSStat (0.00s) === RUN TestSeaweedFileSystemSupportsNamespaceMutations --- PASS: TestSeaweedFileSystemSupportsNamespaceMutations (0.00s) === RUN TestSeaweedFileSystemUploadsLargeWritesAsChunks --- PASS: TestSeaweedFileSystemUploadsLargeWritesAsChunks (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/server/nfs 81.096s ? github.com/seaweedfs/seaweedfs/weed/server/postgres [no test files] === RUN TestStatusTpl --- PASS: TestStatusTpl (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/server/volume_server_ui 0.008s === RUN TestToAbsolutePath === RUN TestToAbsolutePath/normal_path === RUN TestToAbsolutePath/root_path === RUN TestToAbsolutePath/path_with_dot === RUN TestToAbsolutePath/path_traversal_attempts === RUN TestToAbsolutePath/path_traversal_attempts_2 === RUN TestToAbsolutePath/path_traversal_attempts_3 === RUN TestToAbsolutePath/empty_path === RUN TestToAbsolutePath/multiple_slashes === RUN TestToAbsolutePath/trailing_slash === RUN TestToAbsolutePath/empty_HomeDir_passthrough === RUN TestToAbsolutePath/root_HomeDir_passthrough --- PASS: TestToAbsolutePath (0.00s) --- PASS: TestToAbsolutePath/normal_path (0.00s) --- PASS: TestToAbsolutePath/root_path (0.00s) --- PASS: TestToAbsolutePath/path_with_dot (0.00s) --- PASS: TestToAbsolutePath/path_traversal_attempts (0.00s) --- PASS: TestToAbsolutePath/path_traversal_attempts_2 (0.00s) --- PASS: TestToAbsolutePath/path_traversal_attempts_3 (0.00s) --- PASS: TestToAbsolutePath/empty_path (0.00s) --- PASS: TestToAbsolutePath/multiple_slashes (0.00s) --- PASS: TestToAbsolutePath/trailing_slash (0.00s) --- PASS: TestToAbsolutePath/empty_HomeDir_passthrough (0.00s) --- PASS: TestToAbsolutePath/root_HomeDir_passthrough (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/sftpd 0.033s ? github.com/seaweedfs/seaweedfs/weed/sftpd/auth [no test files] ? github.com/seaweedfs/seaweedfs/weed/sftpd/user [no test files] ? github.com/seaweedfs/seaweedfs/weed/sftpd/utils [no test files] === RUN TestRaftLeaderTransfer_Name --- PASS: TestRaftLeaderTransfer_Name (0.00s) === RUN TestRaftLeaderTransfer_Help --- PASS: TestRaftLeaderTransfer_Help (0.00s) === RUN TestRaftLeaderTransfer_HasTag --- PASS: TestRaftLeaderTransfer_HasTag (0.00s) === RUN TestRaftLeaderTransfer_ValidateTargetIdWithoutAddress --- PASS: TestRaftLeaderTransfer_ValidateTargetIdWithoutAddress (0.00s) === RUN TestRaftLeaderTransfer_ValidateTargetAddressWithoutId --- PASS: TestRaftLeaderTransfer_ValidateTargetAddressWithoutId (0.00s) === RUN TestRaftLeaderTransfer_UnknownFlag flag provided but not defined: -unknown-flag Usage of cluster.raft.transferLeader: -address string target server grpc address (must be used with -id) -id string target server id (must be used with -address) --- PASS: TestRaftLeaderTransfer_UnknownFlag (0.00s) === RUN TestPrintClusterInfo --- PASS: TestPrintClusterInfo (0.00s) === RUN TestPrintVolumeInfo --- PASS: TestPrintVolumeInfo (0.01s) === RUN TestPrintStorageInfo --- PASS: TestPrintStorageInfo (0.00s) === RUN TestPrintFilesInfo --- PASS: TestPrintFilesInfo (0.00s) === RUN TestCollectCollectionInfoEC --- PASS: TestCollectCollectionInfoEC (0.00s) === RUN TestCollectCollectionInfoMixed --- PASS: TestCollectCollectionInfoMixed (0.00s) === RUN TestCollectCollectionInfoRegularVolumeDedupesReplicas --- PASS: TestCollectCollectionInfoRegularVolumeDedupesReplicas (0.00s) === RUN TestPickRackForShardType_AntiAffinityRacks --- PASS: TestPickRackForShardType_AntiAffinityRacks (0.00s) === RUN TestPickRackForShardType_EdgeCases === RUN TestPickRackForShardType_EdgeCases/NoFreeSlots === RUN TestPickRackForShardType_EdgeCases/AllRacksAtMaxCapacity === RUN TestPickRackForShardType_EdgeCases/ReplicaPlacementLimit === RUN TestPickRackForShardType_EdgeCases/PreferFewerShards --- PASS: TestPickRackForShardType_EdgeCases (0.00s) --- PASS: TestPickRackForShardType_EdgeCases/NoFreeSlots (0.00s) --- PASS: TestPickRackForShardType_EdgeCases/AllRacksAtMaxCapacity (0.00s) --- PASS: TestPickRackForShardType_EdgeCases/ReplicaPlacementLimit (0.00s) --- PASS: TestPickRackForShardType_EdgeCases/PreferFewerShards (0.00s) === RUN TestPickNodeForShardType_AntiAffinityNodes --- PASS: TestPickNodeForShardType_AntiAffinityNodes (0.00s) === RUN TestPickNodeForShardType_EdgeCases === RUN TestPickNodeForShardType_EdgeCases/NoFreeSlots === RUN TestPickNodeForShardType_EdgeCases/ReplicaPlacementSameRackLimit --- PASS: TestPickNodeForShardType_EdgeCases (0.00s) --- PASS: TestPickNodeForShardType_EdgeCases/NoFreeSlots (0.00s) --- PASS: TestPickNodeForShardType_EdgeCases/ReplicaPlacementSameRackLimit (0.00s) === RUN TestShardsByType === RUN TestShardsByType/Standard10Plus4 === RUN TestShardsByType/NodeGrouping --- PASS: TestShardsByType (0.00s) --- PASS: TestShardsByType/Standard10Plus4 (0.00s) --- PASS: TestShardsByType/NodeGrouping (0.00s) === RUN TestSelectVolumeIdsFromTopology skip volume 1 on seaweedfs-volume-0.seaweedfs-volume.sea:8080: too small (size: 0.0 MB, threshold: 950.0 MB, 0.0% full) skip volume 2 on seaweedfs-volume-0.seaweedfs-volume.sea:8080: too small (size: 0.0 MB, threshold: 950.0 MB, 0.0% full) skip volume 3 on seaweedfs-volume-0.seaweedfs-volume.sea:8080: too small (size: 0.1 MB, threshold: 950.0 MB, 0.0% full) skip volume 4 on seaweedfs-volume-0.seaweedfs-volume.sea:8080: too small (size: 0.0 MB, threshold: 950.0 MB, 0.0% full) skip volume 5 on seaweedfs-volume-0.seaweedfs-volume.sea:8080: too small (size: 0.1 MB, threshold: 950.0 MB, 0.0% full) skip volume 6 on seaweedfs-volume-0.seaweedfs-volume.sea:8080: too small (size: 0.1 MB, threshold: 950.0 MB, 0.0% full) skip volume 7 on seaweedfs-volume-0.seaweedfs-volume.sea:8080: too small (size: 0.0 MB, threshold: 950.0 MB, 0.0% full) skip volume 8 on seaweedfs-volume-0.seaweedfs-volume.sea:8080: too small (size: 0.0 MB, threshold: 950.0 MB, 0.0% full) skip volume 9 on seaweedfs-volume-0.seaweedfs-volume.sea:8080: too small (size: 0.0 MB, threshold: 950.0 MB, 0.0% full) I0505 12:12:52.751401 command_ec_encode.go:484 replica test 10 on seaweedfs-volume-0.seaweedfs-volume.sea:8080 has no free disk skip replica of volume 10 on seaweedfs-volume-0.seaweedfs-volume.sea:8080: insufficient free disk space (free volumes: 1, required: 2) I0505 12:12:52.751612 command_ec_encode.go:484 replica test 11 on seaweedfs-volume-0.seaweedfs-volume.sea:8080 has no free disk skip replica of volume 11 on seaweedfs-volume-0.seaweedfs-volume.sea:8080: insufficient free disk space (free volumes: 1, required: 2) I0505 12:12:52.751617 command_ec_encode.go:484 replica test 12 on seaweedfs-volume-0.seaweedfs-volume.sea:8080 has no free disk skip replica of volume 12 on seaweedfs-volume-0.seaweedfs-volume.sea:8080: insufficient free disk space (free volumes: 1, required: 2) skip volume 13 on seaweedfs-volume-0.seaweedfs-volume.sea:8080: too small (size: 544.0 MB, threshold: 950.0 MB, 54.4% full) skip volume 14 on seaweedfs-volume-0.seaweedfs-volume.sea:8080: too small (size: 456.0 MB, threshold: 950.0 MB, 45.6% full) skip volume 1 on seaweedfs-volume-1.seaweedfs-volume.sea:8080: too small (size: 0.0 MB, threshold: 950.0 MB, 0.0% full) skip volume 2 on seaweedfs-volume-1.seaweedfs-volume.sea:8080: too small (size: 0.0 MB, threshold: 950.0 MB, 0.0% full) skip volume 3 on seaweedfs-volume-1.seaweedfs-volume.sea:8080: too small (size: 0.1 MB, threshold: 950.0 MB, 0.0% full) skip volume 4 on seaweedfs-volume-1.seaweedfs-volume.sea:8080: too small (size: 0.0 MB, threshold: 950.0 MB, 0.0% full) skip volume 5 on seaweedfs-volume-1.seaweedfs-volume.sea:8080: too small (size: 0.1 MB, threshold: 950.0 MB, 0.0% full) skip volume 6 on seaweedfs-volume-1.seaweedfs-volume.sea:8080: too small (size: 0.1 MB, threshold: 950.0 MB, 0.0% full) skip volume 7 on seaweedfs-volume-1.seaweedfs-volume.sea:8080: too small (size: 0.0 MB, threshold: 950.0 MB, 0.0% full) skip volume 8 on seaweedfs-volume-1.seaweedfs-volume.sea:8080: too small (size: 0.0 MB, threshold: 950.0 MB, 0.0% full) skip volume 9 on seaweedfs-volume-1.seaweedfs-volume.sea:8080: too small (size: 0.0 MB, threshold: 950.0 MB, 0.0% full) I0505 12:12:52.751633 command_ec_encode.go:484 replica test 10 on seaweedfs-volume-1.seaweedfs-volume.sea:8080 has no free disk skip replica of volume 10 on seaweedfs-volume-1.seaweedfs-volume.sea:8080: insufficient free disk space (free volumes: 1, required: 2) I0505 12:12:52.751636 command_ec_encode.go:484 replica test 11 on seaweedfs-volume-1.seaweedfs-volume.sea:8080 has no free disk skip replica of volume 11 on seaweedfs-volume-1.seaweedfs-volume.sea:8080: insufficient free disk space (free volumes: 1, required: 2) I0505 12:12:52.751638 command_ec_encode.go:484 replica test 12 on seaweedfs-volume-1.seaweedfs-volume.sea:8080 has no free disk skip replica of volume 12 on seaweedfs-volume-1.seaweedfs-volume.sea:8080: insufficient free disk space (free volumes: 1, required: 2) skip volume 13 on seaweedfs-volume-1.seaweedfs-volume.sea:8080: too small (size: 544.0 MB, threshold: 950.0 MB, 54.4% full) skip volume 14 on seaweedfs-volume-1.seaweedfs-volume.sea:8080: too small (size: 456.0 MB, threshold: 950.0 MB, 45.6% full) Volume selection summary: Total volumes examined: 28 Selected for encoding: 0 Collections matched: [ encrypt-data test] Reasons for exclusion: Too small (< 95.0% full): 22 Insufficient free disk space: 3 skip volume 1 on seaweedfs-volume-0.seaweedfs-volume.sea:8080: too small (size: 0.0 MB, threshold: 950.0 MB, 0.0% full) skip volume 2 on seaweedfs-volume-0.seaweedfs-volume.sea:8080: too small (size: 0.0 MB, threshold: 950.0 MB, 0.0% full) skip volume 3 on seaweedfs-volume-0.seaweedfs-volume.sea:8080: too small (size: 0.1 MB, threshold: 950.0 MB, 0.0% full) skip volume 4 on seaweedfs-volume-0.seaweedfs-volume.sea:8080: too small (size: 0.0 MB, threshold: 950.0 MB, 0.0% full) skip volume 5 on seaweedfs-volume-0.seaweedfs-volume.sea:8080: too small (size: 0.1 MB, threshold: 950.0 MB, 0.0% full) skip volume 6 on seaweedfs-volume-0.seaweedfs-volume.sea:8080: too small (size: 0.1 MB, threshold: 950.0 MB, 0.0% full) skip volume 7 on seaweedfs-volume-0.seaweedfs-volume.sea:8080: too small (size: 0.0 MB, threshold: 950.0 MB, 0.0% full) skip volume 8 on seaweedfs-volume-0.seaweedfs-volume.sea:8080: too small (size: 0.0 MB, threshold: 950.0 MB, 0.0% full) skip volume 9 on seaweedfs-volume-0.seaweedfs-volume.sea:8080: too small (size: 0.0 MB, threshold: 950.0 MB, 0.0% full) selected volume 10 on seaweedfs-volume-0.seaweedfs-volume.sea:8080: size 1000.0 MB (100.0% full), last modified 5025 seconds ago, free volumes: 2 selected volume 11 on seaweedfs-volume-0.seaweedfs-volume.sea:8080: size 1000.0 MB (100.0% full), last modified 4966 seconds ago, free volumes: 2 selected volume 12 on seaweedfs-volume-0.seaweedfs-volume.sea:8080: size 1000.0 MB (100.0% full), last modified 4933 seconds ago, free volumes: 2 skip volume 13 on seaweedfs-volume-0.seaweedfs-volume.sea:8080: too small (size: 544.0 MB, threshold: 950.0 MB, 54.4% full) skip volume 14 on seaweedfs-volume-0.seaweedfs-volume.sea:8080: too small (size: 456.0 MB, threshold: 950.0 MB, 45.6% full) skip volume 1 on seaweedfs-volume-1.seaweedfs-volume.sea:8080: too small (size: 0.0 MB, threshold: 950.0 MB, 0.0% full) skip volume 2 on seaweedfs-volume-1.seaweedfs-volume.sea:8080: too small (size: 0.0 MB, threshold: 950.0 MB, 0.0% full) skip volume 3 on seaweedfs-volume-1.seaweedfs-volume.sea:8080: too small (size: 0.1 MB, threshold: 950.0 MB, 0.0% full) skip volume 4 on seaweedfs-volume-1.seaweedfs-volume.sea:8080: too small (size: 0.0 MB, threshold: 950.0 MB, 0.0% full) skip volume 5 on seaweedfs-volume-1.seaweedfs-volume.sea:8080: too small (size: 0.1 MB, threshold: 950.0 MB, 0.0% full) skip volume 6 on seaweedfs-volume-1.seaweedfs-volume.sea:8080: too small (size: 0.1 MB, threshold: 950.0 MB, 0.0% full) skip volume 7 on seaweedfs-volume-1.seaweedfs-volume.sea:8080: too small (size: 0.0 MB, threshold: 950.0 MB, 0.0% full) skip volume 8 on seaweedfs-volume-1.seaweedfs-volume.sea:8080: too small (size: 0.0 MB, threshold: 950.0 MB, 0.0% full) skip volume 9 on seaweedfs-volume-1.seaweedfs-volume.sea:8080: too small (size: 0.0 MB, threshold: 950.0 MB, 0.0% full) selected volume 10 on seaweedfs-volume-1.seaweedfs-volume.sea:8080: size 1000.0 MB (100.0% full), last modified 5025 seconds ago, free volumes: 2 selected volume 11 on seaweedfs-volume-1.seaweedfs-volume.sea:8080: size 1000.0 MB (100.0% full), last modified 4966 seconds ago, free volumes: 2 selected volume 12 on seaweedfs-volume-1.seaweedfs-volume.sea:8080: size 1000.0 MB (100.0% full), last modified 4934 seconds ago, free volumes: 2 skip volume 13 on seaweedfs-volume-1.seaweedfs-volume.sea:8080: too small (size: 544.0 MB, threshold: 950.0 MB, 54.4% full) skip volume 14 on seaweedfs-volume-1.seaweedfs-volume.sea:8080: too small (size: 456.0 MB, threshold: 950.0 MB, 45.6% full) Volume selection summary: Total volumes examined: 28 Selected for encoding: 3 Collections matched: [ encrypt-data test] Reasons for exclusion: Too small (< 95.0% full): 22 --- PASS: TestSelectVolumeIdsFromTopology (0.00s) === RUN TestEcEncodeNodeCountCheck --- PASS: TestEcEncodeNodeCountCheck (0.00s) === RUN TestEcShardMapRegister --- PASS: TestEcShardMapRegister (0.00s) === RUN TestEcShardMapShardCount === RUN TestEcShardMapShardCount/all_shards === RUN TestEcShardMapShardCount/data_shards_only === RUN TestEcShardMapShardCount/parity_shards_only === RUN TestEcShardMapShardCount/missing_some_shards === RUN TestEcShardMapShardCount/single_shard === RUN TestEcShardMapShardCount/no_shards --- PASS: TestEcShardMapShardCount (0.00s) --- PASS: TestEcShardMapShardCount/all_shards (0.00s) --- PASS: TestEcShardMapShardCount/data_shards_only (0.00s) --- PASS: TestEcShardMapShardCount/parity_shards_only (0.00s) --- PASS: TestEcShardMapShardCount/missing_some_shards (0.00s) --- PASS: TestEcShardMapShardCount/single_shard (0.00s) --- PASS: TestEcShardMapShardCount/no_shards (0.00s) === RUN TestRebuildEcVolumesInsufficientShards rebuildEcVolumes for "c1" --- PASS: TestRebuildEcVolumesInsufficientShards (0.00s) === RUN TestRebuildEcVolumesCompleteVolume rebuildEcVolumes for "c1" --- PASS: TestRebuildEcVolumesCompleteVolume (0.00s) === RUN TestRebuildEcVolumesInsufficientSpace rebuildEcVolumes for "c1" --- PASS: TestRebuildEcVolumesInsufficientSpace (0.00s) === RUN TestMultipleNodesWithShards --- PASS: TestMultipleNodesWithShards (0.00s) === RUN TestDuplicateShards --- PASS: TestDuplicateShards (0.00s) === RUN TestPrepareDataToRecoverTargetShardCount --- PASS: TestPrepareDataToRecoverTargetShardCount (0.00s) === RUN TestCommandEcBalanceSmall balanceEcVolumes c1 dn1 moves ec shard 1.0 to dn2 dn1 moves ec shard 1.1 to dn2 dn1 moves ec shard 1.2 to dn2 dn1 moves ec shard 1.3 to dn2 dn1 moves ec shard 1.4 to dn2 dn1 moves ec shard 1.10 to dn2 dn1 moves ec shard 1.11 to dn2 dn2 moves ec shard 2.0 to dn1 dn2 moves ec shard 2.1 to dn1 dn2 moves ec shard 2.2 to dn1 dn2 moves ec shard 2.3 to dn1 dn2 moves ec shard 2.4 to dn1 dn2 moves ec shard 2.10 to dn1 dn2 moves ec shard 2.11 to dn1 --- PASS: TestCommandEcBalanceSmall (0.00s) === RUN TestCommandEcBalanceNothingToMove balanceEcVolumes c1 dn1 moves ec shard 1.0 to dn2 dn1 moves ec shard 1.1 to dn2 dn2 moves ec shard 1.10 to dn1 dn2 moves ec shard 1.11 to dn1 dn2 moves ec shard 2.0 to dn1 dn2 moves ec shard 2.1 to dn1 dn1 moves ec shard 2.10 to dn2 dn1 moves ec shard 2.11 to dn2 --- PASS: TestCommandEcBalanceNothingToMove (0.00s) === RUN TestCommandEcBalanceAddNewServers balanceEcVolumes c1 dn2 moves ec shard 2.0 to dn1 dn2 moves ec shard 2.1 to dn1 dn1 moves ec shard 2.10 to dn2 dn1 moves ec shard 2.11 to dn2 dn1 moves ec shard 1.0 to dn2 dn1 moves ec shard 1.1 to dn2 dn2 moves ec shard 1.10 to dn1 dn2 moves ec shard 1.11 to dn1 --- PASS: TestCommandEcBalanceAddNewServers (0.00s) === RUN TestCommandEcBalanceAddNewRacks balanceEcVolumes c1 dn1 moves ec shard 1.0 to dn3 dn1 moves ec shard 1.1 to dn4 dn1 moves ec shard 1.2 to dn3 dn1 moves ec shard 1.3 to dn4 dn1 moves ec shard 1.4 to dn3 dn2 moves ec shard 1.10 to dn4 dn2 moves ec shard 1.11 to dn3 dn2 moves ec shard 2.1 to dn3 dn1 moves ec shard 2.7 to dn4 dn1 moves ec shard 2.8 to dn3 dn1 moves ec shard 2.9 to dn4 dn2 moves ec shard 2.0 to dn3 dn1 moves ec shard 2.10 to dn4 dn1 moves ec shard 2.11 to dn3 dn2 moves ec shard 1.12 to dn1 dn2 moves ec shard 2.2 to dn1 dn2 moves ec shard 2.3 to dn1 dn1 moves ec shard 2.12 to dn2 --- PASS: TestCommandEcBalanceAddNewRacks (0.00s) === RUN TestCommandEcBalanceVolumeEvenButRackUneven balanceEcVolumes c1 dn_shared moves ec shards 1.0 to dn3 --- PASS: TestCommandEcBalanceVolumeEvenButRackUneven (0.00s) === RUN TestCommandEcBalanceEvenDataAndParityDistribution balanceEcVolumes c1 dn1 moves ec shard 1.3 to dn6 dn1 moves ec shard 1.4 to dn2 dn1 moves ec shard 1.5 to dn3 dn1 moves ec shard 1.6 to dn5 dn1 moves ec shard 1.7 to dn4 dn1 moves ec shard 1.0 to dn2 dn1 moves ec shard 1.1 to dn3 dn1 moves ec shard 1.2 to dn4 dn1 moves ec shard 1.10 to dn5 dn1 moves ec shard 1.11 to dn6 dn1 moves ec shard 1.12 to dn2 command_ec_test.go:221: Distribution after balancing: command_ec_test.go:222: Data shards per rack: map[rack1:2 rack2:2 rack3:2 rack4:2 rack5:1 rack6:1] (max allowed: 2) command_ec_test.go:223: Parity shards per rack: map[rack1:1 rack2:1 rack5:1 rack6:1] (max allowed: 1) --- PASS: TestCommandEcBalanceEvenDataAndParityDistribution (0.00s) === RUN TestCommandEcBalanceMultipleVolumesEvenDistribution balanceEcVolumes c1 dn1 moves ec shard 1.6 to dn5 dn1 moves ec shard 1.7 to dn3 dn1 moves ec shard 1.0 to dn2 dn1 moves ec shard 1.1 to dn4 dn1 moves ec shard 1.2 to dn6 dn1 moves ec shard 1.3 to dn2 dn1 moves ec shard 1.4 to dn4 dn1 moves ec shard 1.5 to dn3 dn1 moves ec shard 1.10 to dn6 dn1 moves ec shard 1.11 to dn5 dn1 moves ec shard 1.12 to dn4 dn2 moves ec shard 2.3 to dn4 dn2 moves ec shard 2.4 to dn3 dn2 moves ec shard 2.5 to dn1 dn2 moves ec shard 2.6 to dn5 dn2 moves ec shard 2.7 to dn6 dn2 moves ec shard 2.0 to dn3 dn2 moves ec shard 2.1 to dn5 dn2 moves ec shard 2.2 to dn4 dn2 moves ec shard 2.10 to dn1 dn2 moves ec shard 2.11 to dn6 dn2 moves ec shard 2.12 to dn3 command_ec_test.go:285: Volume 1 - Data: map[rack1:2 rack2:2 rack3:2 rack4:2 rack5:1 rack6:1], Parity: map[rack1:1 rack4:1 rack5:1 rack6:1] command_ec_test.go:285: Volume 2 - Data: map[rack1:1 rack2:2 rack3:2 rack4:2 rack5:2 rack6:1], Parity: map[rack1:1 rack2:1 rack3:1 rack6:1] --- PASS: TestCommandEcBalanceMultipleVolumesEvenDistribution (0.00s) === RUN TestCommandEcBalanceAllNodesShareAllVolumes balanceEcVolumes c1 dn1 moves ec shard 1.1 to dn3 dn2 moves ec shard 1.5 to dn4 dn2 moves ec shard 1.6 to dn4 dn1 moves ec shard 1.0 to dn3 dn3 moves ec shard 1.11 to dn1 dn3 moves ec shard 1.10 to dn2 dn1 moves ec shard 2.0 to dn3 dn1 moves ec shard 2.1 to dn4 dn2 moves ec shard 2.5 to dn4 dn2 moves ec shard 2.6 to dn3 dn3 moves ec shard 2.10 to dn2 dn3 moves ec shard 2.11 to dn1 dn2 moves ec shards 1.7 to dn3 dn1 moves ec shards 1.2 to dn4 command_ec_test.go:334: node dn1: 7 shards command_ec_test.go:334: node dn2: 7 shards command_ec_test.go:334: node dn3: 7 shards command_ec_test.go:334: node dn4: 7 shards --- PASS: TestCommandEcBalanceAllNodesShareAllVolumes (0.00s) === RUN TestCommandEcBalanceIssue8793Topology command_ec_test.go:396: BEFORE node 192.168.0.12:8332 (max 80): 36 shards command_ec_test.go:396: BEFORE node 192.168.0.12:8333 (max 80): 36 shards command_ec_test.go:396: BEFORE node 192.168.0.12:8334 (max 80): 36 shards command_ec_test.go:396: BEFORE node 192.168.0.12:8335 (max 80): 36 shards command_ec_test.go:396: BEFORE node 192.168.0.12:8336 (max 80): 22 shards command_ec_test.go:396: BEFORE node 192.168.0.12:8337 (max 80): 22 shards command_ec_test.go:396: BEFORE node 192.168.0.12:8338 (max 80): 22 shards command_ec_test.go:396: BEFORE node 192.168.0.12:8339 (max 80): 22 shards command_ec_test.go:396: BEFORE node 192.168.0.12:8340 (max 80): 22 shards command_ec_test.go:396: BEFORE node 192.168.0.12:8341 (max 33): 22 shards command_ec_test.go:396: BEFORE node 192.168.0.12:8342 (max 33): 22 shards command_ec_test.go:396: BEFORE node 192.168.0.12:8343 (max 33): 22 shards command_ec_test.go:396: BEFORE node 192.168.0.25:8350 (max 33): 22 shards command_ec_test.go:396: BEFORE node 192.168.0.25:8351 (max 33): 22 shards balanceEcVolumes cldata 192.168.0.12:8332 moves ec shard 23.0 to 192.168.0.12:8338 192.168.0.12:8332 moves ec shard 23.1 to 192.168.0.12:8336 192.168.0.12:8332 moves ec shard 23.2 to 192.168.0.12:8333 192.168.0.12:8332 moves ec shard 23.3 to 192.168.0.25:8350 192.168.0.12:8332 moves ec shard 23.4 to 192.168.0.12:8342 192.168.0.12:8332 moves ec shard 23.5 to 192.168.0.12:8337 192.168.0.12:8332 moves ec shard 23.8 to 192.168.0.12:8343 192.168.0.12:8332 moves ec shard 23.6 to 192.168.0.12:8335 192.168.0.12:8332 moves ec shard 23.7 to 192.168.0.12:8340 192.168.0.12:8332 moves ec shard 23.10 to 192.168.0.12:8339 192.168.0.12:8332 moves ec shard 23.11 to 192.168.0.12:8341 192.168.0.12:8332 moves ec shard 23.12 to 192.168.0.12:8334 192.168.0.12:8333 moves ec shard 24.0 to 192.168.0.12:8335 192.168.0.12:8333 moves ec shard 24.2 to 192.168.0.12:8336 192.168.0.12:8333 moves ec shard 24.3 to 192.168.0.12:8337 192.168.0.12:8333 moves ec shard 24.5 to 192.168.0.12:8334 192.168.0.12:8333 moves ec shard 24.7 to 192.168.0.12:8332 192.168.0.12:8333 moves ec shard 24.1 to 192.168.0.12:8339 192.168.0.12:8333 moves ec shard 24.4 to 192.168.0.12:8338 192.168.0.12:8333 moves ec shard 24.6 to 192.168.0.12:8343 192.168.0.12:8333 moves ec shard 24.8 to 192.168.0.12:8341 192.168.0.12:8333 moves ec shard 24.10 to 192.168.0.12:8340 192.168.0.12:8333 moves ec shard 24.11 to 192.168.0.25:8350 192.168.0.12:8333 moves ec shard 24.12 to 192.168.0.12:8342 192.168.0.12:8334 moves ec shard 25.8 to 192.168.0.12:8343 192.168.0.12:8334 moves ec shard 25.1 to 192.168.0.12:8340 192.168.0.12:8334 moves ec shard 25.3 to 192.168.0.12:8336 192.168.0.12:8334 moves ec shard 25.7 to 192.168.0.25:8350 192.168.0.12:8334 moves ec shard 25.0 to 192.168.0.12:8333 192.168.0.12:8334 moves ec shard 25.2 to 192.168.0.12:8332 192.168.0.12:8334 moves ec shard 25.4 to 192.168.0.12:8342 192.168.0.12:8334 moves ec shard 25.5 to 192.168.0.25:8351 192.168.0.12:8334 moves ec shard 25.6 to 192.168.0.12:8338 192.168.0.12:8334 moves ec shard 25.10 to 192.168.0.12:8339 192.168.0.12:8334 moves ec shard 25.11 to 192.168.0.12:8341 192.168.0.12:8334 moves ec shard 25.12 to 192.168.0.12:8337 192.168.0.12:8335 moves ec shard 26.0 to 192.168.0.12:8332 192.168.0.12:8335 moves ec shard 26.2 to 192.168.0.12:8342 192.168.0.12:8335 moves ec shard 26.5 to 192.168.0.12:8337 192.168.0.12:8335 moves ec shard 26.6 to 192.168.0.12:8334 192.168.0.12:8335 moves ec shard 26.8 to 192.168.0.12:8340 192.168.0.12:8335 moves ec shard 26.1 to 192.168.0.12:8339 192.168.0.12:8335 moves ec shard 26.3 to 192.168.0.25:8350 192.168.0.12:8335 moves ec shard 26.4 to 192.168.0.12:8338 192.168.0.12:8335 moves ec shard 26.7 to 192.168.0.12:8333 192.168.0.12:8335 moves ec shard 26.10 to 192.168.0.12:8343 192.168.0.12:8335 moves ec shard 26.11 to 192.168.0.12:8336 192.168.0.12:8335 moves ec shard 26.12 to 192.168.0.25:8351 192.168.0.12:8333 moves ec shards 24.9 to 192.168.0.25:8351 192.168.0.12:8334 moves ec shards 23.12 to 192.168.0.25:8351 192.168.0.12:8332 moves ec shards 26.0 to 192.168.0.12:8341 command_ec_test.go:419: AFTER node 192.168.0.12:8332: 26 shards (avg 26) command_ec_test.go:419: AFTER node 192.168.0.12:8333: 26 shards (avg 26) command_ec_test.go:419: AFTER node 192.168.0.12:8334: 26 shards (avg 26) command_ec_test.go:419: AFTER node 192.168.0.12:8335: 26 shards (avg 26) command_ec_test.go:419: AFTER node 192.168.0.12:8336: 26 shards (avg 26) command_ec_test.go:419: AFTER node 192.168.0.12:8337: 26 shards (avg 26) command_ec_test.go:419: AFTER node 192.168.0.12:8338: 26 shards (avg 26) command_ec_test.go:419: AFTER node 192.168.0.12:8339: 26 shards (avg 26) command_ec_test.go:419: AFTER node 192.168.0.12:8340: 26 shards (avg 26) command_ec_test.go:419: AFTER node 192.168.0.12:8341: 26 shards (avg 26) command_ec_test.go:419: AFTER node 192.168.0.12:8342: 26 shards (avg 26) command_ec_test.go:419: AFTER node 192.168.0.12:8343: 26 shards (avg 26) command_ec_test.go:419: AFTER node 192.168.0.25:8350: 26 shards (avg 26) command_ec_test.go:419: AFTER node 192.168.0.25:8351: 26 shards (avg 26) --- PASS: TestCommandEcBalanceIssue8793Topology (0.00s) === RUN TestShortName --- PASS: TestShortName (0.00s) === RUN TestRelevantNodes --- PASS: TestRelevantNodes (0.00s) === RUN TestComputeOwnerTarget_EvenDivision --- PASS: TestComputeOwnerTarget_EvenDivision (0.00s) === RUN TestComputeOwnerTarget_UnevenDivision --- PASS: TestComputeOwnerTarget_UnevenDivision (0.00s) === RUN TestComputeOwnerTarget_InactiveNodesDrainToZero --- PASS: TestComputeOwnerTarget_InactiveNodesDrainToZero (0.00s) === RUN TestBuildDistributionCounts --- PASS: TestBuildDistributionCounts (0.00s) === RUN TestBuildDistributionCounts_NilFidFallback --- PASS: TestBuildDistributionCounts_NilFidFallback (0.00s) === RUN TestSelectActiveNodes_AllNodes --- PASS: TestSelectActiveNodes_AllNodes (0.00s) === RUN TestSelectActiveNodes_LimitToTwo --- PASS: TestSelectActiveNodes_LimitToTwo (0.00s) === RUN TestPlanOwnerMoves_BasicBalance --- PASS: TestPlanOwnerMoves_BasicBalance (0.00s) === RUN TestPlanOwnerMoves_AlreadyBalanced --- PASS: TestPlanOwnerMoves_AlreadyBalanced (0.00s) === RUN TestPlanDistribution_Primary_BalancesChunks --- PASS: TestPlanDistribution_Primary_BalancesChunks (0.00s) === RUN TestPlanDistribution_Primary_NoMovesWhenBalanced --- PASS: TestPlanDistribution_Primary_NoMovesWhenBalanced (0.00s) === RUN TestPlanDistribution_RoundRobin_AssignsByOffset --- PASS: TestPlanDistribution_RoundRobin_AssignsByOffset (0.00s) === RUN TestPlanDistribution_RoundRobin_OffsetOrdering --- PASS: TestPlanDistribution_RoundRobin_OffsetOrdering (0.00s) === RUN TestPlanDistribution_Replica_BalancesOwnerAndCopies --- PASS: TestPlanDistribution_Replica_BalancesOwnerAndCopies (0.00s) === RUN TestPrintRedistributionPlan_Output --- PASS: TestPrintRedistributionPlan_Output (0.00s) === RUN TestFileFilter_matches_minCacheAge === RUN TestFileFilter_matches_minCacheAge/no_minCacheAge === RUN TestFileFilter_matches_minCacheAge/recent_cache,_should_not_match === RUN TestFileFilter_matches_minCacheAge/old_cache,_should_match === RUN TestFileFilter_matches_minCacheAge/no_remote_entry,_uses_crtime_-_recent,_should_not_match === RUN TestFileFilter_matches_minCacheAge/no_remote_entry,_uses_crtime_-_old,_should_match === RUN TestFileFilter_matches_minCacheAge/remote_entry_with_0_sync_ts,_uses_crtime_-_recent,_should_not_match === RUN TestFileFilter_matches_minCacheAge/nil_attributes,_should_not_match --- PASS: TestFileFilter_matches_minCacheAge (0.00s) --- PASS: TestFileFilter_matches_minCacheAge/no_minCacheAge (0.00s) --- PASS: TestFileFilter_matches_minCacheAge/recent_cache,_should_not_match (0.00s) --- PASS: TestFileFilter_matches_minCacheAge/old_cache,_should_match (0.00s) --- PASS: TestFileFilter_matches_minCacheAge/no_remote_entry,_uses_crtime_-_recent,_should_not_match (0.00s) --- PASS: TestFileFilter_matches_minCacheAge/no_remote_entry,_uses_crtime_-_old,_should_match (0.00s) --- PASS: TestFileFilter_matches_minCacheAge/remote_entry_with_0_sync_ts,_uses_crtime_-_recent,_should_not_match (0.00s) --- PASS: TestFileFilter_matches_minCacheAge/nil_attributes,_should_not_match (0.00s) === RUN TestUpdateBucketActions_SetActions --- PASS: TestUpdateBucketActions_SetActions (0.00s) === RUN TestUpdateBucketActions_ReplaceActions --- PASS: TestUpdateBucketActions_ReplaceActions (0.00s) === RUN TestUpdateBucketActions_None --- PASS: TestUpdateBucketActions_None (0.00s) === RUN TestUpdateBucketActions_PreservesOtherBuckets --- PASS: TestUpdateBucketActions_PreservesOtherBuckets (0.00s) === RUN TestUpdateBucketActions_PreservesGlobalActions --- PASS: TestUpdateBucketActions_PreservesGlobalActions (0.00s) === RUN TestDisplayBucketAccess --- PASS: TestDisplayBucketAccess (0.00s) === RUN TestDisplayBucketAccess_None --- PASS: TestDisplayBucketAccess_None (0.00s) === RUN TestCircuitBreakerShell --- PASS: TestCircuitBreakerShell (0.00s) === RUN TestIsGoodMove replication: 100 expected false name: test 100 move to wrong data centers replication: 100 expected true name: test 100 move to spread into proper data centers replication: 001 expected false name: test move to the same node replication: 001 expected false name: test move to the same rack, but existing node replication: 001 expected true name: test move to the same rack, a new node replication: 010 expected false name: test 010 move all to the same rack replication: 010 expected true name: test 010 move to spread racks replication: 010 expected true name: test 010 move to spread racks replication: 011 expected true name: test 011 switch which rack has more replicas replication: 011 expected true name: test 011 move the lonely replica to another racks replication: 011 expected false name: test 011 move to wrong racks replication: 011 expected false name: test 011 move all to the same rack --- PASS: TestIsGoodMove (0.00s) === RUN TestBalance hdd 0.00 0.01:0.00 moving volume collection4_7 192.168.1.2:8080 => 192.168.1.6:8080 hdd 0.00 0.01:0.00 moving volume collection3_9 192.168.1.2:8080 => 192.168.1.6:8080 hdd 0.00 0.01:0.00 moving volume 4 192.168.1.2:8080 => 192.168.1.6:8080 hdd 0.00 0.01:0.00 moving volume 2 192.168.1.2:8080 => 192.168.1.6:8080 hdd 0.00 0.01:0.00 moving volume 6 192.168.1.2:8080 => 192.168.1.6:8080 hdd 0.00 0.01:0.00 moving volume 3 192.168.1.2:8080 => 192.168.1.6:8080 hdd 0.00 0.01:0.00 moving volume collection1_81 192.168.1.2:8080 => 192.168.1.6:8080 hdd 0.00 0.01:0.00 moving volume collection1_56 192.168.1.2:8080 => 192.168.1.6:8080 hdd 0.00 0.01:0.00 moving volume collection2_380 192.168.1.2:8080 => 192.168.1.6:8080 hdd 0.00 0.01:0.00 moving volume collection1_215 192.168.1.2:8080 => 192.168.1.6:8080 hdd 0.00 0.01:0.00 moving volume collection1_107 192.168.1.2:8080 => 192.168.1.6:8080 hdd 0.00 0.01:0.00 moving volume collection1_167 192.168.1.2:8080 => 192.168.1.6:8080 hdd 0.00 0.01:0.00 moving volume collection1_177 192.168.1.2:8080 => 192.168.1.6:8080 hdd 0.00 0.01:0.00 moving volume collection1_139 192.168.1.2:8080 => 192.168.1.6:8080 hdd 0.00 0.01:0.00 moving volume collection2_357 192.168.1.2:8080 => 192.168.1.6:8080 hdd 0.00 0.01:0.00 moving volume collection1_179 192.168.1.2:8080 => 192.168.1.6:8080 hdd 0.00 0.01:0.00 moving volume collection2_323 192.168.1.2:8080 => 192.168.1.6:8080 hdd 0.00 0.01:0.00 moving volume collection1_155 192.168.1.2:8080 => 192.168.1.6:8080 hdd 0.00 0.01:0.00 moving volume collection2_347 192.168.1.2:8080 => 192.168.1.6:8080 hdd 0.00 0.01:0.00 moving volume collection1_217 192.168.1.2:8080 => 192.168.1.6:8080 hdd 0.00 0.01:0.00 moving volume collection1_182 192.168.1.2:8080 => 192.168.1.6:8080 hdd 0.00 0.01:0.00 moving volume collection1_104 192.168.1.2:8080 => 192.168.1.6:8080 hdd 0.00 0.01:0.00 moving volume collection1_113 192.168.1.2:8080 => 192.168.1.6:8080 hdd 0.00 0.01:0.00 moving volume collection2_283 192.168.1.2:8080 => 192.168.1.6:8080 hdd 0.00 0.01:0.00 moving volume collection0_17 192.168.1.2:8080 => 192.168.1.6:8080 hdd 0.00 0.01:0.00 moving volume collection0_21 192.168.1.2:8080 => 192.168.1.6:8080 hdd 0.00 0.01:0.00 moving volume collection1_151 192.168.1.2:8080 => 192.168.1.6:8080 hdd 0.00 0.01:0.00 moving volume collection0_14 192.168.1.2:8080 => 192.168.1.6:8080 hdd 0.00 0.01:0.00 moving volume collection0_12 192.168.1.2:8080 => 192.168.1.6:8080 hdd 0.00 0.01:0.00 moving volume collection0_16 192.168.1.2:8080 => 192.168.1.6:8080 hdd 0.00 0.01:0.00 moving volume collection0_13 192.168.1.2:8080 => 192.168.1.6:8080 hdd 0.00 0.01:0.00 moving volume collection0_10 192.168.1.2:8080 => 192.168.1.6:8080 hdd 0.00 0.01:0.00 --- PASS: TestBalance (0.00s) === RUN TestVolumeSelection collect volumes quiet for: 0 seconds --- PASS: TestVolumeSelection (0.00s) === RUN TestDeleteEmptySelection --- PASS: TestDeleteEmptySelection (0.00s) === RUN TestSplitCSVSet === RUN TestSplitCSVSet/empty_input_is_empty_set_(no_filter) === RUN TestSplitCSVSet/whitespace_only_is_empty_set_(no_filter) === RUN TestSplitCSVSet/commas_only_is_empty_set_(no_filter) === RUN TestSplitCSVSet/whitespace_and_commas_only_is_empty_set_(no_filter) === RUN TestSplitCSVSet/single === RUN TestSplitCSVSet/multi === RUN TestSplitCSVSet/trims_whitespace === RUN TestSplitCSVSet/skips_empty_items --- PASS: TestSplitCSVSet (0.00s) --- PASS: TestSplitCSVSet/empty_input_is_empty_set_(no_filter) (0.00s) --- PASS: TestSplitCSVSet/whitespace_only_is_empty_set_(no_filter) (0.00s) --- PASS: TestSplitCSVSet/commas_only_is_empty_set_(no_filter) (0.00s) --- PASS: TestSplitCSVSet/whitespace_and_commas_only_is_empty_set_(no_filter) (0.00s) --- PASS: TestSplitCSVSet/single (0.00s) --- PASS: TestSplitCSVSet/multi (0.00s) --- PASS: TestSplitCSVSet/trims_whitespace (0.00s) --- PASS: TestSplitCSVSet/skips_empty_items (0.00s) === RUN TestCollectVolumeServersByDcRackNode_RackFilter --- PASS: TestCollectVolumeServersByDcRackNode_RackFilter (0.00s) === RUN TestCollectVolumeServersByDcRackNode_NodeFilter --- PASS: TestCollectVolumeServersByDcRackNode_NodeFilter (0.00s) === RUN TestShouldSkipVolume === RUN TestShouldSkipVolume/identical_volumes_should_be_skipped === RUN TestShouldSkipVolume/different_file_counts_should_not_be_skipped === RUN TestShouldSkipVolume/different_delete_counts_with_syncDeletions_enabled_should_not_be_skipped === RUN TestShouldSkipVolume/different_delete_counts_with_syncDeletions_disabled_should_be_skipped_if_file_counts_match === RUN TestShouldSkipVolume/volumes_with_zero_file_counts_should_be_skipped === RUN TestShouldSkipVolume/volumes_with_zero_and_non-zero_file_counts_should_not_be_skipped === RUN TestShouldSkipVolume/recently_modified_volumes_with_same_file_counts_should_be_skipped === RUN TestShouldSkipVolume/one_volume_modified_before_pulse_cutoff_with_different_file_counts_should_not_be_skipped === RUN TestShouldSkipVolume/different_modification_times_with_same_file_counts_should_be_skipped === RUN TestShouldSkipVolume/volumes_modified_exactly_at_pulse_cutoff_boundary_with_different_counts_should_not_be_skipped === RUN TestShouldSkipVolume/volumes_modified_just_after_pulse_cutoff_boundary_with_same_counts_should_be_skipped === RUN TestShouldSkipVolume/large_file_count_difference_with_old_modification_time_should_not_be_skipped === RUN TestShouldSkipVolume/both_volumes_modified_after_pulse_cutoff_with_same_file_counts_should_be_skipped --- PASS: TestShouldSkipVolume (0.00s) --- PASS: TestShouldSkipVolume/identical_volumes_should_be_skipped (0.00s) --- PASS: TestShouldSkipVolume/different_file_counts_should_not_be_skipped (0.00s) --- PASS: TestShouldSkipVolume/different_delete_counts_with_syncDeletions_enabled_should_not_be_skipped (0.00s) --- PASS: TestShouldSkipVolume/different_delete_counts_with_syncDeletions_disabled_should_be_skipped_if_file_counts_match (0.00s) --- PASS: TestShouldSkipVolume/volumes_with_zero_file_counts_should_be_skipped (0.00s) --- PASS: TestShouldSkipVolume/volumes_with_zero_and_non-zero_file_counts_should_not_be_skipped (0.00s) --- PASS: TestShouldSkipVolume/recently_modified_volumes_with_same_file_counts_should_be_skipped (0.00s) --- PASS: TestShouldSkipVolume/one_volume_modified_before_pulse_cutoff_with_different_file_counts_should_not_be_skipped (0.00s) --- PASS: TestShouldSkipVolume/different_modification_times_with_same_file_counts_should_be_skipped (0.00s) --- PASS: TestShouldSkipVolume/volumes_modified_exactly_at_pulse_cutoff_boundary_with_different_counts_should_not_be_skipped (0.00s) --- PASS: TestShouldSkipVolume/volumes_modified_just_after_pulse_cutoff_boundary_with_same_counts_should_be_skipped (0.00s) --- PASS: TestShouldSkipVolume/large_file_count_difference_with_old_modification_time_should_not_be_skipped (0.00s) --- PASS: TestShouldSkipVolume/both_volumes_modified_after_pulse_cutoff_with_same_file_counts_should_be_skipped (0.00s) === RUN TestVolumeCheckDiskHelperMethods --- PASS: TestVolumeCheckDiskHelperMethods (0.00s) === RUN TestSatisfyReplicaPlacementComplicated replication: 100 expected false name: test 100 negative replication: 100 expected true name: test 100 positive replication: 022 expected true name: test 022 positive replication: 022 expected false name: test 022 negative replication: 210 expected true name: test 210 moved from 200 positive replication: 210 expected false name: test 210 moved from 200 negative extra dc replication: 210 expected false name: test 210 moved from 200 negative extra data node --- PASS: TestSatisfyReplicaPlacementComplicated (0.00s) === RUN TestSatisfyReplicaPlacement01x replication: 011 expected true name: test 011 same existing rack replication: 011 expected false name: test 011 negative replication: 011 expected true name: test 011 different existing racks replication: 011 expected false name: test 011 different existing racks negative --- PASS: TestSatisfyReplicaPlacement01x (0.00s) === RUN TestSatisfyReplicaPlacement00x replication: 001 expected true name: test 001 replication: 002 expected true name: test 002 positive replication: 002 expected false name: test 002 negative, repeat the same node replication: 002 expected false name: test 002 negative, enough node already --- PASS: TestSatisfyReplicaPlacement00x (0.00s) === RUN TestSatisfyReplicaPlacement100 replication: 100 expected true name: test 100 --- PASS: TestSatisfyReplicaPlacement100 (0.00s) === RUN TestMisplacedChecking replication: 001 expected true name: test 001 replication: 010 expected false name: test 010 replication: 011 expected false name: test 011 replication: 110 expected true name: test 110 replication: 100 expected true name: test 100 --- PASS: TestMisplacedChecking (0.00s) === RUN TestPickingMisplacedVolumeToDelete replication: 001 name: test 001 command_volume_fix_replication_test.go:435: test 001: picked dn2 001 replication: 100 name: test 100 command_volume_fix_replication_test.go:435: test 100: picked dn2 100 --- PASS: TestPickingMisplacedVolumeToDelete (0.00s) === RUN TestSatisfyReplicaCurrentLocation === RUN TestSatisfyReplicaCurrentLocation/test_001 === RUN TestSatisfyReplicaCurrentLocation/test_010 === RUN TestSatisfyReplicaCurrentLocation/test_011 === RUN TestSatisfyReplicaCurrentLocation/test_110 === RUN TestSatisfyReplicaCurrentLocation/test_100 --- PASS: TestSatisfyReplicaCurrentLocation (0.00s) --- PASS: TestSatisfyReplicaCurrentLocation/test_001 (0.00s) --- PASS: TestSatisfyReplicaCurrentLocation/test_010 (0.00s) --- PASS: TestSatisfyReplicaCurrentLocation/test_011 (0.00s) --- PASS: TestSatisfyReplicaCurrentLocation/test_110 (0.00s) --- PASS: TestSatisfyReplicaCurrentLocation/test_100 (0.00s) === RUN TestParsing --- PASS: TestParsing (0.08s) === RUN TestMergeNeedleStreamsOrdersByTimestamp --- PASS: TestMergeNeedleStreamsOrdersByTimestamp (0.00s) === RUN TestMergeNeedleStreamsDoesNotDeduplicateAcrossWindows --- PASS: TestMergeNeedleStreamsDoesNotDeduplicateAcrossWindows (0.00s) === RUN TestMergeNeedleStreamsSameStreamDuplicates --- PASS: TestMergeNeedleStreamsSameStreamDuplicates (0.00s) === RUN TestMergeNeedleStreamsWithEmptyStream --- PASS: TestMergeNeedleStreamsWithEmptyStream (0.00s) === RUN TestMergeNeedleStreamsComplexDuplication --- PASS: TestMergeNeedleStreamsComplexDuplication (0.00s) === RUN TestMergeNeedleStreamsTimeWindowDeduplication --- PASS: TestMergeNeedleStreamsTimeWindowDeduplication (0.00s) === RUN TestMergeNeedleStreamsSingleStream --- PASS: TestMergeNeedleStreamsSingleStream (0.00s) === RUN TestMergeNeedleStreamsLargeIDs --- PASS: TestMergeNeedleStreamsLargeIDs (0.00s) === RUN TestMergeNeedleStreamsLastModifiedFallback --- PASS: TestMergeNeedleStreamsLastModifiedFallback (0.00s) === RUN TestMergeWorkflowValidation command_volume_merge_test.go:433: Volume merge workflow validated: 9 stages command_volume_merge_test.go:435: 1_collect_replicas: Query master to find all replicas of the target volume command_volume_merge_test.go:435: 3_allocate_temporary: Create temporary merge volume on third location (not a current replica) command_volume_merge_test.go:435: 5_tail_and_merge: Tail all replica needles and merge by timestamp, deduplicating command_volume_merge_test.go:435: 6_copy_merged: Copy merged volume back to each original replica location command_volume_merge_test.go:435: 7_delete_temporary: Delete the temporary merge volume from the third location command_volume_merge_test.go:435: 8_restore_writable: Restore writable state for replicas that were originally writable command_volume_merge_test.go:435: 2_validate_replicas: Verify at least 2 replicas exist and are healthy command_volume_merge_test.go:435: 4_mark_readonly: Mark all original replicas as readonly command_volume_merge_test.go:435: 9_verify_completion: Log completion status to user --- PASS: TestMergeWorkflowValidation (0.00s) === RUN TestMergeEdgeCaseHandling command_volume_merge_test.go:458: ✓ Edge case handled: concurrent_writes_prevented command_volume_merge_test.go:458: ✓ Edge case handled: network_timeout_during_tail command_volume_merge_test.go:458: ✓ Edge case handled: empty_replica_stream command_volume_merge_test.go:458: ✓ Edge case handled: large_volume_memory_efficiency command_volume_merge_test.go:458: ✓ Edge case handled: target_server_allocation_failure command_volume_merge_test.go:458: ✓ Edge case handled: different_needle_metadata command_volume_merge_test.go:458: ✓ Edge case handled: duplicate_needles_same_stream command_volume_merge_test.go:458: ✓ Edge case handled: duplicate_needles_across_streams command_volume_merge_test.go:458: ✓ Edge case handled: merge_volume_writeend_failure command_volume_merge_test.go:458: ✓ Edge case handled: replica_already_readonly command_volume_merge_test.go:465: All 10 edge cases are handled --- PASS: TestMergeEdgeCaseHandling (0.00s) === RUN TestBuildUnionFromMultipleIndexDatabases --- PASS: TestBuildUnionFromMultipleIndexDatabases (0.00s) === RUN TestFindLargestReplica === RUN TestFindLargestReplica/single_replica === RUN TestFindLargestReplica/first_is_largest === RUN TestFindLargestReplica/last_is_largest === RUN TestFindLargestReplica/middle_is_largest === RUN TestFindLargestReplica/all_equal_-_pick_first --- PASS: TestFindLargestReplica (0.00s) --- PASS: TestFindLargestReplica/single_replica (0.00s) --- PASS: TestFindLargestReplica/first_is_largest (0.00s) --- PASS: TestFindLargestReplica/last_is_largest (0.00s) --- PASS: TestFindLargestReplica/middle_is_largest (0.00s) --- PASS: TestFindLargestReplica/all_equal_-_pick_first (0.00s) === RUN TestDeletedEntriesAreSkipped --- PASS: TestDeletedEntriesAreSkipped (0.00s) === RUN TestReplicaUnionBuilder_EmptyLocations --- PASS: TestReplicaUnionBuilder_EmptyLocations (0.00s) === RUN TestAvoidDuplicateCopies --- PASS: TestAvoidDuplicateCopies (0.00s) === RUN TestVolumeServerEvacuate moving volume collection0_15 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection0_21 192.168.1.4:8080 => 192.168.1.6:8080 moving volume collection0_22 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection0_23 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection0_24 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection0_25 192.168.1.4:8080 => 192.168.1.2:8080 moving volume 27 192.168.1.4:8080 => 192.168.1.2:8080 moving volume 28 192.168.1.4:8080 => 192.168.1.2:8080 moving volume 29 192.168.1.4:8080 => 192.168.1.2:8080 moving volume 30 192.168.1.4:8080 => 192.168.1.2:8080 moving volume 31 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection1_33 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection1_38 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection1_51 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection1_52 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection1_54 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection1_63 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection1_69 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection1_74 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection1_80 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection1_84 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection1_85 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection1_97 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection1_98 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection1_105 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection1_106 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection1_112 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection1_116 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection1_119 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection1_128 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection1_133 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection1_136 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection1_138 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection1_140 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection1_144 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection1_161 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection1_173 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection1_174 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection1_197 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection1_219 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection2_263 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection2_272 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection2_291 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection2_299 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection2_301 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection2_302 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection2_339 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection2_345 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection2_355 192.168.1.4:8080 => 192.168.1.2:8080 moving volume collection2_373 192.168.1.4:8080 => 192.168.1.2:8080 --- PASS: TestVolumeServerEvacuate (0.01s) === RUN TestFindRemoteVolumeInTopology === RUN TestFindRemoteVolumeInTopology/find_existing_remote_volume === RUN TestFindRemoteVolumeInTopology/find_remote_volume_with_different_backend === RUN TestFindRemoteVolumeInTopology/find_remote_volume_on_another_server === RUN TestFindRemoteVolumeInTopology/local_volume_not_found_as_remote === RUN TestFindRemoteVolumeInTopology/non-existent_volume_not_found === RUN TestFindRemoteVolumeInTopology/filter_by_matching_collection_exact === RUN TestFindRemoteVolumeInTopology/filter_by_matching_collection_regex === RUN TestFindRemoteVolumeInTopology/filter_by_non-matching_collection --- PASS: TestFindRemoteVolumeInTopology (0.00s) --- PASS: TestFindRemoteVolumeInTopology/find_existing_remote_volume (0.00s) --- PASS: TestFindRemoteVolumeInTopology/find_remote_volume_with_different_backend (0.00s) --- PASS: TestFindRemoteVolumeInTopology/find_remote_volume_on_another_server (0.00s) --- PASS: TestFindRemoteVolumeInTopology/local_volume_not_found_as_remote (0.00s) --- PASS: TestFindRemoteVolumeInTopology/non-existent_volume_not_found (0.00s) --- PASS: TestFindRemoteVolumeInTopology/filter_by_matching_collection_exact (0.00s) --- PASS: TestFindRemoteVolumeInTopology/filter_by_matching_collection_regex (0.00s) --- PASS: TestFindRemoteVolumeInTopology/filter_by_non-matching_collection (0.00s) === RUN TestFindRemoteVolumeInTopologyInvalidPattern --- PASS: TestFindRemoteVolumeInTopologyInvalidPattern (0.00s) === RUN TestCollectRemoteVolumesWithInfo === RUN TestCollectRemoteVolumesWithInfo/empty_pattern_matches_empty_collection_only === RUN TestCollectRemoteVolumesWithInfo/match_all_collections === RUN TestCollectRemoteVolumesWithInfo/match_specific_collection === RUN TestCollectRemoteVolumesWithInfo/match_collection_prefix === RUN TestCollectRemoteVolumesWithInfo/match_bucket_collection === RUN TestCollectRemoteVolumesWithInfo/no_match --- PASS: TestCollectRemoteVolumesWithInfo (0.00s) --- PASS: TestCollectRemoteVolumesWithInfo/empty_pattern_matches_empty_collection_only (0.00s) --- PASS: TestCollectRemoteVolumesWithInfo/match_all_collections (0.00s) --- PASS: TestCollectRemoteVolumesWithInfo/match_specific_collection (0.00s) --- PASS: TestCollectRemoteVolumesWithInfo/match_collection_prefix (0.00s) --- PASS: TestCollectRemoteVolumesWithInfo/match_bucket_collection (0.00s) --- PASS: TestCollectRemoteVolumesWithInfo/no_match (0.00s) === RUN TestCollectRemoteVolumesWithInfoCaptures --- PASS: TestCollectRemoteVolumesWithInfoCaptures (0.00s) === RUN TestCollectRemoteVolumesWithInfoInvalidPattern --- PASS: TestCollectRemoteVolumesWithInfoInvalidPattern (0.00s) === RUN TestECRebalanceWithLimitedSlots ec_rebalance_slots_test.go:38: Topology summary: ec_rebalance_slots_test.go:39: Number of EC nodes: 6 ec_rebalance_slots_test.go:40: Total free EC slots: 432 ec_rebalance_slots_test.go:50: Node 127.0.0.1:8080 (rack rack0): 28 shards, 52 free slots ec_rebalance_slots_test.go:50: Node 127.0.0.1:8081 (rack rack1): 28 shards, 52 free slots ec_rebalance_slots_test.go:50: Node 127.0.0.1:8082 (rack rack2): 14 shards, 76 free slots ec_rebalance_slots_test.go:50: Node 127.0.0.1:8083 (rack rack3): 28 shards, 52 free slots ec_rebalance_slots_test.go:50: Node 127.0.0.1:8084 (rack rack4): 0 shards, 100 free slots ec_rebalance_slots_test.go:50: Node 127.0.0.1:8085 (rack rack5): 0 shards, 100 free slots ec_rebalance_slots_test.go:63: Total EC shards: 98 ec_rebalance_slots_test.go:105: totalFreeEcSlots = 432, rebalance should be possible --- PASS: TestECRebalanceWithLimitedSlots (0.00s) === RUN TestECRebalanceZeroFreeSlots ec_rebalance_slots_test.go:120: Zero free slots scenario: ec_rebalance_slots_test.go:128: Node 127.0.0.1:8080: 28 shards, 0 free slots, volumeCount=10, max=10 ec_rebalance_slots_test.go:128: Node 127.0.0.1:8081: 28 shards, 0 free slots, volumeCount=10, max=10 ec_rebalance_slots_test.go:128: Node 127.0.0.1:8082: 14 shards, 0 free slots, volumeCount=10, max=10 ec_rebalance_slots_test.go:128: Node 127.0.0.1:8083: 28 shards, 0 free slots, volumeCount=10, max=10 ec_rebalance_slots_test.go:133: Total free slots: 0 ec_rebalance_slots_test.go:136: ec_rebalance_slots_test.go:137: SCENARIO REPRODUCED: totalFreeEcSlots = 0 ec_rebalance_slots_test.go:138: This would trigger: 'no free ec shard slots. only 0 left' --- PASS: TestECRebalanceZeroFreeSlots (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/shell 0.215s === RUN TestRobinCounter --- PASS: TestRobinCounter (0.00s) === RUN TestBuildInfo metrics_buildinfo_test.go:72: BuildInfo metric: version=4.23, commit=, sizelimit=30GB, goos=linux, goarch=amd64 --- PASS: TestBuildInfo (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/stats 0.009s === RUN TestCalculateExpectedShardSizeWithRealEncoding === RUN TestCalculateExpectedShardSizeWithRealEncoding/5MB_file I0505 12:12:52.660469 ec_encoder.go:122 encodeDatFile /tmp/TestCalculateExpectedShardSizeWithRealEncoding3861865682/001/test_volume.dat size:5242880 with EC context 10+4 (total: 14) disk_location_ec_realworld_test.go:118: ✓ SUCCESS: .dat size 5242880 → actual shard size 1048576 matches calculated size (Small file that needs 1 small block per shard) === RUN TestCalculateExpectedShardSizeWithRealEncoding/10MB_file_(exactly_10_small_blocks) I0505 12:12:52.683999 ec_encoder.go:122 encodeDatFile /tmp/TestCalculateExpectedShardSizeWithRealEncoding3861865682/001/test_volume.dat size:10485760 with EC context 10+4 (total: 14) disk_location_ec_realworld_test.go:118: ✓ SUCCESS: .dat size 10485760 → actual shard size 1048576 matches calculated size (Exactly fits in 1MB small blocks) === RUN TestCalculateExpectedShardSizeWithRealEncoding/15MB_file I0505 12:12:52.703331 ec_encoder.go:122 encodeDatFile /tmp/TestCalculateExpectedShardSizeWithRealEncoding3861865682/001/test_volume.dat size:15728640 with EC context 10+4 (total: 14) disk_location_ec_realworld_test.go:118: ✓ SUCCESS: .dat size 15728640 → actual shard size 2097152 matches calculated size (Requires 2 small blocks per shard) === RUN TestCalculateExpectedShardSizeWithRealEncoding/50MB_file I0505 12:12:52.754313 ec_encoder.go:122 encodeDatFile /tmp/TestCalculateExpectedShardSizeWithRealEncoding3861865682/001/test_volume.dat size:52428800 with EC context 10+4 (total: 14) disk_location_ec_realworld_test.go:118: ✓ SUCCESS: .dat size 52428800 → actual shard size 5242880 matches calculated size (Requires 5 small blocks per shard) === RUN TestCalculateExpectedShardSizeWithRealEncoding/100MB_file I0505 12:12:52.856600 ec_encoder.go:122 encodeDatFile /tmp/TestCalculateExpectedShardSizeWithRealEncoding3861865682/001/test_volume.dat size:104857600 with EC context 10+4 (total: 14) disk_location_ec_realworld_test.go:118: ✓ SUCCESS: .dat size 104857600 → actual shard size 10485760 matches calculated size (Requires 10 small blocks per shard) === RUN TestCalculateExpectedShardSizeWithRealEncoding/512MB_file I0505 12:12:53.190918 ec_encoder.go:122 encodeDatFile /tmp/TestCalculateExpectedShardSizeWithRealEncoding3861865682/001/test_volume.dat size:536870912 with EC context 10+4 (total: 14) disk_location_ec_realworld_test.go:118: ✓ SUCCESS: .dat size 536870912 → actual shard size 54525952 matches calculated size (Requires 52 small blocks per shard (rounded up)) --- PASS: TestCalculateExpectedShardSizeWithRealEncoding (1.07s) --- PASS: TestCalculateExpectedShardSizeWithRealEncoding/5MB_file (0.02s) --- PASS: TestCalculateExpectedShardSizeWithRealEncoding/10MB_file_(exactly_10_small_blocks) (0.02s) --- PASS: TestCalculateExpectedShardSizeWithRealEncoding/15MB_file (0.03s) --- PASS: TestCalculateExpectedShardSizeWithRealEncoding/50MB_file (0.08s) --- PASS: TestCalculateExpectedShardSizeWithRealEncoding/100MB_file (0.14s) --- PASS: TestCalculateExpectedShardSizeWithRealEncoding/512MB_file (0.77s) === RUN TestCalculateExpectedShardSizeEdgeCases === RUN TestCalculateExpectedShardSizeEdgeCases/1_byte_file I0505 12:12:53.723341 ec_encoder.go:122 encodeDatFile /tmp/TestCalculateExpectedShardSizeEdgeCases3404114185/001/1 byte file.dat size:1 with EC context 10+4 (total: 14) disk_location_ec_realworld_test.go:188: ✓ File size 1 → shard size 1048576 (correct) === RUN TestCalculateExpectedShardSizeEdgeCases/1KB_file I0505 12:12:53.736480 ec_encoder.go:122 encodeDatFile /tmp/TestCalculateExpectedShardSizeEdgeCases3404114185/001/1KB file.dat size:1024 with EC context 10+4 (total: 14) disk_location_ec_realworld_test.go:188: ✓ File size 1024 → shard size 1048576 (correct) === RUN TestCalculateExpectedShardSizeEdgeCases/10KB_file I0505 12:12:53.748276 ec_encoder.go:122 encodeDatFile /tmp/TestCalculateExpectedShardSizeEdgeCases3404114185/001/10KB file.dat size:10240 with EC context 10+4 (total: 14) disk_location_ec_realworld_test.go:188: ✓ File size 10240 → shard size 1048576 (correct) === RUN TestCalculateExpectedShardSizeEdgeCases/1MB_file_(1_small_block) I0505 12:12:53.759401 ec_encoder.go:122 encodeDatFile /tmp/TestCalculateExpectedShardSizeEdgeCases3404114185/001/1MB file (1 small block).dat size:1048576 with EC context 10+4 (total: 14) disk_location_ec_realworld_test.go:188: ✓ File size 1048576 → shard size 1048576 (correct) === RUN TestCalculateExpectedShardSizeEdgeCases/1MB_+_1_byte I0505 12:12:53.773596 ec_encoder.go:122 encodeDatFile /tmp/TestCalculateExpectedShardSizeEdgeCases3404114185/001/1MB + 1 byte.dat size:1048577 with EC context 10+4 (total: 14) disk_location_ec_realworld_test.go:188: ✓ File size 1048577 → shard size 1048576 (correct) === RUN TestCalculateExpectedShardSizeEdgeCases/9.9MB_(almost_1_small_block_per_shard) I0505 12:12:53.794532 ec_encoder.go:122 encodeDatFile /tmp/TestCalculateExpectedShardSizeEdgeCases3404114185/001/9.9MB (almost 1 small block per shard).dat size:10358784 with EC context 10+4 (total: 14) disk_location_ec_realworld_test.go:188: ✓ File size 10358784 → shard size 1048576 (correct) === RUN TestCalculateExpectedShardSizeEdgeCases/10.1MB_(just_over_1_small_block_per_shard) I0505 12:12:53.815041 ec_encoder.go:122 encodeDatFile /tmp/TestCalculateExpectedShardSizeEdgeCases3404114185/001/10.1MB (just over 1 small block per shard).dat size:10588160 with EC context 10+4 (total: 14) disk_location_ec_realworld_test.go:188: ✓ File size 10588160 → shard size 2097152 (correct) --- PASS: TestCalculateExpectedShardSizeEdgeCases (0.11s) --- PASS: TestCalculateExpectedShardSizeEdgeCases/1_byte_file (0.01s) --- PASS: TestCalculateExpectedShardSizeEdgeCases/1KB_file (0.01s) --- PASS: TestCalculateExpectedShardSizeEdgeCases/10KB_file (0.01s) --- PASS: TestCalculateExpectedShardSizeEdgeCases/1MB_file_(1_small_block) (0.01s) --- PASS: TestCalculateExpectedShardSizeEdgeCases/1MB_+_1_byte (0.01s) --- PASS: TestCalculateExpectedShardSizeEdgeCases/9.9MB_(almost_1_small_block_per_shard) (0.02s) --- PASS: TestCalculateExpectedShardSizeEdgeCases/10.1MB_(just_over_1_small_block_per_shard) (0.03s) === RUN TestCalculateExpectedShardSize === RUN TestCalculateExpectedShardSize/0_bytes_(empty_file) disk_location_ec_shard_size_test.go:138: ✓ File size: 0 → Shard size: 0 (Empty file has 0 shard size) === RUN TestCalculateExpectedShardSize/Exact_10GB_(1_large_batch) disk_location_ec_shard_size_test.go:138: ✓ File size: 10737418240 → Shard size: 1073741824 (Exactly fits in large blocks) === RUN TestCalculateExpectedShardSize/Exact_20GB_(2_large_batches) disk_location_ec_shard_size_test.go:138: ✓ File size: 21474836480 → Shard size: 2147483648 (2 complete large batches) === RUN TestCalculateExpectedShardSize/Just_under_large_batch_(10GB_-_1_byte) disk_location_ec_shard_size_test.go:138: ✓ File size: 10737418239 → Shard size: 1073741824 (Just under 10GB needs 1024 small blocks) === RUN TestCalculateExpectedShardSize/Just_over_large_batch_(10GB_+_1_byte) disk_location_ec_shard_size_test.go:138: ✓ File size: 10737418241 → Shard size: 1074790400 (Just over 10GB adds 1 small block) === RUN TestCalculateExpectedShardSize/Exact_10MB_(1_small_batch) disk_location_ec_shard_size_test.go:138: ✓ File size: 10485760 → Shard size: 1048576 (Exactly fits in 1 small batch) === RUN TestCalculateExpectedShardSize/Exact_20MB_(2_small_batches) disk_location_ec_shard_size_test.go:138: ✓ File size: 20971520 → Shard size: 2097152 (2 complete small batches) === RUN TestCalculateExpectedShardSize/Just_under_small_batch_(10MB_-_1_byte) disk_location_ec_shard_size_test.go:138: ✓ File size: 10485759 → Shard size: 1048576 (Just under 10MB rounds up to 1 small block) === RUN TestCalculateExpectedShardSize/Just_over_small_batch_(10MB_+_1_byte) disk_location_ec_shard_size_test.go:138: ✓ File size: 10485761 → Shard size: 2097152 (Just over 10MB needs 2 small blocks) === RUN TestCalculateExpectedShardSize/10GB_+_1MB disk_location_ec_shard_size_test.go:138: ✓ File size: 10738466816 → Shard size: 1074790400 (1 large batch + 1MB needs 1 small block) === RUN TestCalculateExpectedShardSize/10GB_+_5MB disk_location_ec_shard_size_test.go:138: ✓ File size: 10742661120 → Shard size: 1074790400 (1 large batch + 5MB rounds up to 1 small block) === RUN TestCalculateExpectedShardSize/10GB_+_15MB disk_location_ec_shard_size_test.go:138: ✓ File size: 10753146880 → Shard size: 1075838976 (1 large batch + 15MB needs 2 small blocks) === RUN TestCalculateExpectedShardSize/11GB_(1_large_batch_+_103_small_blocks) disk_location_ec_shard_size_test.go:138: ✓ File size: 11811160064 → Shard size: 1181745152 (1GB large + 1GB remaining needs 103 small blocks) === RUN TestCalculateExpectedShardSize/5MB_(requires_1_small_block_per_shard) disk_location_ec_shard_size_test.go:138: ✓ File size: 5242880 → Shard size: 1048576 (Small file rounds up to 1MB per shard) === RUN TestCalculateExpectedShardSize/1KB_(minimum_size) disk_location_ec_shard_size_test.go:138: ✓ File size: 1024 → Shard size: 1048576 (Tiny file needs 1 small block) === RUN TestCalculateExpectedShardSize/10.5GB_(mixed) disk_location_ec_shard_size_test.go:138: ✓ File size: 11274289152 → Shard size: 1128267776 (1GB large + 512MB remaining needs 52 small blocks) --- PASS: TestCalculateExpectedShardSize (0.00s) --- PASS: TestCalculateExpectedShardSize/0_bytes_(empty_file) (0.00s) --- PASS: TestCalculateExpectedShardSize/Exact_10GB_(1_large_batch) (0.00s) --- PASS: TestCalculateExpectedShardSize/Exact_20GB_(2_large_batches) (0.00s) --- PASS: TestCalculateExpectedShardSize/Just_under_large_batch_(10GB_-_1_byte) (0.00s) --- PASS: TestCalculateExpectedShardSize/Just_over_large_batch_(10GB_+_1_byte) (0.00s) --- PASS: TestCalculateExpectedShardSize/Exact_10MB_(1_small_batch) (0.00s) --- PASS: TestCalculateExpectedShardSize/Exact_20MB_(2_small_batches) (0.00s) --- PASS: TestCalculateExpectedShardSize/Just_under_small_batch_(10MB_-_1_byte) (0.00s) --- PASS: TestCalculateExpectedShardSize/Just_over_small_batch_(10MB_+_1_byte) (0.00s) --- PASS: TestCalculateExpectedShardSize/10GB_+_1MB (0.00s) --- PASS: TestCalculateExpectedShardSize/10GB_+_5MB (0.00s) --- PASS: TestCalculateExpectedShardSize/10GB_+_15MB (0.00s) --- PASS: TestCalculateExpectedShardSize/11GB_(1_large_batch_+_103_small_blocks) (0.00s) --- PASS: TestCalculateExpectedShardSize/5MB_(requires_1_small_block_per_shard) (0.00s) --- PASS: TestCalculateExpectedShardSize/1KB_(minimum_size) (0.00s) --- PASS: TestCalculateExpectedShardSize/10.5GB_(mixed) (0.00s) === RUN TestShardSizeValidationScenarios === RUN TestShardSizeValidationScenarios/Valid:_exact_match_for_10GB === RUN TestShardSizeValidationScenarios/Invalid:_1_byte_too_small === RUN TestShardSizeValidationScenarios/Invalid:_1_byte_too_large === RUN TestShardSizeValidationScenarios/Valid:_small_file_exact_match === RUN TestShardSizeValidationScenarios/Invalid:_wrong_size_for_small_file --- PASS: TestShardSizeValidationScenarios (0.00s) --- PASS: TestShardSizeValidationScenarios/Valid:_exact_match_for_10GB (0.00s) --- PASS: TestShardSizeValidationScenarios/Invalid:_1_byte_too_small (0.00s) --- PASS: TestShardSizeValidationScenarios/Invalid:_1_byte_too_large (0.00s) --- PASS: TestShardSizeValidationScenarios/Valid:_small_file_exact_match (0.00s) --- PASS: TestShardSizeValidationScenarios/Invalid:_wrong_size_for_small_file (0.00s) === RUN TestIncompleteEcEncodingCleanup === RUN TestIncompleteEcEncodingCleanup/Incomplete_EC:_shards_without_.ecx,_.dat_exists_-_should_cleanup W0505 12:12:53.834104 disk_location_ec.go:410 Found 14 EC shards without .ecx file for volume 100 (incomplete encoding interrupted before .ecx creation), cleaning up... === RUN TestIncompleteEcEncodingCleanup/Distributed_EC:_shards_without_.ecx,_.dat_deleted_-_should_NOT_cleanup === RUN TestIncompleteEcEncodingCleanup/Incomplete_EC:_shards_with_.ecx_but_<_10_shards,_.dat_exists_-_should_cleanup W0505 12:12:53.834717 disk_location_ec.go:524 EC volume 102 has .dat file but only 7 shards (need at least 10 for local EC) W0505 12:12:53.834721 disk_location_ec.go:360 Incomplete or invalid EC volume 102: .dat exists but validation failed, cleaning up EC files... === RUN TestIncompleteEcEncodingCleanup/Valid_local_EC:_shards_with_.ecx,_>=_10_shards,_.dat_exists_-_should_load W0505 12:12:53.835194 ec_volume.go:151 vif file not found,volumeId:103, filename:/tmp/TestIncompleteEcEncodingCleanupValid_local_EC_shards_with_.ecx4109217990/001/103.vif === RUN TestIncompleteEcEncodingCleanup/Distributed_EC:_shards_with_.ecx,_.dat_deleted_-_should_load W0505 12:12:53.835940 ec_volume.go:151 vif file not found,volumeId:104, filename:/tmp/TestIncompleteEcEncodingCleanupDistributed_EC_shards_with_.ecx1254849526/001/104.vif === RUN TestIncompleteEcEncodingCleanup/Incomplete_EC_with_collection:_shards_without_.ecx,_.dat_exists_-_should_cleanup W0505 12:12:53.836359 disk_location_ec.go:410 Found 14 EC shards without .ecx file for volume 105 (incomplete encoding interrupted before .ecx creation), cleaning up... --- PASS: TestIncompleteEcEncodingCleanup (0.00s) --- PASS: TestIncompleteEcEncodingCleanup/Incomplete_EC:_shards_without_.ecx,_.dat_exists_-_should_cleanup (0.00s) --- PASS: TestIncompleteEcEncodingCleanup/Distributed_EC:_shards_without_.ecx,_.dat_deleted_-_should_NOT_cleanup (0.00s) --- PASS: TestIncompleteEcEncodingCleanup/Incomplete_EC:_shards_with_.ecx_but_<_10_shards,_.dat_exists_-_should_cleanup (0.00s) --- PASS: TestIncompleteEcEncodingCleanup/Valid_local_EC:_shards_with_.ecx,_>=_10_shards,_.dat_exists_-_should_load (0.00s) --- PASS: TestIncompleteEcEncodingCleanup/Distributed_EC:_shards_with_.ecx,_.dat_deleted_-_should_load (0.00s) --- PASS: TestIncompleteEcEncodingCleanup/Incomplete_EC_with_collection:_shards_without_.ecx,_.dat_exists_-_should_cleanup (0.00s) === RUN TestValidateEcVolume === RUN TestValidateEcVolume/Valid:_.dat_exists_with_10+_shards === RUN TestValidateEcVolume/Invalid:_.dat_exists_with_<_10_shards W0505 12:12:53.836853 disk_location_ec.go:524 EC volume 201 has .dat file but only 9 shards (need at least 10 for local EC) === RUN TestValidateEcVolume/Valid:_.dat_deleted_(distributed_EC)_with_any_shards === RUN TestValidateEcVolume/Valid:_.dat_deleted_(distributed_EC)_with_no_shards === RUN TestValidateEcVolume/Invalid:_zero-byte_shard_files_should_not_count W0505 12:12:53.837178 disk_location_ec.go:524 EC volume 204 has .dat file but only 0 shards (need at least 10 for local EC) === RUN TestValidateEcVolume/Invalid:_.dat_exists_with_different_size_shards W0505 12:12:53.837367 disk_location_ec.go:492 EC volume 205 shard 1 has size 110, expected 100 (all EC shards must be same size) --- PASS: TestValidateEcVolume (0.00s) --- PASS: TestValidateEcVolume/Valid:_.dat_exists_with_10+_shards (0.00s) --- PASS: TestValidateEcVolume/Invalid:_.dat_exists_with_<_10_shards (0.00s) --- PASS: TestValidateEcVolume/Valid:_.dat_deleted_(distributed_EC)_with_any_shards (0.00s) --- PASS: TestValidateEcVolume/Valid:_.dat_deleted_(distributed_EC)_with_no_shards (0.00s) --- PASS: TestValidateEcVolume/Invalid:_zero-byte_shard_files_should_not_count (0.00s) --- PASS: TestValidateEcVolume/Invalid:_.dat_exists_with_different_size_shards (0.00s) === RUN TestRemoveEcVolumeFiles === RUN TestRemoveEcVolumeFiles/Same_directory_for_data_and_index === RUN TestRemoveEcVolumeFiles/Separate_idx_directory --- PASS: TestRemoveEcVolumeFiles (0.00s) --- PASS: TestRemoveEcVolumeFiles/Same_directory_for_data_and_index (0.00s) --- PASS: TestRemoveEcVolumeFiles/Separate_idx_directory (0.00s) === RUN TestEcCleanupWithSeparateIdxDirectory W0505 12:12:53.838433 disk_location_ec.go:410 Found 14 EC shards without .ecx file for volume 400 (incomplete encoding interrupted before .ecx creation), cleaning up... --- PASS: TestEcCleanupWithSeparateIdxDirectory (0.00s) === RUN TestDistributedEcVolumeNoFileDeletion W0505 12:12:53.838751 ec_volume.go:151 vif file not found,volumeId:500, filename:/tmp/TestDistributedEcVolumeNoFileDeletion1896865286/001/500.vif disk_location_ec_test.go:662: SUCCESS: Distributed EC volume files preserved (not deleted) --- PASS: TestDistributedEcVolumeNoFileDeletion (0.00s) === RUN TestUnUsedSpace --- PASS: TestUnUsedSpace (0.00s) === RUN TestResolveVolumeIDs --- PASS: TestResolveVolumeIDs (0.00s) === RUN TestLevelDbNeedleMap_Concurrency --- PASS: TestLevelDbNeedleMap_Concurrency (0.01s) === RUN TestFastLoadingNeedleMapMetrics I0505 12:12:53.854077 needle_map_metric_test.go:27 FileCount expected 10000 actual 11994 I0505 12:12:53.854090 needle_map_metric_test.go:28 DeletedSize expected 1667 actual 1688 I0505 12:12:53.854093 needle_map_metric_test.go:29 ContentSize expected 10000 actual 10000 I0505 12:12:53.854095 needle_map_metric_test.go:30 DeletedCount expected 1667 actual 3682 I0505 12:12:53.854098 needle_map_metric_test.go:31 MaxFileKey expected 10000 actual 10000 --- PASS: TestFastLoadingNeedleMapMetrics (0.01s) === RUN TestHasFreeDiskLocation === RUN TestHasFreeDiskLocation/low_disk_space_prevents_allocation === RUN TestHasFreeDiskLocation/normal_disk_space_and_available_volume_count_allows_allocation === RUN TestHasFreeDiskLocation/volume_count_at_max_prevents_allocation === RUN TestHasFreeDiskLocation/volume_count_over_max_prevents_allocation === RUN TestHasFreeDiskLocation/volume_count_just_under_max_allows_allocation === RUN TestHasFreeDiskLocation/max_volume_count_is_0_allows_allocation === RUN TestHasFreeDiskLocation/max_volume_count_is_0_but_low_disk_space_prevents_allocation --- PASS: TestHasFreeDiskLocation (0.00s) --- PASS: TestHasFreeDiskLocation/low_disk_space_prevents_allocation (0.00s) --- PASS: TestHasFreeDiskLocation/normal_disk_space_and_available_volume_count_allows_allocation (0.00s) --- PASS: TestHasFreeDiskLocation/volume_count_at_max_prevents_allocation (0.00s) --- PASS: TestHasFreeDiskLocation/volume_count_over_max_prevents_allocation (0.00s) --- PASS: TestHasFreeDiskLocation/volume_count_just_under_max_allows_allocation (0.00s) --- PASS: TestHasFreeDiskLocation/max_volume_count_is_0_allows_allocation (0.00s) --- PASS: TestHasFreeDiskLocation/max_volume_count_is_0_but_low_disk_space_prevents_allocation (0.00s) === RUN TestCollectHeartbeatRespectsLowDiskSpace === RUN TestCollectHeartbeatRespectsLowDiskSpace/low_disk_space === RUN TestCollectHeartbeatRespectsLowDiskSpace/normal_disk_space === RUN TestCollectHeartbeatRespectsLowDiskSpace/low_disk_space_zero_volumes === RUN TestCollectHeartbeatRespectsLowDiskSpace/low_disk_space_with_ec_shards === RUN TestCollectHeartbeatRespectsLowDiskSpace/low_disk_space_with_multiple_ec_volumes --- PASS: TestCollectHeartbeatRespectsLowDiskSpace (0.00s) --- PASS: TestCollectHeartbeatRespectsLowDiskSpace/low_disk_space (0.00s) --- PASS: TestCollectHeartbeatRespectsLowDiskSpace/normal_disk_space (0.00s) --- PASS: TestCollectHeartbeatRespectsLowDiskSpace/low_disk_space_zero_volumes (0.00s) --- PASS: TestCollectHeartbeatRespectsLowDiskSpace/low_disk_space_with_ec_shards (0.00s) --- PASS: TestCollectHeartbeatRespectsLowDiskSpace/low_disk_space_with_multiple_ec_volumes (0.00s) === RUN TestLoadEcShardsWhenIndexFilesOnDifferentDisk I0505 12:12:53.854884 store_ec_reconcile.go:76 ec volume 1093 (collection="grafana-loki"): loading orphan shards [grafana-loki_1093.ec00 grafana-loki_1093.ec12] on /tmp/TestLoadEcShardsWhenIndexFilesOnDifferentDisk447459460/001/data1 using index files from /tmp/TestLoadEcShardsWhenIndexFilesOnDifferentDisk447459460/001/data2 (issue #9212) --- PASS: TestLoadEcShardsWhenIndexFilesOnDifferentDisk (0.00s) === RUN TestLoadEcShardsOrphanWithoutSiblingEcx --- PASS: TestLoadEcShardsOrphanWithoutSiblingEcx (0.00s) === RUN TestReconcileNoOpWhenEachDiskIsSelfContained --- PASS: TestReconcileNoOpWhenEachDiskIsSelfContained (0.00s) === RUN TestLoadEcShardsWhenOwnerEcxIsInDataDir I0505 12:12:53.857251 store_ec_reconcile.go:76 ec volume 4242 (collection="grafana-loki"): loading orphan shards [grafana-loki_4242.ec00 grafana-loki_4242.ec12] on /tmp/TestLoadEcShardsWhenOwnerEcxIsInDataDir3969293282/001/data1 using index files from /tmp/TestLoadEcShardsWhenOwnerEcxIsInDataDir3969293282/001/data2 (issue #9212) --- PASS: TestLoadEcShardsWhenOwnerEcxIsInDataDir (0.00s) === RUN TestRecoverOneRemoteEcShardInterval_SufficientShards store_ec_recovery_test.go:52: Successfully identified 13 available shards (need 10) --- PASS: TestRecoverOneRemoteEcShardInterval_SufficientShards (0.00s) === RUN TestRecoverOneRemoteEcShardInterval_InsufficientShards store_ec_recovery_test.go:80: Correctly identified insufficient shards: 7 available (need 10) --- PASS: TestRecoverOneRemoteEcShardInterval_InsufficientShards (0.00s) === RUN TestRecoverOneRemoteEcShardInterval_ShardCounting === RUN TestRecoverOneRemoteEcShardInterval_ShardCounting/All_shards_available_except_one store_ec_recovery_test.go:155: Available shards: 13 [0 1 2 3 4 6 7 8 9 10 11 12 13], Missing shards: 1 [5] === RUN TestRecoverOneRemoteEcShardInterval_ShardCounting/Exactly_minimum_shards_(DataShardsCount) store_ec_recovery_test.go:155: Available shards: 10 [0 1 2 3 4 5 6 7 8 9], Missing shards: 4 [10 11 12 13] === RUN TestRecoverOneRemoteEcShardInterval_ShardCounting/One_less_than_minimum store_ec_recovery_test.go:155: Available shards: 9 [0 1 2 3 4 5 6 7 8], Missing shards: 5 [9 10 11 12 13] === RUN TestRecoverOneRemoteEcShardInterval_ShardCounting/Only_half_the_shards store_ec_recovery_test.go:155: Available shards: 7 [1 2 3 4 5 6 7], Missing shards: 7 [0 8 9 10 11 12 13] === RUN TestRecoverOneRemoteEcShardInterval_ShardCounting/All_data_shards_available store_ec_recovery_test.go:155: Available shards: 10 [0 1 2 3 4 5 6 7 8 9], Missing shards: 4 [10 11 12 13] --- PASS: TestRecoverOneRemoteEcShardInterval_ShardCounting (0.00s) --- PASS: TestRecoverOneRemoteEcShardInterval_ShardCounting/All_shards_available_except_one (0.00s) --- PASS: TestRecoverOneRemoteEcShardInterval_ShardCounting/Exactly_minimum_shards_(DataShardsCount) (0.00s) --- PASS: TestRecoverOneRemoteEcShardInterval_ShardCounting/One_less_than_minimum (0.00s) --- PASS: TestRecoverOneRemoteEcShardInterval_ShardCounting/Only_half_the_shards (0.00s) --- PASS: TestRecoverOneRemoteEcShardInterval_ShardCounting/All_data_shards_available (0.00s) === RUN TestRecoverOneRemoteEcShardInterval_ErrorMessage store_ec_recovery_test.go:190: Error message format validated: cannot recover shard 42.7: only 7 shards available [0 1 2 3 4 5 6], need at least 10 (missing: [7 8 9 10 11 12 13]) --- PASS: TestRecoverOneRemoteEcShardInterval_ErrorMessage (0.00s) === RUN TestRecoverOneRemoteEcShardInterval_ReconstructDataSlicing store_ec_recovery_test.go:248: Successfully reconstructed shard with proper buffer slicing --- PASS: TestRecoverOneRemoteEcShardInterval_ReconstructDataSlicing (0.00s) === RUN TestRecoverOneRemoteEcShardInterval_ParityShardRecovery === RUN TestRecoverOneRemoteEcShardInterval_ParityShardRecovery/RecoverParity10 === RUN TestRecoverOneRemoteEcShardInterval_ParityShardRecovery/RecoverParity11 === RUN TestRecoverOneRemoteEcShardInterval_ParityShardRecovery/RecoverParity12 === RUN TestRecoverOneRemoteEcShardInterval_ParityShardRecovery/RecoverParity13 --- PASS: TestRecoverOneRemoteEcShardInterval_ParityShardRecovery (0.00s) --- PASS: TestRecoverOneRemoteEcShardInterval_ParityShardRecovery/RecoverParity10 (0.00s) --- PASS: TestRecoverOneRemoteEcShardInterval_ParityShardRecovery/RecoverParity11 (0.00s) --- PASS: TestRecoverOneRemoteEcShardInterval_ParityShardRecovery/RecoverParity12 (0.00s) --- PASS: TestRecoverOneRemoteEcShardInterval_ParityShardRecovery/RecoverParity13 (0.00s) === RUN TestRecoverOneRemoteEcShardInterval_ConcurrentShardReading store_ec_recovery_test.go:363: Successfully simulated concurrent reading of 13 shards --- PASS: TestRecoverOneRemoteEcShardInterval_ConcurrentShardReading (0.00s) === RUN TestRecoverOneRemoteEcShardInterval_BuggyMaxShardCount store_ec_recovery_test.go:419: Corrected code: 9 shards (correct, insufficient) store_ec_recovery_test.go:420: Buggy code would have counted: 27 shards (incorrect, falsely sufficient) store_ec_recovery_test.go:421: Missing shards: [9 10 11 12 13] --- PASS: TestRecoverOneRemoteEcShardInterval_BuggyMaxShardCount (0.00s) === RUN TestFindEcShardTargetLocation_PinsToEcxOnDisk --- PASS: TestFindEcShardTargetLocation_PinsToEcxOnDisk (0.00s) === RUN TestFindEcShardTargetLocation_PrefersMountedOverEcx --- PASS: TestFindEcShardTargetLocation_PrefersMountedOverEcx (0.00s) === RUN TestFindEcShardTargetLocation_FallsThroughToHddWhenNothingMatches --- PASS: TestFindEcShardTargetLocation_FallsThroughToHddWhenNothingMatches (0.00s) === RUN TestFindEcShardTargetLocation_HonoursUnlimitedDisk --- PASS: TestFindEcShardTargetLocation_HonoursUnlimitedDisk (0.00s) === RUN TestFindEcShardTargetLocation_TightProvisioningKeepsEcxDisk --- PASS: TestFindEcShardTargetLocation_TightProvisioningKeepsEcxDisk (0.00s) === RUN TestLoadBalancingDistribution I0505 12:12:53.861040 store.go:287 In dir /tmp/TestLoadBalancingDistribution3947391814/001/dir0 (disk ID 0) adds volume:1 collection: replicaPlacement:000 ttl: I0505 12:12:53.861134 store.go:292 add volume 1 on disk ID 0 I0505 12:12:53.861138 store.go:287 In dir /tmp/TestLoadBalancingDistribution3947391814/001/dir1 (disk ID 1) adds volume:2 collection: replicaPlacement:000 ttl: I0505 12:12:53.861183 store.go:292 add volume 2 on disk ID 1 I0505 12:12:53.861190 store.go:287 In dir /tmp/TestLoadBalancingDistribution3947391814/001/dir2 (disk ID 2) adds volume:3 collection: replicaPlacement:000 ttl: I0505 12:12:53.861230 store.go:292 add volume 3 on disk ID 2 I0505 12:12:53.861232 store.go:287 In dir /tmp/TestLoadBalancingDistribution3947391814/001/dir0 (disk ID 0) adds volume:4 collection: replicaPlacement:000 ttl: I0505 12:12:53.861275 store.go:292 add volume 4 on disk ID 0 I0505 12:12:53.861278 store.go:287 In dir /tmp/TestLoadBalancingDistribution3947391814/001/dir1 (disk ID 1) adds volume:5 collection: replicaPlacement:000 ttl: I0505 12:12:53.861319 store.go:292 add volume 5 on disk ID 1 I0505 12:12:53.861321 store.go:287 In dir /tmp/TestLoadBalancingDistribution3947391814/001/dir2 (disk ID 2) adds volume:6 collection: replicaPlacement:000 ttl: I0505 12:12:53.861364 store.go:292 add volume 6 on disk ID 2 I0505 12:12:53.861366 store.go:287 In dir /tmp/TestLoadBalancingDistribution3947391814/001/dir0 (disk ID 0) adds volume:7 collection: replicaPlacement:000 ttl: I0505 12:12:53.861411 store.go:292 add volume 7 on disk ID 0 I0505 12:12:53.861414 store.go:287 In dir /tmp/TestLoadBalancingDistribution3947391814/001/dir1 (disk ID 1) adds volume:8 collection: replicaPlacement:000 ttl: I0505 12:12:53.861464 store.go:292 add volume 8 on disk ID 1 I0505 12:12:53.861466 store.go:287 In dir /tmp/TestLoadBalancingDistribution3947391814/001/dir2 (disk ID 2) adds volume:9 collection: replicaPlacement:000 ttl: I0505 12:12:53.861511 store.go:292 add volume 9 on disk ID 2 --- PASS: TestLoadBalancingDistribution (0.00s) === RUN TestLocalVolumesLen === RUN TestLocalVolumesLen/all_local_volumes === RUN TestLocalVolumesLen/all_remote_volumes === RUN TestLocalVolumesLen/mixed_local_and_remote === RUN TestLocalVolumesLen/no_volumes --- PASS: TestLocalVolumesLen (0.00s) --- PASS: TestLocalVolumesLen/all_local_volumes (0.00s) --- PASS: TestLocalVolumesLen/all_remote_volumes (0.00s) --- PASS: TestLocalVolumesLen/mixed_local_and_remote (0.00s) --- PASS: TestLocalVolumesLen/no_volumes (0.00s) === RUN TestVolumeLoadBalancing === RUN TestVolumeLoadBalancing/even_distribution_across_empty_locations I0505 12:12:53.861993 store.go:287 In dir /tmp/TestVolumeLoadBalancingeven_distribution_across_empty_locations3073135989/001/dir0 (disk ID 0) adds volume:1 collection: replicaPlacement:000 ttl: I0505 12:12:53.862072 store.go:292 add volume 1 on disk ID 0 I0505 12:12:53.862078 store.go:287 In dir /tmp/TestVolumeLoadBalancingeven_distribution_across_empty_locations3073135989/001/dir1 (disk ID 1) adds volume:2 collection: replicaPlacement:000 ttl: I0505 12:12:53.862123 store.go:292 add volume 2 on disk ID 1 I0505 12:12:53.862125 store.go:287 In dir /tmp/TestVolumeLoadBalancingeven_distribution_across_empty_locations3073135989/001/dir2 (disk ID 2) adds volume:3 collection: replicaPlacement:000 ttl: I0505 12:12:53.862166 store.go:292 add volume 3 on disk ID 2 I0505 12:12:53.862168 store.go:287 In dir /tmp/TestVolumeLoadBalancingeven_distribution_across_empty_locations3073135989/001/dir0 (disk ID 0) adds volume:4 collection: replicaPlacement:000 ttl: I0505 12:12:53.862209 store.go:292 add volume 4 on disk ID 0 I0505 12:12:53.862211 store.go:287 In dir /tmp/TestVolumeLoadBalancingeven_distribution_across_empty_locations3073135989/001/dir1 (disk ID 1) adds volume:5 collection: replicaPlacement:000 ttl: I0505 12:12:53.862255 store.go:292 add volume 5 on disk ID 1 I0505 12:12:53.862258 store.go:287 In dir /tmp/TestVolumeLoadBalancingeven_distribution_across_empty_locations3073135989/001/dir2 (disk ID 2) adds volume:6 collection: replicaPlacement:000 ttl: I0505 12:12:53.862321 store.go:292 add volume 6 on disk ID 2 === RUN TestVolumeLoadBalancing/prefers_location_with_fewer_local_volumes I0505 12:12:53.862987 store.go:287 In dir /tmp/TestVolumeLoadBalancingprefers_location_with_fewer_local_volume565395925/001/dir1 (disk ID 1) adds volume:1 collection: replicaPlacement:000 ttl: I0505 12:12:53.863073 store.go:292 add volume 1 on disk ID 1 I0505 12:12:53.863078 store.go:287 In dir /tmp/TestVolumeLoadBalancingprefers_location_with_fewer_local_volume565395925/001/dir1 (disk ID 1) adds volume:2 collection: replicaPlacement:000 ttl: I0505 12:12:53.863146 store.go:292 add volume 2 on disk ID 1 I0505 12:12:53.863149 store.go:287 In dir /tmp/TestVolumeLoadBalancingprefers_location_with_fewer_local_volume565395925/001/dir1 (disk ID 1) adds volume:3 collection: replicaPlacement:000 ttl: I0505 12:12:53.863251 store.go:292 add volume 3 on disk ID 1 === RUN TestVolumeLoadBalancing/ignores_remote_volumes_in_count I0505 12:12:53.863826 store.go:287 In dir /tmp/TestVolumeLoadBalancingignores_remote_volumes_in_count843824719/001/dir0 (disk ID 0) adds volume:1 collection: replicaPlacement:000 ttl: I0505 12:12:53.863900 store.go:292 add volume 1 on disk ID 0 I0505 12:12:53.863903 store.go:287 In dir /tmp/TestVolumeLoadBalancingignores_remote_volumes_in_count843824719/001/dir0 (disk ID 0) adds volume:2 collection: replicaPlacement:000 ttl: I0505 12:12:53.863969 store.go:292 add volume 2 on disk ID 0 I0505 12:12:53.863972 store.go:287 In dir /tmp/TestVolumeLoadBalancingignores_remote_volumes_in_count843824719/001/dir2 (disk ID 2) adds volume:3 collection: replicaPlacement:000 ttl: I0505 12:12:53.864023 store.go:292 add volume 3 on disk ID 2 === RUN TestVolumeLoadBalancing/balances_when_some_locations_have_remote_volumes I0505 12:12:53.864426 store.go:287 In dir /tmp/TestVolumeLoadBalancingbalances_when_some_locations_have_remote136155644/001/dir2 (disk ID 2) adds volume:1 collection: replicaPlacement:000 ttl: I0505 12:12:53.864504 store.go:292 add volume 1 on disk ID 2 I0505 12:12:53.864509 store.go:287 In dir /tmp/TestVolumeLoadBalancingbalances_when_some_locations_have_remote136155644/001/dir0 (disk ID 0) adds volume:2 collection: replicaPlacement:000 ttl: I0505 12:12:53.864554 store.go:292 add volume 2 on disk ID 0 I0505 12:12:53.864557 store.go:287 In dir /tmp/TestVolumeLoadBalancingbalances_when_some_locations_have_remote136155644/001/dir1 (disk ID 1) adds volume:3 collection: replicaPlacement:000 ttl: I0505 12:12:53.864610 store.go:292 add volume 3 on disk ID 1 --- PASS: TestVolumeLoadBalancing (0.00s) --- PASS: TestVolumeLoadBalancing/even_distribution_across_empty_locations (0.00s) --- PASS: TestVolumeLoadBalancing/prefers_location_with_fewer_local_volumes (0.00s) --- PASS: TestVolumeLoadBalancing/ignores_remote_volumes_in_count (0.00s) --- PASS: TestVolumeLoadBalancing/balances_when_some_locations_have_remote_volumes (0.00s) === RUN TestSpaceCalculation === RUN TestSpaceCalculation/Large_volume,_small_preallocate store_vacuum_test.go:47: Volume size: 261993005056 bytes, Space needed: 288193458995 bytes (110.00% of volume size) === RUN TestSpaceCalculation/Small_volume,_large_preallocate store_vacuum_test.go:47: Volume size: 104857600 bytes, Space needed: 1181116006 bytes (1126.40% of volume size) --- PASS: TestSpaceCalculation (0.00s) --- PASS: TestSpaceCalculation/Large_volume,_small_preallocate (0.00s) --- PASS: TestSpaceCalculation/Small_volume,_large_preallocate (0.00s) === RUN TestBinarySearch --- PASS: TestBinarySearch (0.00s) === RUN TestScrubVolumeData === RUN TestScrubVolumeData/healthy_volume === RUN TestScrubVolumeData/bitrot_volume --- PASS: TestScrubVolumeData (0.00s) --- PASS: TestScrubVolumeData/healthy_volume (0.00s) --- PASS: TestScrubVolumeData/bitrot_volume (0.00s) === RUN TestMaxNeedleEnd --- PASS: TestMaxNeedleEnd (0.00s) === RUN TestSortVolumeInfos --- PASS: TestSortVolumeInfos (0.00s) === RUN TestReadNeedMetaWithWritesAndUpdates --- PASS: TestReadNeedMetaWithWritesAndUpdates (0.00s) === RUN TestReadNeedMetaWithDeletesThenWrites --- PASS: TestReadNeedMetaWithDeletesThenWrites (0.00s) === RUN TestMakeDiff --- PASS: TestMakeDiff (0.00s) === RUN TestMemIndexCompaction I0505 12:12:53.942957 needle_map_memory.go:113 loading idx from offset 0 for file: /tmp/TestMemIndexCompaction1339954886/001/1.cpx volume_vacuum_test.go:96: compaction speed: 114113452.38 bytes/s I0505 12:12:54.017387 volume_vacuum.go:165 Committing volume 1 vacuuming... I0505 12:12:54.105553 needle_map_memory.go:113 loading idx from offset 9690 for file: /tmp/TestMemIndexCompaction1339954886/001/1.cpx volume_vacuum_test.go:114: realRecordCount:29690, v.FileCount():29690 mm.DeletedCount():9797 --- PASS: TestMemIndexCompaction (0.27s) === RUN TestLDBIndexCompaction I0505 12:12:54.137736 volume_loading.go:225 loading leveldb index /tmp/TestLDBIndexCompaction2031815320/001/1.ldb I0505 12:12:54.260345 needle_map_leveldb.go:337 loading idx to leveldb from offset 0 for file: /tmp/TestLDBIndexCompaction2031815320/001/1.cpx volume_vacuum_test.go:96: compaction speed: 86210985.40 bytes/s I0505 12:12:54.478535 volume_vacuum.go:165 Committing volume 1 vacuuming... I0505 12:12:54.568283 needle_map_leveldb.go:337 loading idx to leveldb from offset 9694 for file: /tmp/TestLDBIndexCompaction2031815320/001/1.cpx I0505 12:12:54.628791 volume_loading.go:222 updating leveldb index /tmp/TestLDBIndexCompaction2031815320/001/1.ldb volume_vacuum_test.go:109: watermark from levelDB: 20000, realWatermark: 20000, nm.recordCount: 29694, realRecordCount:29694, fileCount=29694, deletedcount:9694 I0505 12:12:54.639296 volume_loading.go:225 loading leveldb index /tmp/TestLDBIndexCompaction2031815320/001/1.ldb --- PASS: TestLDBIndexCompaction (0.55s) === RUN TestCompactVolumeFilesOffline I0505 12:12:54.692491 needle_map_memory.go:113 loading idx from offset 0 for file: /tmp/TestCompactVolumeFilesOffline1369867484/001/1.cpx I0505 12:12:54.692527 volume_vacuum.go:165 Committing volume 1 vacuuming... --- PASS: TestCompactVolumeFilesOffline (0.00s) === RUN TestCleanupCompactRemovesTempFiles E0505 12:12:54.692916 needle_read.go:52 /tmp/TestCleanupCompactRemovesTempFiles544345481/001/1.dat read 0 dataSize 32 offset 34359745568 fileSize 7232: EOF I0505 12:12:54.693037 volume_loading.go:189 volumeDataIntegrityChecking failed verifyDeletedNeedleIntegrity /tmp/TestCleanupCompactRemovesTempFiles544345481/001/1.idx failed: read data [7200,7232) : EOF I0505 12:12:54.693043 needle_map_sorted_file.go:25 Start to Generate /tmp/TestCleanupCompactRemovesTempFiles544345481/001/1.sdx from /tmp/TestCleanupCompactRemovesTempFiles544345481/001/1.idx I0505 12:12:54.693734 needle_map_sorted_file.go:27 Finished Generating /tmp/TestCleanupCompactRemovesTempFiles544345481/001/1.sdx from /tmp/TestCleanupCompactRemovesTempFiles544345481/001/1.idx I0505 12:12:54.693825 volume_vacuum.go:235 Cleaning up volume 1 vacuuming... --- PASS: TestCleanupCompactRemovesTempFiles (0.00s) === RUN TestCompactByIndex_DropsDanglingNeedle E0505 12:12:54.696818 needle_read.go:52 /tmp/TestCompactByIndex_DropsDanglingNeedle1425515905/001/1.dat read 0 dataSize 2080 offset 1053256 fileSize 4680: EOF W0505 12:12:54.696834 volume_vacuum.go:549 vacuum volume 1: dropping unreadable needle key=108 offset=1053256 size=2048: EOF W0505 12:12:54.696840 volume_vacuum.go:575 vacuum volume 1: dropped 1 unreadable index entries (2048 data bytes) during compaction I0505 12:12:54.696878 needle_map_memory.go:113 loading idx from offset 0 for file: /tmp/TestCompactByIndex_DropsDanglingNeedle1425515905/001/1.cpx --- PASS: TestCompactByIndex_DropsDanglingNeedle (0.00s) === RUN TestSearchVolumesWithDeletedNeedles offset: 10256, isLast: false --- PASS: TestSearchVolumesWithDeletedNeedles (0.00s) === RUN TestDestroyEmptyVolumeWithOnlyEmpty --- PASS: TestDestroyEmptyVolumeWithOnlyEmpty (0.00s) === RUN TestDestroyEmptyVolumeWithoutOnlyEmpty --- PASS: TestDestroyEmptyVolumeWithoutOnlyEmpty (0.00s) === RUN TestDestroyNonemptyVolumeWithOnlyEmpty --- PASS: TestDestroyNonemptyVolumeWithOnlyEmpty (0.00s) === RUN TestDestroyNonemptyVolumeWithoutOnlyEmpty --- PASS: TestDestroyNonemptyVolumeWithoutOnlyEmpty (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/storage 2.061s ? github.com/seaweedfs/seaweedfs/weed/storage/backend [no test files] === RUN TestMemoryMapMaxSizeReadWrite --- PASS: TestMemoryMapMaxSizeReadWrite (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/storage/backend/memory_map 0.004s ? github.com/seaweedfs/seaweedfs/weed/storage/backend/rclone_backend [no test files] ? github.com/seaweedfs/seaweedfs/weed/storage/backend/s3_backend [no test files] === RUN TestEcConsistency_WritesBetweenEncodeAndEcx I0505 12:12:52.662323 ec_encoder.go:122 encodeDatFile /tmp/TestEcConsistency_WritesBetweenEncodeAndEcx1944060654/001/consistency.dat size:103000 with EC context 10+4 (total: 14) ec_consistency_test.go:91: Trying to read needle 2 at offset 103000 size 5032 from EC shards (shardSize=10300) ec_consistency_test.go:92: Intervals: [{BlockIndex:30 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:31 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:32 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:33 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:34 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:35 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:36 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:37 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:38 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:39 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:40 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:41 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:42 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:43 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:44 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:45 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:46 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:47 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:48 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:49 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:50 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:51 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:52 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:53 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:54 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:55 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:56 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:57 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:58 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:59 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:60 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:61 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:62 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:63 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:64 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:65 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:66 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:67 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:68 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:69 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:70 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:71 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:72 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:73 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:74 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:75 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:76 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:77 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:78 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:79 InnerBlockOffset:0 Size:100 IsLargeBlock:false LargeBlockRowsCount:1} {BlockIndex:80 InnerBlockOffset:0 Size:32 IsLargeBlock:false LargeBlockRowsCount:1}] ec_consistency_test.go:99: CONFIRMED: Read error for needle written after EC encoding: read past end of shard 0: offset 10300 + size 100 > fileSize 10300 ec_consistency_test.go:129: Original data reads correctly from EC shards --- PASS: TestEcConsistency_WritesBetweenEncodeAndEcx (0.00s) === RUN TestEcConsistency_ExactLargeRowEncoding I0505 12:12:52.666595 ec_encoder.go:122 encodeDatFile /tmp/TestEcConsistency_ExactLargeRowEncoding3195690204/001/exact.dat size:100000 with EC context 10+4 (total: 14) --- PASS: TestEcConsistency_ExactLargeRowEncoding (0.01s) === RUN TestEcReadRoundTrip === RUN TestEcReadRoundTrip/1_large_row_exact I0505 12:12:52.672017 ec_encoder.go:122 encodeDatFile /tmp/TestEcReadRoundTrip1_large_row_exact2499052661/001/rt_100000.dat size:100000 with EC context 10+4 (total: 14) ec_roundtrip_test.go:59: WARN: EC read mismatch at offset 50000 (fallback path, shardFileSize=10000) === RUN TestEcReadRoundTrip/2_large_rows_exact I0505 12:12:52.674215 ec_encoder.go:122 encodeDatFile /tmp/TestEcReadRoundTrip2_large_rows_exact45723813/001/rt_200000.dat size:200000 with EC context 10+4 (total: 14) === RUN TestEcReadRoundTrip/3_large_rows_exact I0505 12:12:52.678519 ec_encoder.go:122 encodeDatFile /tmp/TestEcReadRoundTrip3_large_rows_exact3711727679/001/rt_300000.dat size:300000 with EC context 10+4 (total: 14) === RUN TestEcReadRoundTrip/1_large_row_plus_1 I0505 12:12:52.685365 ec_encoder.go:122 encodeDatFile /tmp/TestEcReadRoundTrip1_large_row_plus_12461324110/001/rt_100001.dat size:100001 with EC context 10+4 (total: 14) === RUN TestEcReadRoundTrip/2_large_rows_plus_small I0505 12:12:52.688526 ec_encoder.go:122 encodeDatFile /tmp/TestEcReadRoundTrip2_large_rows_plus_small3365150988/001/rt_201000.dat size:201000 with EC context 10+4 (total: 14) === RUN TestEcReadRoundTrip/1_large_row_plus_half_small I0505 12:12:52.692722 ec_encoder.go:122 encodeDatFile /tmp/TestEcReadRoundTrip1_large_row_plus_half_small2099681473/001/rt_100500.dat size:100500 with EC context 10+4 (total: 14) === RUN TestEcReadRoundTrip/just_under_1_large_row I0505 12:12:52.694924 ec_encoder.go:122 encodeDatFile /tmp/TestEcReadRoundTripjust_under_1_large_row4051285997/001/rt_99999.dat size:99999 with EC context 10+4 (total: 14) === RUN TestEcReadRoundTrip/just_under_2_large_rows I0505 12:12:52.697573 ec_encoder.go:122 encodeDatFile /tmp/TestEcReadRoundTripjust_under_2_large_rows978390944/001/rt_199999.dat size:199999 with EC context 10+4 (total: 14) === RUN TestEcReadRoundTrip/small_only I0505 12:12:52.701198 ec_encoder.go:122 encodeDatFile /tmp/TestEcReadRoundTripsmall_only3049009438/001/rt_3000.dat size:3000 with EC context 10+4 (total: 14) === RUN TestEcReadRoundTrip/small_single_row I0505 12:12:52.701561 ec_encoder.go:122 encodeDatFile /tmp/TestEcReadRoundTripsmall_single_row1035990849/001/rt_1000.dat size:1000 with EC context 10+4 (total: 14) === RUN TestEcReadRoundTrip/boundary_spanning I0505 12:12:52.702024 ec_encoder.go:122 encodeDatFile /tmp/TestEcReadRoundTripboundary_spanning2703002879/001/rt_105050.dat size:105050 with EC context 10+4 (total: 14) --- PASS: TestEcReadRoundTrip (0.03s) --- PASS: TestEcReadRoundTrip/1_large_row_exact (0.00s) --- PASS: TestEcReadRoundTrip/2_large_rows_exact (0.00s) --- PASS: TestEcReadRoundTrip/3_large_rows_exact (0.01s) --- PASS: TestEcReadRoundTrip/1_large_row_plus_1 (0.00s) --- PASS: TestEcReadRoundTrip/2_large_rows_plus_small (0.00s) --- PASS: TestEcReadRoundTrip/1_large_row_plus_half_small (0.00s) --- PASS: TestEcReadRoundTrip/just_under_1_large_row (0.00s) --- PASS: TestEcReadRoundTrip/just_under_2_large_rows (0.00s) --- PASS: TestEcReadRoundTrip/small_only (0.00s) --- PASS: TestEcReadRoundTrip/small_single_row (0.00s) --- PASS: TestEcReadRoundTrip/boundary_spanning (0.00s) === RUN TestEcOffByOneBug_Issue8947 I0505 12:12:52.704638 ec_encoder.go:122 encodeDatFile /tmp/TestEcOffByOneBug_Issue89473860096048/001/bug_200000.dat size:200000 with EC context 10+4 (total: 14) ec_roundtrip_test.go:269: Buggy formula returned wrong data: expected first bytes 53e9e0ab669847f8, got d21a5eaa7b42d0f5 ec_roundtrip_test.go:279: Fixed: nLargeBlockRows=2, interval={BlockIndex:11 InnerBlockOffset:50 Size:50 IsLargeBlock:true LargeBlockRowsCount:2} ec_roundtrip_test.go:280: Buggy: nLargeBlockRows=1, interval={BlockIndex:100 InnerBlockOffset:50 Size:50 IsLargeBlock:false LargeBlockRowsCount:1} --- PASS: TestEcOffByOneBug_Issue8947 (0.00s) === RUN TestEcDecodeDatRoundTrip === RUN TestEcDecodeDatRoundTrip/size_1000 I0505 12:12:52.708663 ec_encoder.go:122 encodeDatFile /tmp/TestEcDecodeDatRoundTripsize_10004122963661/001/dec_1000.dat size:1000 with EC context 10+4 (total: 14) === RUN TestEcDecodeDatRoundTrip/size_10485760 I0505 12:12:52.741453 ec_encoder.go:122 encodeDatFile /tmp/TestEcDecodeDatRoundTripsize_10485760683557620/001/dec_10485760.dat size:10485760 with EC context 10+4 (total: 14) === RUN TestEcDecodeDatRoundTrip/size_10486260 I0505 12:12:52.781302 ec_encoder.go:122 encodeDatFile /tmp/TestEcDecodeDatRoundTripsize_104862602701587755/001/dec_10486260.dat size:10486260 with EC context 10+4 (total: 14) --- PASS: TestEcDecodeDatRoundTrip (0.10s) --- PASS: TestEcDecodeDatRoundTrip/size_1000 (0.01s) --- PASS: TestEcDecodeDatRoundTrip/size_10485760 (0.04s) --- PASS: TestEcDecodeDatRoundTrip/size_10486260 (0.05s) === RUN TestShardsInfo_SetAndGet --- PASS: TestShardsInfo_SetAndGet (0.00s) === RUN TestShardsInfo_SortedOrder --- PASS: TestShardsInfo_SortedOrder (0.00s) === RUN TestShardsInfo_Delete --- PASS: TestShardsInfo_Delete (0.00s) === RUN TestShardsInfo_Update --- PASS: TestShardsInfo_Update (0.00s) === RUN TestShardsInfo_TotalSize --- PASS: TestShardsInfo_TotalSize (0.00s) === RUN TestShardsInfo_Sizes --- PASS: TestShardsInfo_Sizes (0.00s) === RUN TestShardsInfo_Copy --- PASS: TestShardsInfo_Copy (0.00s) === RUN TestShardsInfo_AddSubtract --- PASS: TestShardsInfo_AddSubtract (0.00s) === RUN TestShardsInfo_PlusMinus --- PASS: TestShardsInfo_PlusMinus (0.00s) === RUN TestShardsInfo_DeleteParityShards --- PASS: TestShardsInfo_DeleteParityShards (0.00s) === RUN TestShardsInfo_FromVolumeEcShardInformationMessage === RUN TestShardsInfo_FromVolumeEcShardInformationMessage/nil_message === RUN TestShardsInfo_FromVolumeEcShardInformationMessage/single_shard === RUN TestShardsInfo_FromVolumeEcShardInformationMessage/multiple_shards === RUN TestShardsInfo_FromVolumeEcShardInformationMessage/missing_sizes --- PASS: TestShardsInfo_FromVolumeEcShardInformationMessage (0.00s) --- PASS: TestShardsInfo_FromVolumeEcShardInformationMessage/nil_message (0.00s) --- PASS: TestShardsInfo_FromVolumeEcShardInformationMessage/single_shard (0.00s) --- PASS: TestShardsInfo_FromVolumeEcShardInformationMessage/multiple_shards (0.00s) --- PASS: TestShardsInfo_FromVolumeEcShardInformationMessage/missing_sizes (0.00s) === RUN TestEcShardsTotalSize === RUN TestEcShardsTotalSize/nil_message === RUN TestEcShardsTotalSize/all_shards_present === RUN TestEcShardsTotalSize/only_parity_shards --- PASS: TestEcShardsTotalSize (0.00s) --- PASS: TestEcShardsTotalSize/nil_message (0.00s) --- PASS: TestEcShardsTotalSize/all_shards_present (0.00s) --- PASS: TestEcShardsTotalSize/only_parity_shards (0.00s) === RUN TestEcShardsDataSize === RUN TestEcShardsDataSize/nil_message === RUN TestEcShardsDataSize/data_shards_only === RUN TestEcShardsDataSize/mixed_data_and_parity_(default_10+4) === RUN TestEcShardsDataSize/only_parity_shards_(excluded) === RUN TestEcShardsDataSize/missing_sizes_tolerated === RUN TestEcShardsDataSize/custom_6+3_ratio:_shards_0..5_are_data,_6..8_are_parity === RUN TestEcShardsDataSize/custom_16+6_ratio:_shard_id_12_is_data,_not_parity === RUN TestEcShardsDataSize/negative_dataShards_falls_back_to_default --- PASS: TestEcShardsDataSize (0.00s) --- PASS: TestEcShardsDataSize/nil_message (0.00s) --- PASS: TestEcShardsDataSize/data_shards_only (0.00s) --- PASS: TestEcShardsDataSize/mixed_data_and_parity_(default_10+4) (0.00s) --- PASS: TestEcShardsDataSize/only_parity_shards_(excluded) (0.00s) --- PASS: TestEcShardsDataSize/missing_sizes_tolerated (0.00s) --- PASS: TestEcShardsDataSize/custom_6+3_ratio:_shards_0..5_are_data,_6..8_are_parity (0.00s) --- PASS: TestEcShardsDataSize/custom_16+6_ratio:_shard_id_12_is_data,_not_parity (0.00s) --- PASS: TestEcShardsDataSize/negative_dataShards_falls_back_to_default (0.00s) === RUN TestShardsInfo_String --- PASS: TestShardsInfo_String (0.00s) === RUN TestShardsInfo_ConcurrentAccess --- PASS: TestShardsInfo_ConcurrentAccess (0.00s) === RUN TestEncodingDecoding I0505 12:12:52.815957 ec_encoder.go:122 encodeDatFile 1.dat size:2590912 with EC context 10+4 (total: 14) --- PASS: TestEncodingDecoding (0.25s) === RUN TestLocateData [{BlockIndex:5 InnerBlockOffset:100 Size:9900 IsLargeBlock:true LargeBlockRowsCount:1} {BlockIndex:6 InnerBlockOffset:0 Size:10000 IsLargeBlock:true LargeBlockRowsCount:1} {BlockIndex:7 InnerBlockOffset:0 Size:10000 IsLargeBlock:true LargeBlockRowsCount:1} {BlockIndex:8 InnerBlockOffset:0 Size:10000 IsLargeBlock:true LargeBlockRowsCount:1} {BlockIndex:9 InnerBlockOffset:0 Size:10000 IsLargeBlock:true LargeBlockRowsCount:1} {BlockIndex:0 InnerBlockOffset:0 Size:1 IsLargeBlock:false LargeBlockRowsCount:1}] --- PASS: TestLocateData (0.00s) === RUN TestLocateData2 --- PASS: TestLocateData2 (0.00s) === RUN TestLocateData3 {BlockIndex:8876 InnerBlockOffset:912752 Size:112568 IsLargeBlock:false LargeBlockRowsCount:2} --- PASS: TestLocateData3 (0.00s) === RUN TestLocateData_ExactMultiple_Issue8947 --- PASS: TestLocateData_ExactMultiple_Issue8947 (0.00s) === RUN TestLocateData_Issue8179 --- PASS: TestLocateData_Issue8179 (0.00s) === RUN TestPositioning offset: 31300679656 size: 1167 offset: 11513014944 size: 66044 offset: 26311863528 size: 26823 interval: {BlockIndex:14852 InnerBlockOffset:994536 Size:26856 IsLargeBlock:false LargeBlockRowsCount:1}, shardId: 2, shardOffset: 2631871720 --- PASS: TestPositioning (0.00s) === RUN TestHasLiveNeedles_AllDeletedIsFalse --- PASS: TestHasLiveNeedles_AllDeletedIsFalse (0.00s) === RUN TestHasLiveNeedles_WithLiveEntryIsTrue --- PASS: TestHasLiveNeedles_WithLiveEntryIsTrue (0.00s) === RUN TestHasLiveNeedles_EmptyFileIsFalse --- PASS: TestHasLiveNeedles_EmptyFileIsFalse (0.00s) === RUN TestWriteIdxFileFromEcIndex_PreservesDeletedNeedles --- PASS: TestWriteIdxFileFromEcIndex_PreservesDeletedNeedles (0.00s) === RUN TestWriteIdxFileFromEcIndex_ProcessesEcjJournal --- PASS: TestWriteIdxFileFromEcIndex_ProcessesEcjJournal (0.00s) === RUN TestDecodeWithNonEmptyEcj_AllDeleted --- PASS: TestDecodeWithNonEmptyEcj_AllDeleted (0.00s) === RUN TestDecodeWithNonEmptyEcj_PartiallyDeleted --- PASS: TestDecodeWithNonEmptyEcj_PartiallyDeleted (0.00s) === RUN TestDecodeWithEmptyEcj --- PASS: TestDecodeWithEmptyEcj (0.00s) === RUN TestDecodeWithNoEcjFile --- PASS: TestDecodeWithNoEcjFile (0.00s) === RUN TestEcxFileDeletionVisibleAfterSync --- PASS: TestEcxFileDeletionVisibleAfterSync (0.00s) === RUN TestEcxFileDeletionWithSeparateHandles --- PASS: TestEcxFileDeletionWithSeparateHandles (0.00s) === RUN TestEcVolumeDeleteDurableToJournal W0505 12:12:53.064460 volume_info.go:48 empty volume info file /tmp/TestEcVolumeDeleteDurableToJournal3202153138/001/test_1.vif, treating as non-existent W0505 12:12:53.064610 ec_volume.go:151 vif file not found,volumeId:1, filename:/tmp/TestEcVolumeDeleteDurableToJournal3202153138/001/test_1.vif --- PASS: TestEcVolumeDeleteDurableToJournal (0.00s) === RUN TestEcVolumeFileAndDeleteCountInitial W0505 12:12:53.065128 volume_info.go:48 empty volume info file /tmp/TestEcVolumeFileAndDeleteCountInitial3077529527/001/test_1.vif, treating as non-existent W0505 12:12:53.065133 ec_volume.go:151 vif file not found,volumeId:1, filename:/tmp/TestEcVolumeFileAndDeleteCountInitial3077529527/001/test_1.vif --- PASS: TestEcVolumeFileAndDeleteCountInitial (0.00s) === RUN TestEcVolumeFileAndDeleteCountAfterDelete W0505 12:12:53.065346 volume_info.go:48 empty volume info file /tmp/TestEcVolumeFileAndDeleteCountAfterDelete1926603828/001/test_1.vif, treating as non-existent W0505 12:12:53.065352 ec_volume.go:151 vif file not found,volumeId:1, filename:/tmp/TestEcVolumeFileAndDeleteCountAfterDelete1926603828/001/test_1.vif --- PASS: TestEcVolumeFileAndDeleteCountAfterDelete (0.00s) === RUN TestShardsInfoDeleteParityShards --- PASS: TestShardsInfoDeleteParityShards (0.00s) === RUN TestShardsInfoAsSlice --- PASS: TestShardsInfoAsSlice (0.00s) === RUN TestShardsInfoSerialize === RUN TestShardsInfoSerialize/no_bits === RUN TestShardsInfoSerialize/single_shard,_first === RUN TestShardsInfoSerialize/single_shard,_5th === RUN TestShardsInfoSerialize/multiple_shards --- PASS: TestShardsInfoSerialize (0.00s) --- PASS: TestShardsInfoSerialize/no_bits (0.00s) --- PASS: TestShardsInfoSerialize/single_shard,_first (0.00s) --- PASS: TestShardsInfoSerialize/single_shard,_5th (0.00s) --- PASS: TestShardsInfoSerialize/multiple_shards (0.00s) === RUN TestShardsInfoFromVolumeEcShardInformationMessage === RUN TestShardsInfoFromVolumeEcShardInformationMessage/no_msg === RUN TestShardsInfoFromVolumeEcShardInformationMessage/no_shards === RUN TestShardsInfoFromVolumeEcShardInformationMessage/single_shard === RUN TestShardsInfoFromVolumeEcShardInformationMessage/multiple_shards === RUN TestShardsInfoFromVolumeEcShardInformationMessage/multiple_shards_with_missing_sizes --- PASS: TestShardsInfoFromVolumeEcShardInformationMessage (0.00s) --- PASS: TestShardsInfoFromVolumeEcShardInformationMessage/no_msg (0.00s) --- PASS: TestShardsInfoFromVolumeEcShardInformationMessage/no_shards (0.00s) --- PASS: TestShardsInfoFromVolumeEcShardInformationMessage/single_shard (0.00s) --- PASS: TestShardsInfoFromVolumeEcShardInformationMessage/multiple_shards (0.00s) --- PASS: TestShardsInfoFromVolumeEcShardInformationMessage/multiple_shards_with_missing_sizes (0.00s) === RUN TestShardsInfoCombine --- PASS: TestShardsInfoCombine (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/storage/erasure_coding 0.415s ? github.com/seaweedfs/seaweedfs/weed/storage/erasure_coding/distribution [no test files] ? github.com/seaweedfs/seaweedfs/weed/storage/erasure_coding/placement [no test files] === RUN TestCheckIndexFile === RUN TestCheckIndexFile/healthy_index === RUN TestCheckIndexFile/healthy_index_with_deleted_files === RUN TestCheckIndexFile/damaged_index_(bitrot) === RUN TestCheckIndexFile/damaged_index_(truncated) === RUN TestCheckIndexFile/healthy_EC_index_with_deleted_files === RUN TestCheckIndexFile/damaged_EC_index_(bitrot) --- PASS: TestCheckIndexFile (0.00s) --- PASS: TestCheckIndexFile/healthy_index (0.00s) --- PASS: TestCheckIndexFile/healthy_index_with_deleted_files (0.00s) --- PASS: TestCheckIndexFile/damaged_index_(bitrot) (0.00s) --- PASS: TestCheckIndexFile/damaged_index_(truncated) (0.00s) --- PASS: TestCheckIndexFile/healthy_EC_index_with_deleted_files (0.00s) --- PASS: TestCheckIndexFile/damaged_EC_index_(bitrot) (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/storage/idx 0.006s === RUN TestParseFileIdFromString --- PASS: TestParseFileIdFromString (0.00s) === RUN TestParseKeyHash --- PASS: TestParseKeyHash (0.00s) === RUN TestAppend --- PASS: TestAppend (0.00s) === RUN TestWriteNeedle_CompatibilityWithLegacy === RUN TestWriteNeedle_CompatibilityWithLegacy/Version1 === RUN TestWriteNeedle_CompatibilityWithLegacy/Version2 === RUN TestWriteNeedle_CompatibilityWithLegacy/Version3 --- PASS: TestWriteNeedle_CompatibilityWithLegacy (0.00s) --- PASS: TestWriteNeedle_CompatibilityWithLegacy/Version1 (0.00s) --- PASS: TestWriteNeedle_CompatibilityWithLegacy/Version2 (0.00s) --- PASS: TestWriteNeedle_CompatibilityWithLegacy/Version3 (0.00s) === RUN TestNewVolumeId volume_id_test.go:11: a is not legal volume id, strconv.ParseUint: parsing "a": invalid syntax --- PASS: TestNewVolumeId (0.00s) === RUN TestVolumeId_String --- PASS: TestVolumeId_String (0.00s) === RUN TestVolumeId_Next --- PASS: TestVolumeId_Next (0.00s) === RUN TestTTLReadWrite --- PASS: TestTTLReadWrite (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/storage/needle 0.010s === RUN TestMemoryUsage Each 13.10 Bytes Alloc = 21 MiB TotalAlloc = 46 MiB Sys = 42 MiB NumGC = 8 CompactMap = 1539351/1749659 elements on 2198 segments, 87.98% efficiency Taken = 1.157330282s Each 12.79 Bytes Alloc = 41 MiB TotalAlloc = 92 MiB Sys = 71 MiB NumGC = 10 CompactMap = 1539351/1749659 elements on 2198 segments, 87.98% efficiency Taken = 1.057098615s Each 12.69 Bytes Alloc = 61 MiB TotalAlloc = 137 MiB Sys = 95 MiB NumGC = 12 CompactMap = 1539351/1749659 elements on 2198 segments, 87.98% efficiency Taken = 1.070077924s Each 12.64 Bytes Alloc = 81 MiB TotalAlloc = 183 MiB Sys = 123 MiB NumGC = 13 CompactMap = 1539351/1749659 elements on 2198 segments, 87.98% efficiency Taken = 1.036826033s Each 12.61 Bytes Alloc = 101 MiB TotalAlloc = 229 MiB Sys = 143 MiB NumGC = 14 CompactMap = 1539351/1749659 elements on 2198 segments, 87.98% efficiency Taken = 1.28083236s Each 12.59 Bytes Alloc = 122 MiB TotalAlloc = 274 MiB Sys = 164 MiB NumGC = 15 CompactMap = 1539351/1749659 elements on 2198 segments, 87.98% efficiency Taken = 1.216600466s Each 12.57 Bytes Alloc = 142 MiB TotalAlloc = 320 MiB Sys = 184 MiB NumGC = 16 CompactMap = 1539351/1749659 elements on 2198 segments, 87.98% efficiency Taken = 1.485079819s Each 12.56 Bytes Alloc = 162 MiB TotalAlloc = 365 MiB Sys = 204 MiB NumGC = 17 CompactMap = 1539351/1749659 elements on 2198 segments, 87.98% efficiency Taken = 1.508836912s Each 12.56 Bytes Alloc = 182 MiB TotalAlloc = 411 MiB Sys = 224 MiB NumGC = 18 CompactMap = 1539351/1749659 elements on 2198 segments, 87.98% efficiency Taken = 1.450700313s Each 12.55 Bytes Alloc = 202 MiB TotalAlloc = 456 MiB Sys = 244 MiB NumGC = 19 CompactMap = 1539351/1749659 elements on 2198 segments, 87.98% efficiency Taken = 1.532486534s --- PASS: TestMemoryUsage (12.80s) === RUN TestSegmentBsearchKey === RUN TestSegmentBsearchKey/empty_segment === RUN TestSegmentBsearchKey/new_key,_insert_at_beggining === RUN TestSegmentBsearchKey/new_key,_insert_at_end === RUN TestSegmentBsearchKey/new_key,_insert_second === RUN TestSegmentBsearchKey/new_key,_insert_in_middle === RUN TestSegmentBsearchKey/key_#1 === RUN TestSegmentBsearchKey/key_#2 === RUN TestSegmentBsearchKey/key_#3 === RUN TestSegmentBsearchKey/key_#4 === RUN TestSegmentBsearchKey/key_#5 --- PASS: TestSegmentBsearchKey (0.00s) --- PASS: TestSegmentBsearchKey/empty_segment (0.00s) --- PASS: TestSegmentBsearchKey/new_key,_insert_at_beggining (0.00s) --- PASS: TestSegmentBsearchKey/new_key,_insert_at_end (0.00s) --- PASS: TestSegmentBsearchKey/new_key,_insert_second (0.00s) --- PASS: TestSegmentBsearchKey/new_key,_insert_in_middle (0.00s) --- PASS: TestSegmentBsearchKey/key_#1 (0.00s) --- PASS: TestSegmentBsearchKey/key_#2 (0.00s) --- PASS: TestSegmentBsearchKey/key_#3 (0.00s) --- PASS: TestSegmentBsearchKey/key_#4 (0.00s) --- PASS: TestSegmentBsearchKey/key_#5 (0.00s) === RUN TestSegmentSet --- PASS: TestSegmentSet (0.00s) === RUN TestSegmentSetOrdering --- PASS: TestSegmentSetOrdering (0.09s) === RUN TestSegmentGet === RUN TestSegmentGet/invalid_key === RUN TestSegmentGet/key_#1 === RUN TestSegmentGet/key_#2 === RUN TestSegmentGet/key_#3 --- PASS: TestSegmentGet (0.00s) --- PASS: TestSegmentGet/invalid_key (0.00s) --- PASS: TestSegmentGet/key_#1 (0.00s) --- PASS: TestSegmentGet/key_#2 (0.00s) --- PASS: TestSegmentGet/key_#3 (0.00s) === RUN TestSegmentDelete --- PASS: TestSegmentDelete (0.00s) === RUN TestSegmentForKey === RUN TestSegmentForKey/first_segment === RUN TestSegmentForKey/second_segment,_gapless === RUN TestSegmentForKey/gapped_segment --- PASS: TestSegmentForKey (0.00s) --- PASS: TestSegmentForKey/first_segment (0.00s) --- PASS: TestSegmentForKey/second_segment,_gapless (0.00s) --- PASS: TestSegmentForKey/gapped_segment (0.00s) === RUN TestAscendingVisit --- PASS: TestAscendingVisit (0.00s) === RUN TestRandomInsert --- PASS: TestRandomInsert (0.84s) PASS ok github.com/seaweedfs/seaweedfs/weed/storage/needle_map 13.738s === RUN TestMemoryUsage Each 15.30 Bytes Alloc = 24 MiB TotalAlloc = 114 MiB Sys = 50 MiB NumGC = 16 Taken = 1.191914681s Each 14.99 Bytes Alloc = 48 MiB TotalAlloc = 228 MiB Sys = 86 MiB NumGC = 20 Taken = 1.052452615s Each 14.88 Bytes Alloc = 72 MiB TotalAlloc = 341 MiB Sys = 130 MiB NumGC = 23 Taken = 1.071219946s Each 14.83 Bytes Alloc = 95 MiB TotalAlloc = 455 MiB Sys = 163 MiB NumGC = 25 Taken = 1.052258191s Each 14.80 Bytes Alloc = 119 MiB TotalAlloc = 568 MiB Sys = 203 MiB NumGC = 27 Taken = 1.281505983s Each 14.78 Bytes Alloc = 143 MiB TotalAlloc = 682 MiB Sys = 251 MiB NumGC = 28 Taken = 1.173052934s Each 14.77 Bytes Alloc = 167 MiB TotalAlloc = 795 MiB Sys = 275 MiB NumGC = 29 Taken = 1.418016507s Each 14.76 Bytes Alloc = 190 MiB TotalAlloc = 908 MiB Sys = 299 MiB NumGC = 30 Taken = 1.524150898s Each 14.75 Bytes Alloc = 214 MiB TotalAlloc = 1022 MiB Sys = 327 MiB NumGC = 31 Taken = 1.418691422s Each 14.74 Bytes Alloc = 238 MiB TotalAlloc = 1135 MiB Sys = 351 MiB NumGC = 32 Taken = 1.561914678s --- PASS: TestMemoryUsage (12.75s) === RUN TestSnowflakeSequencer I0505 12:13:05.423688 snowflake_sequencer.go:24 use snowflake seq id generator, nodeid:for_test hex_of_nodeid: 1 --- PASS: TestSnowflakeSequencer (0.05s) === RUN TestOverflow2 needle key: 150073 needle key: 150076 needle key: 150088 needle key: 150089 needle key: 150124 needle key: 150137 needle key: 150145 needle key: 150147 needle key: 150158 needle key: 150162 --- PASS: TestOverflow2 (0.00s) === RUN TestIssue52 key 10002 ok true 10002, 1250, 10002 key 10002 ok true 10002, 1250, 10002 --- PASS: TestIssue52 (0.00s) === RUN TestCompactMap --- PASS: TestCompactMap (0.07s) === RUN TestOverflow overflow[ 0 ]: 1 overflow[ 1 ]: 2 overflow[ 2 ]: 3 overflow[ 3 ]: 4 overflow[ 4 ]: 5 overflow[ 0 ]: 1 size -12 overflow[ 1 ]: 2 size 12 overflow[ 2 ]: 3 size 24 overflow[ 3 ]: 4 size -12 overflow[ 4 ]: 5 size 12 overflow[ 0 ]: 1 overflow[ 1 ]: 2 overflow[ 2 ]: 3 overflow[ 3 ]: 4 overflow[ 4 ]: 5 overflow[ 0 ]: 1 overflow[ 1 ]: 2 overflow[ 2 ]: 3 overflow[ 3 ]: 4 overflow[ 4 ]: 5 --- PASS: TestOverflow (0.00s) === RUN TestCompactSection_Get compact_map_test.go:204: 1574318345753513987 compact_map_test.go:215: 1574318350048481283 --- PASS: TestCompactSection_Get (1.67s) === RUN TestCompactSection_PutOutOfOrderItemBeyondLookBackWindow --- PASS: TestCompactSection_PutOutOfOrderItemBeyondLookBackWindow (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/storage/needle_map/old 14.542s === RUN TestReplicaPlacementSerialDeserial --- PASS: TestReplicaPlacementSerialDeserial (0.00s) === RUN TestReplicaPlacementHasReplication === RUN TestReplicaPlacementHasReplication/empty_replica_placement === RUN TestReplicaPlacementHasReplication/no_replication === RUN TestReplicaPlacementHasReplication/same_rack_replication === RUN TestReplicaPlacementHasReplication/diff_rack_replication === RUN TestReplicaPlacementHasReplication/DC_replication === RUN TestReplicaPlacementHasReplication/full_replication --- PASS: TestReplicaPlacementHasReplication (0.00s) --- PASS: TestReplicaPlacementHasReplication/empty_replica_placement (0.00s) --- PASS: TestReplicaPlacementHasReplication/no_replication (0.00s) --- PASS: TestReplicaPlacementHasReplication/same_rack_replication (0.00s) --- PASS: TestReplicaPlacementHasReplication/diff_rack_replication (0.00s) --- PASS: TestReplicaPlacementHasReplication/DC_replication (0.00s) --- PASS: TestReplicaPlacementHasReplication/full_replication (0.00s) === RUN TestSuperBlockReadWrite --- PASS: TestSuperBlockReadWrite (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/storage/super_block 0.006s ? github.com/seaweedfs/seaweedfs/weed/storage/types [no test files] ? github.com/seaweedfs/seaweedfs/weed/storage/volume_info [no test files] ? github.com/seaweedfs/seaweedfs/weed/telemetry [no test files] === RUN TestEcShardsAcrossMultipleDisksOnSameNode I0505 12:12:52.697394 node.go:427 weedfs adds child dc1 I0505 12:12:52.697568 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:52.697575 node.go:427 weedfs:dc1:rack1 adds child 127.0.0.1:34534 I0505 12:12:52.697580 node.go:427 weedfs:dc1:rack1:127.0.0.1:34534 adds child --- PASS: TestEcShardsAcrossMultipleDisksOnSameNode (0.00s) === RUN TestEcShardsAfterRestartHeartbeat I0505 12:12:52.697626 node.go:427 weedfs adds child dc1 I0505 12:12:52.697632 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:52.697635 node.go:427 weedfs:dc1:rack1 adds child 127.0.0.1:34534 I0505 12:12:52.697639 node.go:427 weedfs:dc1:rack1:127.0.0.1:34534 adds child --- PASS: TestEcShardsAfterRestartHeartbeat (0.00s) === RUN TestRaceConditionStress I0505 12:12:52.697657 node.go:427 weedfs adds child dc1 I0505 12:12:52.697660 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:52.697663 node.go:427 weedfs:dc1:rack1 adds child server1 I0505 12:12:52.697666 node.go:427 weedfs:dc1:rack1:server1 adds child I0505 12:12:52.697669 node.go:427 weedfs:dc1:rack1 adds child server2 I0505 12:12:52.697673 node.go:427 weedfs:dc1:rack1:server2 adds child I0505 12:12:52.697675 node.go:427 weedfs:dc1:rack1 adds child server3 I0505 12:12:52.697678 node.go:427 weedfs:dc1:rack1:server3 adds child race_condition_stress_test.go:108: Test completed in 51.192352ms race_condition_stress_test.go:109: Successful allocations: 50 race_condition_stress_test.go:110: Failed allocations: 0 race_condition_stress_test.go:111: Total volumes created: 50 race_condition_stress_test.go:120: Server 1: 17 volumes (max: 40) race_condition_stress_test.go:120: Server 2: 14 volumes (max: 40) race_condition_stress_test.go:120: Server 3: 19 volumes (max: 40) race_condition_stress_test.go:148: Race condition test passed: Capacity limits respected with 50 concurrent requests --- PASS: TestRaceConditionStress (0.05s) === RUN TestCapacityJudgmentAccuracy I0505 12:12:52.749021 node.go:427 weedfs adds child dc1 I0505 12:12:52.749033 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:52.749037 node.go:427 weedfs:dc1:rack1 adds child server1 I0505 12:12:52.749043 node.go:427 weedfs:dc1:rack1:server1 adds child race_condition_stress_test.go:226: Step 0: Volume count after update: 1 race_condition_stress_test.go:226: Step 1: Volume count after update: 2 race_condition_stress_test.go:226: Step 2: Volume count after update: 3 race_condition_stress_test.go:226: Step 3: Volume count after update: 4 race_condition_stress_test.go:226: Step 4: Volume count after update: 5 race_condition_stress_test.go:226: Step 5: Volume count after update: 6 race_condition_stress_test.go:226: Step 6: Volume count after update: 7 race_condition_stress_test.go:226: Step 7: Volume count after update: 8 race_condition_stress_test.go:226: Step 8: Volume count after update: 9 race_condition_stress_test.go:226: Step 9: Volume count after update: 10 I0505 12:12:52.749143 node.go:188 weedfs failed to pick 1 from 0 node candidates race_condition_stress_test.go:252: Capacity judgment accuracy test passed --- PASS: TestCapacityJudgmentAccuracy (0.00s) === RUN TestReservationSystemPerformance I0505 12:12:52.749172 node.go:427 weedfs adds child dc1 I0505 12:12:52.749176 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:52.749179 node.go:427 weedfs:dc1:rack1 adds child server1 I0505 12:12:52.749183 node.go:427 weedfs:dc1:rack1:server1 adds child race_condition_stress_test.go:299: Performance: 1000 reservations in 4.000449ms (avg: 4µs per reservation) race_condition_stress_test.go:306: Performance test passed: 4µs per reservation --- PASS: TestReservationSystemPerformance (0.00s) === RUN TestDisk_GetEcShards_Race --- PASS: TestDisk_GetEcShards_Race (0.27s) === RUN TestRemoveDataCenter data: map[dc1:map[rack1:map[server111:map[limit:3 volumes:[map[id:1 size:12312] map[id:2 size:12312] map[id:3 size:12312]]] server112:map[limit:10 volumes:[map[id:4 size:12312] map[id:5 size:12312] map[id:6 size:12312]]]] rack2:map[server121:map[limit:4 volumes:[map[id:4 size:12312] map[id:5 size:12312] map[id:6 size:12312]]] server122:map[limit:4 volumes:[]] server123:map[limit:5 volumes:[map[id:2 size:12312] map[id:3 size:12312] map[id:4 size:12312]]]]] dc2:map[] dc3:map[rack2:map[server321:map[limit:4 volumes:[map[id:1 size:12312] map[id:3 size:12312] map[id:5 size:12312]]]]]] I0505 12:12:53.027090 node.go:427 weedfs adds child dc1 I0505 12:12:53.027102 node.go:427 weedfs:dc1 adds child rack2 I0505 12:12:53.027107 node.go:427 weedfs:dc1:rack2 adds child server122 I0505 12:12:53.027112 node.go:427 weedfs:dc1:rack2:server122 adds child I0505 12:12:53.027119 node.go:427 weedfs:dc1:rack2 adds child server123 I0505 12:12:53.027122 node.go:427 weedfs:dc1:rack2:server123 adds child I0505 12:12:53.027129 node.go:427 weedfs:dc1:rack2 adds child server121 I0505 12:12:53.027134 node.go:427 weedfs:dc1:rack2:server121 adds child I0505 12:12:53.027139 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:53.027144 node.go:427 weedfs:dc1:rack1 adds child server112 I0505 12:12:53.027148 node.go:427 weedfs:dc1:rack1:server112 adds child I0505 12:12:53.027153 node.go:427 weedfs:dc1:rack1 adds child server111 I0505 12:12:53.027159 node.go:427 weedfs:dc1:rack1:server111 adds child I0505 12:12:53.027164 node.go:427 weedfs adds child dc2 I0505 12:12:53.027170 node.go:427 weedfs adds child dc3 I0505 12:12:53.027172 node.go:427 weedfs:dc3 adds child rack2 I0505 12:12:53.027176 node.go:427 weedfs:dc3:rack2 adds child server321 I0505 12:12:53.027182 node.go:427 weedfs:dc3:rack2:server321 adds child I0505 12:12:53.027188 node.go:441 weedfs removes dc2 I0505 12:12:53.027192 node.go:441 weedfs removes dc3 --- PASS: TestRemoveDataCenter (0.00s) === RUN TestHandlingVolumeServerHeartbeat I0505 12:12:53.027218 node.go:427 weedfs adds child dc1 I0505 12:12:53.027223 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:53.027228 node.go:427 weedfs:dc1:rack1 adds child 127.0.0.1:34534 I0505 12:12:53.027233 node.go:427 weedfs:dc1:rack1:127.0.0.1:34534 adds child I0505 12:12:53.027238 node.go:427 weedfs:dc1:rack1:127.0.0.1:34534 adds child ssd I0505 12:12:53.027318 data_node.go:86 Deleting volume id: 7 I0505 12:12:53.027329 data_node.go:86 Deleting volume id: 12 I0505 12:12:53.027332 data_node.go:86 Deleting volume id: 13 I0505 12:12:53.027334 data_node.go:86 Deleting volume id: 14 I0505 12:12:53.027336 data_node.go:86 Deleting volume id: 8 I0505 12:12:53.027339 data_node.go:86 Deleting volume id: 9 I0505 12:12:53.027341 data_node.go:86 Deleting volume id: 10 I0505 12:12:53.027343 data_node.go:86 Deleting volume id: 11 I0505 12:12:53.027348 topology.go:429 removing volume info: Id:7, Size:25432, ReplicaPlacement:000, Collection:, Version:3, Ttl:, FileCount:2343, DeleteCount:345, DeletedByteCount:34524, ReadOnly:false, ModifiedAtSecond:0 from 127.0.0.1:34534 I0505 12:12:53.027378 volume_layout.go:332 volume 7 does not have enough copies I0505 12:12:53.027382 volume_layout.go:340 volume 7 remove from writable I0505 12:12:53.027385 volume_layout.go:703 Volume 7 becomes unwritable I0505 12:12:53.027388 topology.go:429 removing volume info: Id:12, Size:25432, ReplicaPlacement:000, Collection:, Version:3, Ttl:, FileCount:2343, DeleteCount:345, DeletedByteCount:34524, ReadOnly:false, ModifiedAtSecond:0 from 127.0.0.1:34534 I0505 12:12:53.027394 volume_layout.go:332 volume 12 does not have enough copies I0505 12:12:53.027396 volume_layout.go:340 volume 12 remove from writable I0505 12:12:53.027398 volume_layout.go:703 Volume 12 becomes unwritable I0505 12:12:53.027401 topology.go:429 removing volume info: Id:13, Size:25432, ReplicaPlacement:000, Collection:, Version:3, Ttl:, FileCount:2343, DeleteCount:345, DeletedByteCount:34524, ReadOnly:false, ModifiedAtSecond:0 from 127.0.0.1:34534 I0505 12:12:53.027404 volume_layout.go:332 volume 13 does not have enough copies I0505 12:12:53.027407 volume_layout.go:340 volume 13 remove from writable I0505 12:12:53.027409 volume_layout.go:703 Volume 13 becomes unwritable I0505 12:12:53.027411 topology.go:429 removing volume info: Id:14, Size:25432, ReplicaPlacement:000, Collection:, Version:3, Ttl:, FileCount:2343, DeleteCount:345, DeletedByteCount:34524, ReadOnly:false, ModifiedAtSecond:0 from 127.0.0.1:34534 I0505 12:12:53.027415 volume_layout.go:332 volume 14 does not have enough copies I0505 12:12:53.027418 volume_layout.go:340 volume 14 remove from writable I0505 12:12:53.027420 volume_layout.go:703 Volume 14 becomes unwritable I0505 12:12:53.027422 topology.go:429 removing volume info: Id:8, Size:25432, ReplicaPlacement:000, Collection:, Version:3, Ttl:, FileCount:2343, DeleteCount:345, DeletedByteCount:34524, ReadOnly:false, ModifiedAtSecond:0 from 127.0.0.1:34534 I0505 12:12:53.027426 volume_layout.go:332 volume 8 does not have enough copies I0505 12:12:53.027428 volume_layout.go:340 volume 8 remove from writable I0505 12:12:53.027430 volume_layout.go:703 Volume 8 becomes unwritable I0505 12:12:53.027433 topology.go:429 removing volume info: Id:9, Size:25432, ReplicaPlacement:000, Collection:, Version:3, Ttl:, FileCount:2343, DeleteCount:345, DeletedByteCount:34524, ReadOnly:false, ModifiedAtSecond:0 from 127.0.0.1:34534 I0505 12:12:53.027436 volume_layout.go:332 volume 9 does not have enough copies I0505 12:12:53.027439 volume_layout.go:340 volume 9 remove from writable I0505 12:12:53.027441 volume_layout.go:703 Volume 9 becomes unwritable I0505 12:12:53.027443 topology.go:429 removing volume info: Id:10, Size:25432, ReplicaPlacement:000, Collection:, Version:3, Ttl:, FileCount:2343, DeleteCount:345, DeletedByteCount:34524, ReadOnly:false, ModifiedAtSecond:0 from 127.0.0.1:34534 I0505 12:12:53.027447 volume_layout.go:332 volume 10 does not have enough copies I0505 12:12:53.027450 volume_layout.go:340 volume 10 remove from writable I0505 12:12:53.027452 volume_layout.go:703 Volume 10 becomes unwritable I0505 12:12:53.027455 topology.go:429 removing volume info: Id:11, Size:25432, ReplicaPlacement:000, Collection:, Version:3, Ttl:, FileCount:2343, DeleteCount:345, DeletedByteCount:34524, ReadOnly:false, ModifiedAtSecond:0 from 127.0.0.1:34534 I0505 12:12:53.027458 volume_layout.go:332 volume 11 does not have enough copies I0505 12:12:53.027461 volume_layout.go:340 volume 11 remove from writable I0505 12:12:53.027464 volume_layout.go:703 Volume 11 becomes unwritable I0505 12:12:53.027472 topology.go:429 removing volume info: Id:3, Size:0, ReplicaPlacement:000, Collection:, Version:3, Ttl:, FileCount:0, DeleteCount:0, DeletedByteCount:0, ReadOnly:false, ModifiedAtSecond:0 from 127.0.0.1:34534 I0505 12:12:53.027477 volume_layout.go:332 volume 3 does not have enough copies I0505 12:12:53.027479 volume_layout.go:340 volume 3 remove from writable I0505 12:12:53.027481 volume_layout.go:703 Volume 3 becomes unwritable after add volume id 1 after add volume id 2 after add volume id 3 after add volume id 4 after add volume id 5 after add volume id 6 after add writable volume id 1 after add writable volume id 2 after add writable volume id 4 after add writable volume id 5 after add writable volume id 6 after add writable volume id 3 I0505 12:12:53.027514 topology_event_handling.go:94 Removing Volume 6 from the dead volume server 127.0.0.1:34534 I0505 12:12:53.027519 volume_layout.go:754 Volume 6 has 0 replica, less than required 1 I0505 12:12:53.027524 volume_layout.go:703 Volume 6 becomes unwritable I0505 12:12:53.027526 topology_event_handling.go:94 Removing Volume 1 from the dead volume server 127.0.0.1:34534 I0505 12:12:53.027529 volume_layout.go:754 Volume 1 has 0 replica, less than required 1 I0505 12:12:53.027531 volume_layout.go:703 Volume 1 becomes unwritable I0505 12:12:53.027533 topology_event_handling.go:94 Removing Volume 2 from the dead volume server 127.0.0.1:34534 I0505 12:12:53.027536 volume_layout.go:754 Volume 2 has 0 replica, less than required 1 I0505 12:12:53.027538 volume_layout.go:703 Volume 2 becomes unwritable I0505 12:12:53.027540 topology_event_handling.go:94 Removing Volume 3 from the dead volume server 127.0.0.1:34534 I0505 12:12:53.027543 volume_layout.go:754 Volume 3 has 0 replica, less than required 1 I0505 12:12:53.027545 volume_layout.go:703 Volume 3 becomes unwritable I0505 12:12:53.027548 topology_event_handling.go:94 Removing Volume 4 from the dead volume server 127.0.0.1:34534 I0505 12:12:53.027550 volume_layout.go:754 Volume 4 has 0 replica, less than required 1 I0505 12:12:53.027552 volume_layout.go:703 Volume 4 becomes unwritable I0505 12:12:53.027554 topology_event_handling.go:94 Removing Volume 5 from the dead volume server 127.0.0.1:34534 I0505 12:12:53.027557 volume_layout.go:754 Volume 5 has 0 replica, less than required 1 I0505 12:12:53.027559 volume_layout.go:703 Volume 5 becomes unwritable I0505 12:12:53.027567 node.go:441 weedfs:dc1:rack1 removes 127.0.0.1:34534 --- PASS: TestHandlingVolumeServerHeartbeat (0.00s) === RUN TestDataNodeToDataNodeInfo_IncludeEmptyDiskFromUsage --- PASS: TestDataNodeToDataNodeInfo_IncludeEmptyDiskFromUsage (0.00s) === RUN TestAddRemoveVolume I0505 12:12:53.027612 node.go:427 weedfs adds child dc1 I0505 12:12:53.027615 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:53.027619 node.go:427 weedfs:dc1:rack1 adds child 127.0.0.1:34534 I0505 12:12:53.027623 node.go:427 weedfs:dc1:rack1:127.0.0.1:34534 adds child I0505 12:12:53.027628 node.go:427 weedfs:dc1:rack1:127.0.0.1:34534 adds child ssd I0505 12:12:53.027651 topology.go:429 removing volume info: Id:1, Size:100, ReplicaPlacement:000, Collection:xcollection, Version:3, Ttl:, FileCount:123, DeleteCount:23, DeletedByteCount:45, ReadOnly:false, ModifiedAtSecond:0 from 127.0.0.1:34534 I0505 12:12:53.027656 volume_layout.go:332 volume 1 does not have enough copies I0505 12:12:53.027659 volume_layout.go:340 volume 1 remove from writable I0505 12:12:53.027661 volume_layout.go:703 Volume 1 becomes unwritable --- PASS: TestAddRemoveVolume (0.00s) === RUN TestVolumeReadOnlyStatusChange I0505 12:12:53.027682 node.go:427 weedfs adds child dc1 I0505 12:12:53.027685 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:53.027689 node.go:427 weedfs:dc1:rack1 adds child 127.0.0.1:34534 I0505 12:12:53.027693 node.go:427 weedfs:dc1:rack1:127.0.0.1:34534 adds child --- PASS: TestVolumeReadOnlyStatusChange (0.00s) === RUN TestVolumeReadOnlyAndRemoteStatusChange I0505 12:12:53.027726 node.go:427 weedfs adds child dc1 I0505 12:12:53.027733 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:53.027737 node.go:427 weedfs:dc1:rack1 adds child 127.0.0.1:34534 I0505 12:12:53.027742 node.go:427 weedfs:dc1:rack1:127.0.0.1:34534 adds child --- PASS: TestVolumeReadOnlyAndRemoteStatusChange (0.00s) === RUN TestListCollections I0505 12:12:53.027772 node.go:427 weedfs adds child dc1 I0505 12:12:53.027777 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:53.027780 node.go:427 weedfs:dc1:rack1 adds child 127.0.0.1:34534 I0505 12:12:53.027785 volume_layout.go:332 volume 1111 does not have enough copies I0505 12:12:53.027790 volume_layout.go:340 volume 1111 remove from writable I0505 12:12:53.027794 volume_layout.go:332 volume 2222 does not have enough copies I0505 12:12:53.027797 volume_layout.go:340 volume 2222 remove from writable I0505 12:12:53.027801 volume_layout.go:332 volume 3333 does not have enough copies I0505 12:12:53.027806 volume_layout.go:340 volume 3333 remove from writable === RUN TestListCollections/no_volume_types_selected === RUN TestListCollections/normal_volumes === RUN TestListCollections/EC_volumes === RUN TestListCollections/normal_+_EC_volumes --- PASS: TestListCollections (0.00s) --- PASS: TestListCollections/no_volume_types_selected (0.00s) --- PASS: TestListCollections/normal_volumes (0.00s) --- PASS: TestListCollections/EC_volumes (0.00s) --- PASS: TestListCollections/normal_+_EC_volumes (0.00s) === RUN TestDataNodeIdBasedIdentification I0505 12:12:53.027888 node.go:427 weedfs adds child dc1 I0505 12:12:53.027892 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:53.027896 node.go:427 weedfs:dc1:rack1 adds child node-1 I0505 12:12:53.027900 node.go:427 weedfs:dc1:rack1:node-1 adds child I0505 12:12:53.027904 rack.go:64 DataNode node-1 address changed from 10.0.0.1:8080 to 10.0.0.2:8080 I0505 12:12:53.027907 node.go:427 weedfs:dc1:rack1 adds child node-2 I0505 12:12:53.027911 node.go:427 weedfs:dc1:rack1:node-2 adds child I0505 12:12:53.027918 node.go:427 weedfs:dc1:rack1 adds child 10.0.0.4:8080 I0505 12:12:53.027921 node.go:427 weedfs:dc1:rack1:10.0.0.4:8080 adds child I0505 12:12:53.027925 rack.go:90 Volume server 10.0.0.4:8080 transitioning id from 10.0.0.4:8080 to node-4-explicit I0505 12:12:53.027929 node.go:427 weedfs:dc1:rack1 adds child node-99 I0505 12:12:53.027933 node.go:427 weedfs:dc1:rack1:node-99 adds child --- PASS: TestDataNodeIdBasedIdentification (0.00s) === RUN TestVolumeGrowth_ReservationBasedAllocation I0505 12:12:53.027950 node.go:427 weedfs adds child dc1 I0505 12:12:53.027953 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:53.027956 node.go:427 weedfs:dc1:rack1 adds child server1 I0505 12:12:53.027959 node.go:427 weedfs:dc1:rack1:server1 adds child I0505 12:12:53.027991 node.go:188 weedfs failed to pick 1 from 0 node candidates --- PASS: TestVolumeGrowth_ReservationBasedAllocation (0.00s) === RUN TestVolumeGrowth_ConcurrentAllocationPreventsRaceCondition I0505 12:12:53.028006 node.go:427 weedfs adds child dc1 I0505 12:12:53.028009 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:53.028013 node.go:427 weedfs:dc1:rack1 adds child server1 I0505 12:12:53.028017 node.go:427 weedfs:dc1:rack1:server1 adds child volume_growth_reservation_test.go:148: Request 9 succeeded, got reservation volume_growth_reservation_test.go:148: Request 0 succeeded, got reservation volume_growth_reservation_test.go:148: Request 8 succeeded, got reservation volume_growth_reservation_test.go:148: Request 5 succeeded, got reservation volume_growth_reservation_test.go:148: Request 2 succeeded, got reservation volume_growth_reservation_test.go:145: Request 7 failed as expected: No matching data node found! server1:Cannot reserve capacity on node server1 volume_growth_reservation_test.go:145: Request 3 failed as expected: No matching data node found! server1:Cannot reserve capacity on node server1 volume_growth_reservation_test.go:145: Request 4 failed as expected: No matching data node found! server1:Cannot reserve capacity on node server1 volume_growth_reservation_test.go:145: Request 6 failed as expected: No matching data node found! server1:Cannot reserve capacity on node server1 volume_growth_reservation_test.go:145: Request 1 failed as expected: No matching data node found! server1:Cannot reserve capacity on node server1 volume_growth_reservation_test.go:204: Concurrent test completed: 5 successes, 5 failures --- PASS: TestVolumeGrowth_ConcurrentAllocationPreventsRaceCondition (0.00s) === RUN TestVolumeGrowth_ReservationFailureRollback I0505 12:12:53.028213 node.go:427 weedfs adds child dc1 I0505 12:12:53.028216 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:53.028219 node.go:427 weedfs:dc1:rack1 adds child server1 I0505 12:12:53.028220 node.go:427 weedfs:dc1:rack1 adds child server2 I0505 12:12:53.028223 node.go:427 weedfs:dc1:rack1:server1 adds child I0505 12:12:53.028226 node.go:427 weedfs:dc1:rack1:server2 adds child --- PASS: TestVolumeGrowth_ReservationFailureRollback (0.00s) === RUN TestVolumeGrowth_ReservationTimeout --- PASS: TestVolumeGrowth_ReservationTimeout (0.00s) === RUN TestFindEmptySlotsForOneVolume data: map[dc1:map[rack1:map[server111:map[limit:3 volumes:[map[id:1 size:12312] map[id:2 size:12312] map[id:3 size:12312]]] server112:map[limit:10 volumes:[map[id:4 size:12312] map[id:5 size:12312] map[id:6 size:12312]]]] rack2:map[server121:map[limit:4 volumes:[map[id:4 size:12312] map[id:5 size:12312] map[id:6 size:12312]]] server122:map[limit:4 volumes:[]] server123:map[limit:5 volumes:[map[id:2 size:12312] map[id:3 size:12312] map[id:4 size:12312]]]]] dc2:map[] dc3:map[rack2:map[server321:map[limit:4 volumes:[map[id:1 size:12312] map[id:3 size:12312] map[id:5 size:12312]]]]]] I0505 12:12:53.028290 node.go:427 weedfs adds child dc3 I0505 12:12:53.028293 node.go:427 weedfs:dc3 adds child rack2 I0505 12:12:53.028295 node.go:427 weedfs:dc3:rack2 adds child server321 I0505 12:12:53.028297 node.go:427 weedfs:dc3:rack2:server321 adds child I0505 12:12:53.028301 node.go:427 weedfs adds child dc1 I0505 12:12:53.028303 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:53.028305 node.go:427 weedfs:dc1:rack1 adds child server111 I0505 12:12:53.028306 node.go:427 weedfs:dc1:rack1:server111 adds child I0505 12:12:53.028309 node.go:427 weedfs:dc1:rack1 adds child server112 I0505 12:12:53.028311 node.go:427 weedfs:dc1:rack1:server112 adds child I0505 12:12:53.028314 node.go:427 weedfs:dc1 adds child rack2 I0505 12:12:53.028316 node.go:427 weedfs:dc1:rack2 adds child server121 I0505 12:12:53.028318 node.go:427 weedfs:dc1:rack2:server121 adds child I0505 12:12:53.028322 node.go:427 weedfs:dc1:rack2 adds child server122 I0505 12:12:53.028323 node.go:427 weedfs:dc1:rack2:server122 adds child I0505 12:12:53.028325 node.go:427 weedfs:dc1:rack2 adds child server123 I0505 12:12:53.028327 node.go:427 weedfs:dc1:rack2:server123 adds child I0505 12:12:53.028331 node.go:427 weedfs adds child dc2 assigned node : server123 assigned node : server122 assigned node : server121 --- PASS: TestFindEmptySlotsForOneVolume (0.00s) === RUN TestReplication011 data: map[dc1:map[rack1:map[server111:map[limit:300 volumes:[map[id:1 size:12312] map[id:2 size:12312] map[id:3 size:12312]]] server112:map[limit:300 volumes:[map[id:4 size:12312] map[id:5 size:12312] map[id:6 size:12312]]] server113:map[limit:300 volumes:[]] server114:map[limit:300 volumes:[]] server115:map[limit:300 volumes:[]] server116:map[limit:300 volumes:[]]] rack2:map[server121:map[limit:300 volumes:[map[id:4 size:12312] map[id:5 size:12312] map[id:6 size:12312]]] server122:map[limit:300 volumes:[]] server123:map[limit:300 volumes:[map[id:2 size:12312] map[id:3 size:12312] map[id:4 size:12312]]] server124:map[limit:300 volumes:[]] server125:map[limit:300 volumes:[]] server126:map[limit:300 volumes:[]]] rack3:map[server131:map[limit:300 volumes:[]] server132:map[limit:300 volumes:[]] server133:map[limit:300 volumes:[]] server134:map[limit:300 volumes:[]] server135:map[limit:300 volumes:[]] server136:map[limit:300 volumes:[]]]]] I0505 12:12:53.028385 node.go:427 weedfs adds child dc1 I0505 12:12:53.028387 node.go:427 weedfs:dc1 adds child rack3 I0505 12:12:53.028389 node.go:427 weedfs:dc1:rack3 adds child server131 I0505 12:12:53.028391 node.go:427 weedfs:dc1:rack3:server131 adds child I0505 12:12:53.028393 node.go:427 weedfs:dc1:rack3 adds child server132 I0505 12:12:53.028395 node.go:427 weedfs:dc1:rack3:server132 adds child I0505 12:12:53.028397 node.go:427 weedfs:dc1:rack3 adds child server133 I0505 12:12:53.028400 node.go:427 weedfs:dc1:rack3:server133 adds child I0505 12:12:53.028402 node.go:427 weedfs:dc1:rack3 adds child server134 I0505 12:12:53.028403 node.go:427 weedfs:dc1:rack3:server134 adds child I0505 12:12:53.028405 node.go:427 weedfs:dc1:rack3 adds child server135 I0505 12:12:53.028407 node.go:427 weedfs:dc1:rack3:server135 adds child I0505 12:12:53.028409 node.go:427 weedfs:dc1:rack3 adds child server136 I0505 12:12:53.028410 node.go:427 weedfs:dc1:rack3:server136 adds child I0505 12:12:53.028412 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:53.028414 node.go:427 weedfs:dc1:rack1 adds child server116 I0505 12:12:53.028416 node.go:427 weedfs:dc1:rack1:server116 adds child I0505 12:12:53.028417 node.go:427 weedfs:dc1:rack1 adds child server111 I0505 12:12:53.028419 node.go:427 weedfs:dc1:rack1:server111 adds child I0505 12:12:53.028422 node.go:427 weedfs:dc1:rack1 adds child server112 I0505 12:12:53.028424 node.go:427 weedfs:dc1:rack1:server112 adds child I0505 12:12:53.028429 node.go:427 weedfs:dc1:rack1 adds child server113 I0505 12:12:53.028431 node.go:427 weedfs:dc1:rack1:server113 adds child I0505 12:12:53.028434 node.go:427 weedfs:dc1:rack1 adds child server114 I0505 12:12:53.028435 node.go:427 weedfs:dc1:rack1:server114 adds child I0505 12:12:53.028437 node.go:427 weedfs:dc1:rack1 adds child server115 I0505 12:12:53.028439 node.go:427 weedfs:dc1:rack1:server115 adds child I0505 12:12:53.028442 node.go:427 weedfs:dc1 adds child rack2 I0505 12:12:53.028444 node.go:427 weedfs:dc1:rack2 adds child server121 I0505 12:12:53.028446 node.go:427 weedfs:dc1:rack2:server121 adds child I0505 12:12:53.028449 node.go:427 weedfs:dc1:rack2 adds child server122 I0505 12:12:53.028450 node.go:427 weedfs:dc1:rack2:server122 adds child I0505 12:12:53.028452 node.go:427 weedfs:dc1:rack2 adds child server123 I0505 12:12:53.028454 node.go:427 weedfs:dc1:rack2:server123 adds child I0505 12:12:53.028457 node.go:427 weedfs:dc1:rack2 adds child server124 I0505 12:12:53.028459 node.go:427 weedfs:dc1:rack2:server124 adds child I0505 12:12:53.028461 node.go:427 weedfs:dc1:rack2 adds child server125 I0505 12:12:53.028462 node.go:427 weedfs:dc1:rack2:server125 adds child I0505 12:12:53.028464 node.go:427 weedfs:dc1:rack2 adds child server126 I0505 12:12:53.028466 node.go:427 weedfs:dc1:rack2:server126 adds child assigned node : server124 assigned node : server122 assigned node : server116 --- PASS: TestReplication011 (0.00s) === RUN TestFindEmptySlotsForOneVolumeScheduleByWeight data: map[dc1:map[rack1:map[server111:map[limit:2000 volumes:[]]]] dc2:map[rack2:map[server222:map[limit:2000 volumes:[]]]] dc3:map[rack3:map[server333:map[limit:1000 volumes:[]]]] dc4:map[rack4:map[server444:map[limit:1000 volumes:[]]]] dc5:map[rack5:map[server555:map[limit:500 volumes:[]]]] dc6:map[rack6:map[server666:map[limit:500 volumes:[]]]]] I0505 12:12:53.028505 node.go:427 weedfs adds child dc6 I0505 12:12:53.028507 node.go:427 weedfs:dc6 adds child rack6 I0505 12:12:53.028509 node.go:427 weedfs:dc6:rack6 adds child server666 I0505 12:12:53.028512 node.go:427 weedfs:dc6:rack6:server666 adds child I0505 12:12:53.028514 node.go:427 weedfs adds child dc1 I0505 12:12:53.028516 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:53.028518 node.go:427 weedfs:dc1:rack1 adds child server111 I0505 12:12:53.028519 node.go:427 weedfs:dc1:rack1:server111 adds child I0505 12:12:53.028522 node.go:427 weedfs adds child dc2 I0505 12:12:53.028524 node.go:427 weedfs:dc2 adds child rack2 I0505 12:12:53.028525 node.go:427 weedfs:dc2:rack2 adds child server222 I0505 12:12:53.028527 node.go:427 weedfs:dc2:rack2:server222 adds child I0505 12:12:53.028529 node.go:427 weedfs adds child dc3 I0505 12:12:53.028531 node.go:427 weedfs:dc3 adds child rack3 I0505 12:12:53.028532 node.go:427 weedfs:dc3:rack3 adds child server333 I0505 12:12:53.028534 node.go:427 weedfs:dc3:rack3:server333 adds child I0505 12:12:53.028541 node.go:427 weedfs adds child dc4 I0505 12:12:53.028543 node.go:427 weedfs:dc4 adds child rack4 I0505 12:12:53.028545 node.go:427 weedfs:dc4:rack4 adds child server444 I0505 12:12:53.028546 node.go:427 weedfs:dc4:rack4:server444 adds child I0505 12:12:53.028548 node.go:427 weedfs adds child dc5 I0505 12:12:53.028550 node.go:427 weedfs:dc5 adds child rack5 I0505 12:12:53.028552 node.go:427 weedfs:dc5:rack5 adds child server555 I0505 12:12:53.028553 node.go:427 weedfs:dc5:rack5:server555 adds child server111 : 571 server333 : 296 server555 : 138 server222 : 538 server444 : 294 server666 : 163 --- PASS: TestFindEmptySlotsForOneVolumeScheduleByWeight (0.00s) === RUN TestPickForWrite data: map[dc1:map[rack1:map[serverdc111:map[ip:127.0.0.1 limit:100 volumes:[map[collection:test id:1 replication:001 size:12312] map[collection:test id:2 replication:100 size:12312] map[collection:test id:4 replication:100 size:12312] map[collection:test id:6 replication:010 size:12312]]]]] dc2:map[rack1:map[serverdc211:map[ip:127.0.0.2 limit:100 volumes:[map[collection:test id:2 replication:100 size:12312] map[collection:test id:3 replication:010 size:12312] map[collection:test id:5 replication:001 size:12312] map[collection:test id:6 replication:010 size:12312]]]]] dc3:map[rack1:map[serverdc311:map[ip:127.0.0.3 limit:100 volumes:[map[collection:test id:1 replication:001 size:12312] map[collection:test id:3 replication:010 size:12312] map[collection:test id:4 replication:100 size:12312] map[collection:test id:5 replication:001 size:12312]]]]]] I0505 12:12:53.029822 node.go:427 weedfs adds child dc1 I0505 12:12:53.029824 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:53.029827 node.go:427 weedfs:dc1:rack1 adds child serverdc111 I0505 12:12:53.029831 node.go:427 weedfs:dc1:rack1:serverdc111 adds child I0505 12:12:53.029837 node.go:427 weedfs adds child dc2 I0505 12:12:53.029838 node.go:427 weedfs:dc2 adds child rack1 I0505 12:12:53.029841 node.go:427 weedfs:dc2:rack1 adds child serverdc211 I0505 12:12:53.029843 volume_layout.go:703 Volume 2 becomes unwritable I0505 12:12:53.029845 node.go:427 weedfs:dc2:rack1:serverdc211 adds child I0505 12:12:53.029849 volume_layout.go:703 Volume 6 becomes unwritable I0505 12:12:53.029852 node.go:427 weedfs adds child dc3 I0505 12:12:53.029854 node.go:427 weedfs:dc3 adds child rack1 I0505 12:12:53.029856 node.go:427 weedfs:dc3:rack1 adds child serverdc311 I0505 12:12:53.029858 volume_layout.go:703 Volume 1 becomes unwritable I0505 12:12:53.029860 node.go:427 weedfs:dc3:rack1:serverdc311 adds child I0505 12:12:53.029862 volume_layout.go:703 Volume 3 becomes unwritable I0505 12:12:53.029867 volume_layout.go:703 Volume 4 becomes unwritable I0505 12:12:53.029869 volume_layout.go:703 Volume 5 becomes unwritable --- PASS: TestPickForWrite (0.00s) === RUN TestGetPendingSize I0505 12:12:53.029897 node.go:427 weedfs adds child dc1 I0505 12:12:53.029904 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:53.029908 node.go:427 weedfs:dc1:rack1 adds child server1 I0505 12:12:53.029912 node.go:427 weedfs:dc1:rack1:server1 adds child --- PASS: TestGetPendingSize (0.00s) === RUN TestGetPendingSize_CompactionResets I0505 12:12:53.029927 node.go:427 weedfs adds child dc1 I0505 12:12:53.029929 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:53.029932 node.go:427 weedfs:dc1:rack1 adds child server1 I0505 12:12:53.029934 node.go:427 weedfs:dc1:rack1:server1 adds child --- PASS: TestGetPendingSize_CompactionResets (0.00s) === RUN TestDrainAndRemoveFromWritable_NoPending I0505 12:12:53.029955 node.go:427 weedfs adds child dc1 I0505 12:12:53.029957 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:53.029959 node.go:427 weedfs:dc1:rack1 adds child server1 I0505 12:12:53.029962 node.go:427 weedfs:dc1:rack1:server1 adds child I0505 12:12:53.029964 volume_layout.go:703 Volume 1 becomes unwritable --- PASS: TestDrainAndRemoveFromWritable_NoPending (0.00s) === RUN TestDrainAndRemoveFromWritable_WithPending I0505 12:12:53.029978 node.go:427 weedfs adds child dc1 I0505 12:12:53.029980 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:53.029982 node.go:427 weedfs:dc1:rack1 adds child server1 I0505 12:12:53.029985 node.go:427 weedfs:dc1:rack1:server1 adds child I0505 12:12:53.029989 volume_layout.go:703 Volume 1 becomes unwritable I0505 12:12:53.029991 volume_layout.go:391 Volume 1 reaches full capacity (effective=2098151, limit=10000). --- PASS: TestDrainAndRemoveFromWritable_WithPending (0.00s) === RUN TestDrainAndRemoveFromWritable_DecaysViaConcurrentHeartbeat I0505 12:12:53.030012 node.go:427 weedfs adds child dc1 I0505 12:12:53.030015 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:53.030016 node.go:427 weedfs:dc1:rack1 adds child server1 I0505 12:12:53.030019 node.go:427 weedfs:dc1:rack1:server1 adds child I0505 12:12:53.030022 volume_layout.go:703 Volume 1 becomes unwritable I0505 12:12:53.030024 volume_layout.go:391 Volume 1 reaches full capacity (effective=104858600, limit=10000). I0505 12:12:53.530697 volume_layout.go:809 Volume 1 becomes crowded --- PASS: TestDrainAndRemoveFromWritable_DecaysViaConcurrentHeartbeat (5.01s) === RUN TestSetVolumeReadOnly_PreservesPending I0505 12:12:58.038488 node.go:427 weedfs adds child dc1 I0505 12:12:58.038525 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:58.038530 node.go:427 weedfs:dc1:rack1 adds child server1 I0505 12:12:58.038546 node.go:427 weedfs:dc1:rack1:server1 adds child I0505 12:12:58.038559 volume_layout.go:703 Volume 1 becomes unwritable --- PASS: TestSetVolumeReadOnly_PreservesPending (0.00s) === RUN TestShouldGrowVolumesByDcAndRack_Issue8986 data: map[dc_edge:map[rack1:map[server1:map[ip:10.0.0.1 limit:30 volumes:[map[id:1 replication:010 size:12312] map[id:2 replication:010 size:12312]]]] rack2:map[server2:map[ip:10.0.0.2 limit:30 volumes:[map[id:1 replication:010 size:12312] map[id:2 replication:010 size:12312]]]] rack3:map[server3:map[ip:10.0.0.3 limit:30 volumes:[]]]]] I0505 12:12:58.038640 node.go:427 weedfs adds child dc_edge I0505 12:12:58.038644 node.go:427 weedfs:dc_edge adds child rack1 I0505 12:12:58.038647 node.go:427 weedfs:dc_edge:rack1 adds child server1 I0505 12:12:58.038652 node.go:427 weedfs:dc_edge:rack1:server1 adds child I0505 12:12:58.038658 node.go:427 weedfs:dc_edge adds child rack2 I0505 12:12:58.038661 node.go:427 weedfs:dc_edge:rack2 adds child server2 I0505 12:12:58.038665 volume_layout.go:703 Volume 1 becomes unwritable I0505 12:12:58.038668 node.go:427 weedfs:dc_edge:rack2:server2 adds child I0505 12:12:58.038672 volume_layout.go:703 Volume 2 becomes unwritable I0505 12:12:58.038679 node.go:427 weedfs:dc_edge adds child rack3 I0505 12:12:58.038682 node.go:427 weedfs:dc_edge:rack3 adds child server3 I0505 12:12:58.038685 node.go:427 weedfs:dc_edge:rack3:server3 adds child --- PASS: TestShouldGrowVolumesByDcAndRack_Issue8986 (0.00s) === RUN TestPickForWriteWeightedDistribution I0505 12:12:58.038713 node.go:427 weedfs adds child dc1 I0505 12:12:58.038716 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:58.038719 node.go:427 weedfs:dc1:rack1 adds child server1 I0505 12:12:58.038723 node.go:427 weedfs:dc1:rack1:server1 adds child --- PASS: TestPickForWriteWeightedDistribution (0.01s) === RUN TestPickForWriteWithPendingSize I0505 12:12:58.047082 node.go:427 weedfs adds child dc1 I0505 12:12:58.047097 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:58.047102 node.go:427 weedfs:dc1:rack1 adds child server1 I0505 12:12:58.047115 node.go:427 weedfs:dc1:rack1:server1 adds child --- PASS: TestPickForWriteWithPendingSize (0.00s) === RUN TestPickForWriteSingleWritable I0505 12:12:58.048719 node.go:427 weedfs adds child dc1 I0505 12:12:58.048728 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:58.048733 node.go:427 weedfs:dc1:rack1 adds child server1 I0505 12:12:58.048742 node.go:427 weedfs:dc1:rack1:server1 adds child --- PASS: TestPickForWriteSingleWritable (0.00s) === RUN TestPickForWriteAllNearFull I0505 12:12:58.048796 node.go:427 weedfs adds child dc1 I0505 12:12:58.048800 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:58.048807 node.go:427 weedfs:dc1:rack1 adds child server1 I0505 12:12:58.048828 node.go:427 weedfs:dc1:rack1:server1 adds child --- PASS: TestPickForWriteAllNearFull (0.00s) === RUN TestPickForWriteConstrainedWeighted I0505 12:12:58.048888 node.go:427 weedfs adds child dc1 I0505 12:12:58.048891 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:58.048897 node.go:427 weedfs:dc1:rack1 adds child server1 I0505 12:12:58.048904 node.go:427 weedfs:dc1:rack1:server1 adds child I0505 12:12:58.048910 node.go:427 weedfs:dc1 adds child rack2 I0505 12:12:58.048913 node.go:427 weedfs:dc1:rack2 adds child server2 I0505 12:12:58.048919 node.go:427 weedfs:dc1:rack2:server2 adds child --- PASS: TestPickForWriteConstrainedWeighted (0.00s) === RUN TestRecordAssignMarksCrowded I0505 12:12:58.052429 node.go:427 weedfs adds child dc1 I0505 12:12:58.052444 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:58.052450 node.go:427 weedfs:dc1:rack1 adds child server1 I0505 12:12:58.052461 node.go:427 weedfs:dc1:rack1:server1 adds child I0505 12:12:58.052471 volume_layout.go:809 Volume 1 becomes crowded --- PASS: TestRecordAssignMarksCrowded (0.00s) === RUN TestRecordAssignReachingCapacityRemovesFromWritable I0505 12:12:58.052498 node.go:427 weedfs adds child dc1 I0505 12:12:58.052501 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:58.052504 node.go:427 weedfs:dc1:rack1 adds child server1 I0505 12:12:58.052516 node.go:427 weedfs:dc1:rack1:server1 adds child I0505 12:12:58.052524 volume_layout.go:703 Volume 1 becomes unwritable I0505 12:12:58.052527 volume_layout.go:391 Volume 1 reaches full capacity (effective=10000, limit=10000). --- PASS: TestRecordAssignReachingCapacityRemovesFromWritable (0.00s) === RUN TestUpdateVolumeSizeRecoversEagerlyRemovedVolume I0505 12:12:58.052552 node.go:427 weedfs adds child dc1 I0505 12:12:58.052555 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:58.052558 node.go:427 weedfs:dc1:rack1 adds child server1 I0505 12:12:58.052562 node.go:427 weedfs:dc1:rack1:server1 adds child I0505 12:12:58.052566 volume_layout.go:703 Volume 1 becomes unwritable I0505 12:12:58.052569 volume_layout.go:391 Volume 1 reaches full capacity (effective=10000, limit=10000). I0505 12:12:58.052576 volume_layout.go:287 Volume 1 recovered to writable (effective=4375, reported=4000, limit=10000). --- PASS: TestUpdateVolumeSizeRecoversEagerlyRemovedVolume (0.00s) === RUN TestUpdateVolumeSizeNoRecoveryWhenDiskStillOversized I0505 12:12:58.052599 node.go:427 weedfs adds child dc1 I0505 12:12:58.052602 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:58.052604 node.go:427 weedfs:dc1:rack1 adds child server1 I0505 12:12:58.052608 node.go:427 weedfs:dc1:rack1:server1 adds child I0505 12:12:58.052611 volume_layout.go:703 Volume 1 becomes unwritable I0505 12:12:58.052614 volume_layout.go:391 Volume 1 reaches full capacity (effective=10000, limit=10000). I0505 12:12:58.052617 volume_layout.go:809 Volume 1 becomes crowded --- PASS: TestUpdateVolumeSizeNoRecoveryWhenDiskStillOversized (0.00s) === RUN TestHeartbeatDecaysPendingSize I0505 12:12:58.052638 node.go:427 weedfs adds child dc1 I0505 12:12:58.052641 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:58.052643 node.go:427 weedfs:dc1:rack1 adds child server1 I0505 12:12:58.052647 node.go:427 weedfs:dc1:rack1:server1 adds child --- PASS: TestHeartbeatDecaysPendingSize (0.00s) === RUN TestHeartbeatDecayDedupReplicas I0505 12:12:58.053667 node.go:427 weedfs adds child dc1 I0505 12:12:58.053673 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:58.053676 node.go:427 weedfs:dc1:rack1 adds child server1 I0505 12:12:58.053684 node.go:427 weedfs:dc1:rack1:server1 adds child I0505 12:12:58.053689 node.go:427 weedfs:dc1:rack1 adds child server2 I0505 12:12:58.053694 volume_layout.go:703 Volume 1 becomes unwritable I0505 12:12:58.053697 node.go:427 weedfs:dc1:rack1:server2 adds child --- PASS: TestHeartbeatDecayDedupReplicas (0.00s) === RUN TestUpdateVolumeSize_DecaysEvenWhenReportedSizeUnchanged I0505 12:12:58.053721 node.go:427 weedfs adds child dc1 I0505 12:12:58.053725 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:58.053728 node.go:427 weedfs:dc1:rack1 adds child server1 I0505 12:12:58.053733 node.go:427 weedfs:dc1:rack1:server1 adds child --- PASS: TestUpdateVolumeSize_DecaysEvenWhenReportedSizeUnchanged (0.00s) === RUN TestShouldGrowVolumesByDcAndRack_WithPendingSize I0505 12:12:58.053759 node.go:427 weedfs adds child dc1 I0505 12:12:58.053762 node.go:427 weedfs:dc1 adds child rack1 I0505 12:12:58.053765 node.go:427 weedfs:dc1:rack1 adds child server1 I0505 12:12:58.053769 node.go:427 weedfs:dc1:rack1:server1 adds child I0505 12:12:58.053775 volume_layout.go:809 Volume 1 becomes crowded --- PASS: TestShouldGrowVolumesByDcAndRack_WithPendingSize (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/topology 5.368s === RUN TestExtractBucketPath === RUN TestExtractBucketPath/child_paths_return_bucket === RUN TestExtractBucketPath/bucket_root_without_child_fails_when_required === RUN TestExtractBucketPath/bucket_root_allowed_when_not_required === RUN TestExtractBucketPath/path_outside_buckets_fails === RUN TestExtractBucketPath/trailing_slash_on_base_is_normalized --- PASS: TestExtractBucketPath (0.00s) --- PASS: TestExtractBucketPath/child_paths_return_bucket (0.00s) --- PASS: TestExtractBucketPath/bucket_root_without_child_fails_when_required (0.00s) --- PASS: TestExtractBucketPath/bucket_root_allowed_when_not_required (0.00s) --- PASS: TestExtractBucketPath/path_outside_buckets_fails (0.00s) --- PASS: TestExtractBucketPath/trailing_slash_on_base_is_normalized (0.00s) === RUN TestByteParsing --- PASS: TestByteParsing (0.00s) === RUN TestSameAsJavaImplementation Now we need to generate a 256-bit key for AES 256 GCM --- PASS: TestSameAsJavaImplementation (0.00s) === RUN TestDropOSPageCache --- PASS: TestDropOSPageCache (0.00s) === RUN TestToShortFileName --- PASS: TestToShortFileName (0.00s) === RUN TestResolvePath === RUN TestResolvePath/empty === RUN TestResolvePath/absolute === RUN TestResolvePath/relative === RUN TestResolvePath/tilde_mid_path_is_literal === RUN TestResolvePath/bare_tilde === RUN TestResolvePath/tilde_slash === RUN TestResolvePath/tilde_with_subpath === RUN TestResolvePath/tilde_with_current_user === RUN TestResolvePath/tilde_with_current_user_and_subpath === RUN TestResolvePath/tilde_unknown_user_falls_back_to_literal === RUN TestResolvePath/tilde_with_native_separator === RUN TestResolvePath/tilde_user_with_native_separator --- PASS: TestResolvePath (0.00s) --- PASS: TestResolvePath/empty (0.00s) --- PASS: TestResolvePath/absolute (0.00s) --- PASS: TestResolvePath/relative (0.00s) --- PASS: TestResolvePath/tilde_mid_path_is_literal (0.00s) --- PASS: TestResolvePath/bare_tilde (0.00s) --- PASS: TestResolvePath/tilde_slash (0.00s) --- PASS: TestResolvePath/tilde_with_subpath (0.00s) --- PASS: TestResolvePath/tilde_with_current_user (0.00s) --- PASS: TestResolvePath/tilde_with_current_user_and_subpath (0.00s) --- PASS: TestResolvePath/tilde_unknown_user_falls_back_to_literal (0.00s) --- PASS: TestResolvePath/tilde_with_native_separator (0.00s) --- PASS: TestResolvePath/tilde_user_with_native_separator (0.00s) === RUN TestResolveCommaSeparatedPaths === RUN TestResolveCommaSeparatedPaths/empty === RUN TestResolveCommaSeparatedPaths/single_absolute === RUN TestResolveCommaSeparatedPaths/single_tilde === RUN TestResolveCommaSeparatedPaths/two_absolutes === RUN TestResolveCommaSeparatedPaths/two_tildes === RUN TestResolveCommaSeparatedPaths/mixed === RUN TestResolveCommaSeparatedPaths/no_tilde_fast_path --- PASS: TestResolveCommaSeparatedPaths (0.00s) --- PASS: TestResolveCommaSeparatedPaths/empty (0.00s) --- PASS: TestResolveCommaSeparatedPaths/single_absolute (0.00s) --- PASS: TestResolveCommaSeparatedPaths/single_tilde (0.00s) --- PASS: TestResolveCommaSeparatedPaths/two_absolutes (0.00s) --- PASS: TestResolveCommaSeparatedPaths/two_tildes (0.00s) --- PASS: TestResolveCommaSeparatedPaths/mixed (0.00s) --- PASS: TestResolveCommaSeparatedPaths/no_tilde_fast_path (0.00s) === RUN TestSanitizeUTF8Name_ValidPassThrough --- PASS: TestSanitizeUTF8Name_ValidPassThrough (0.00s) === RUN TestSanitizeUTF8Name_InvalidBytes --- PASS: TestSanitizeUTF8Name_InvalidBytes (0.00s) === RUN TestFullPathSanitized_WholePath --- PASS: TestFullPathSanitized_WholePath (0.00s) === RUN TestFullPathDirAndName_OnlyNameSanitized --- PASS: TestFullPathDirAndName_OnlyNameSanitized (0.00s) === RUN TestHumanReadableIntsMax --- PASS: TestHumanReadableIntsMax (0.00s) === RUN TestHumanReadableInts --- PASS: TestHumanReadableInts (0.00s) === RUN TestOrderedLock ActiveLock 1 acquired lock 0 ActiveLock 3 acquired lock 0 ActiveLock 2 acquired lock 0 ActiveLock 4 acquired lock 0 ActiveLock 5 acquired lock 0 ActiveLock 6 acquired lock 0 ActiveLock 7 acquired lock 0 ActiveLock 9 acquired lock 0 ActiveLock 7 released lock 0 ActiveLock 9 released lock 0 ActiveLock 11 acquired lock 0 ActiveLock 10 acquired lock 0 ActiveLock 8 acquired lock 0 ActiveLock 11 released lock 0 ActiveLock 2 released lock 0 ActiveLock 6 released lock 0 ActiveLock 1 released lock 0 ActiveLock 8 released lock 0 ActiveLock 3 released lock 0 ActiveLock 4 released lock 0 ActiveLock 5 released lock 0 ActiveLock 10 released lock 0 ActiveLock 12 acquired lock 1 ActiveLock 12 released lock 1 ActiveLock 13 acquired lock 1 ActiveLock 13 released lock 1 ActiveLock 15 acquired lock 0 ActiveLock 14 acquired lock 0 ActiveLock 16 acquired lock 0 ActiveLock 15 released lock 0 ActiveLock 16 released lock 0 ActiveLock 14 released lock 0 ActiveLock 17 acquired lock 1 ActiveLock 17 released lock 1 ActiveLock 18 acquired lock 0 ActiveLock 19 acquired lock 0 ActiveLock 19 released lock 0 ActiveLock 18 released lock 0 ActiveLock 20 acquired lock 1 ActiveLock 20 released lock 1 ActiveLock 21 acquired lock 0 ActiveLock 21 released lock 0 ActiveLock 22 acquired lock 0 ActiveLock 23 acquired lock 0 ActiveLock 24 acquired lock 0 ActiveLock 25 acquired lock 0 ActiveLock 24 released lock 0 ActiveLock 22 released lock 0 ActiveLock 25 released lock 0 ActiveLock 23 released lock 0 ActiveLock 26 acquired lock 1 ActiveLock 26 released lock 1 ActiveLock 27 acquired lock 1 ActiveLock 27 released lock 1 ActiveLock 29 acquired lock 0 ActiveLock 28 acquired lock 0 ActiveLock 30 acquired lock 0 ActiveLock 31 acquired lock 0 ActiveLock 32 acquired lock 0 ActiveLock 33 acquired lock 0 ActiveLock 32 released lock 0 ActiveLock 33 released lock 0 ActiveLock 28 released lock 0 ActiveLock 29 released lock 0 ActiveLock 31 released lock 0 ActiveLock 30 released lock 0 ActiveLock 34 acquired lock 1 ActiveLock 34 released lock 1 ActiveLock 35 acquired lock 0 ActiveLock 36 acquired lock 0 ActiveLock 36 released lock 0 ActiveLock 35 released lock 0 ActiveLock 37 acquired lock 1 ActiveLock 37 released lock 1 ActiveLock 38 acquired lock 0 ActiveLock 39 acquired lock 0 ActiveLock 40 acquired lock 0 ActiveLock 39 released lock 0 ActiveLock 38 released lock 0 ActiveLock 40 released lock 0 ActiveLock 41 acquired lock 1 ActiveLock 41 released lock 1 ActiveLock 42 acquired lock 0 ActiveLock 43 acquired lock 0 ActiveLock 44 acquired lock 0 ActiveLock 43 released lock 0 ActiveLock 42 released lock 0 ActiveLock 44 released lock 0 ActiveLock 49 acquired lock 1 ActiveLock 49 released lock 1 ActiveLock 45 acquired lock 0 ActiveLock 46 acquired lock 0 ActiveLock 50 acquired lock 0 ActiveLock 48 acquired lock 0 ActiveLock 47 acquired lock 0 ActiveLock 45 released lock 0 ActiveLock 50 released lock 0 ActiveLock 47 released lock 0 ActiveLock 48 released lock 0 ActiveLock 46 released lock 0 --- PASS: TestOrderedLock (1.10s) === RUN TestShouldWaitForSharedLock --- PASS: TestShouldWaitForSharedLock (0.00s) === RUN TestShouldWaitForExclusiveLock --- PASS: TestShouldWaitForExclusiveLock (0.00s) === RUN TestParseMinFreeSpace --- PASS: TestParseMinFreeSpace (0.00s) === RUN TestPathPrefixFilter_Empty --- PASS: TestPathPrefixFilter_Empty (0.00s) === RUN TestPathPrefixFilter_ExcludeOnly --- PASS: TestPathPrefixFilter_ExcludeOnly (0.00s) === RUN TestPathPrefixFilter_IncludeOnly --- PASS: TestPathPrefixFilter_IncludeOnly (0.00s) === RUN TestPathPrefixFilter_DeeperPrefixWins --- PASS: TestPathPrefixFilter_DeeperPrefixWins (0.00s) === RUN TestPathPrefixFilter_DeeperExcludeWins --- PASS: TestPathPrefixFilter_DeeperExcludeWins (0.00s) === RUN TestPathPrefixFilter_MultipleOverlappingPrefixes --- PASS: TestPathPrefixFilter_MultipleOverlappingPrefixes (0.00s) === RUN TestPathPrefixFilter_InvalidPrefixes --- PASS: TestPathPrefixFilter_InvalidPrefixes (0.00s) === RUN TestPathPrefixFilter_TrailingSlashNormalization --- PASS: TestPathPrefixFilter_TrailingSlashNormalization (0.00s) === RUN TestPathPrefixFilter_BoundaryMatching --- PASS: TestPathPrefixFilter_BoundaryMatching (0.00s) === RUN TestNewQueue --- PASS: TestNewQueue (0.00s) === RUN TestEnqueueAndConsume 1 2 3 ----------------------- 4 5 6 7 ----------------------- --- PASS: TestEnqueueAndConsume (0.00s) === RUN TestRetryUntil === RUN TestRetryUntil/SucceedsImmediately === RUN TestRetryUntil/SucceedsAfterRetry === RUN TestRetryUntil/FailsNonRetryable --- PASS: TestRetryUntil (2.51s) --- PASS: TestRetryUntil/SucceedsImmediately (0.00s) --- PASS: TestRetryUntil/SucceedsAfterRetry (2.51s) --- PASS: TestRetryUntil/FailsNonRetryable (0.00s) === RUN TestRetryWithBackoff === RUN TestRetryWithBackoff/SucceedsAfterRetries === RUN TestRetryWithBackoff/StopsOnNonRetryableError === RUN TestRetryWithBackoff/StopsOnContextCancel === RUN TestRetryWithBackoff/StopsOnMaxDuration I0505 12:13:03.833989 retry.go:100 retry test: giving up after 3s: unavailable --- PASS: TestRetryWithBackoff (7.52s) --- PASS: TestRetryWithBackoff/SucceedsAfterRetries (2.51s) --- PASS: TestRetryWithBackoff/StopsOnNonRetryableError (0.00s) --- PASS: TestRetryWithBackoff/StopsOnContextCancel (2.01s) --- PASS: TestRetryWithBackoff/StopsOnMaxDuration (3.00s) === RUN TestSingleFlightGroupDedup --- PASS: TestSingleFlightGroupDedup (0.00s) === RUN TestSingleFlightGroupDifferentKeys --- PASS: TestSingleFlightGroupDifferentKeys (0.00s) === RUN TestSingleFlightGroupErrorPropagation --- PASS: TestSingleFlightGroupErrorPropagation (0.00s) === RUN TestSingleFlightGroupFreshCallAfterCompletion --- PASS: TestSingleFlightGroupFreshCallAfterCompletion (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/util 11.138s ? github.com/seaweedfs/seaweedfs/weed/util/buffer_pool [no test files] === RUN TestJobQueue enqueued 5 items dequeue 1 dequeue 2 enqueue 6 enqueue 7 dequeue ... dequeued 3 dequeue ... dequeued 4 dequeue ... dequeued 5 dequeue ... dequeued 6 dequeue ... dequeued 7 enqueue 8 enqueue 9 enqueue 10 enqueue 11 enqueue 12 dequeued 8 dequeued 9 dequeued 10 dequeued 11 dequeued 12 --- PASS: TestJobQueue (0.00s) === RUN TestJobQueueClose dequeued 1 dequeued 2 dequeued 3 dequeued 4 dequeued 5 dequeued 6 dequeued 7 --- PASS: TestJobQueueClose (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/util/buffered_queue 0.002s ? github.com/seaweedfs/seaweedfs/weed/util/buffered_writer [no test files] === RUN TestOnDisk chunk_cache_on_disk_test.go:73: cache miss for entry 2 (acceptable with size constraints) chunk_cache_on_disk_test.go:126: cache miss for entry 2 after restart (acceptable) --- PASS: TestOnDisk (0.03s) PASS ok github.com/seaweedfs/seaweedfs/weed/util/chunk_cache 0.035s ? github.com/seaweedfs/seaweedfs/weed/util/constants [no test files] ? github.com/seaweedfs/seaweedfs/weed/util/fla9 [no test files] ? github.com/seaweedfs/seaweedfs/weed/util/grace [no test files] === RUN TestAppendQueryParameter === RUN TestAppendQueryParameter/without_existing_query === RUN TestAppendQueryParameter/with_existing_query === RUN TestAppendQueryParameter/with_trailing_question_mark === RUN TestAppendQueryParameter/with_trailing_ampersand === RUN TestAppendQueryParameter/encodes_values === RUN TestAppendQueryParameter/preserves_fragment === RUN TestAppendQueryParameter/blank_url --- PASS: TestAppendQueryParameter (0.00s) --- PASS: TestAppendQueryParameter/without_existing_query (0.00s) --- PASS: TestAppendQueryParameter/with_existing_query (0.00s) --- PASS: TestAppendQueryParameter/with_trailing_question_mark (0.00s) --- PASS: TestAppendQueryParameter/with_trailing_ampersand (0.00s) --- PASS: TestAppendQueryParameter/encodes_values (0.00s) --- PASS: TestAppendQueryParameter/preserves_fragment (0.00s) --- PASS: TestAppendQueryParameter/blank_url (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/util/http 0.008s ? github.com/seaweedfs/seaweedfs/weed/util/http/client [no test files] ? github.com/seaweedfs/seaweedfs/weed/util/httpdown [no test files] === RUN TestReadTsCorruptedBuffer log_buffer_corruption_test.go:46: Error message: corrupted log buffer: failed to unmarshal LogEntry at pos 0, size 10: proto: cannot parse invalid wire-format data log_buffer_corruption_test.go:53: ✓ readTs correctly returned error for corrupted buffer: corrupted log buffer: failed to unmarshal LogEntry at pos 0, size 10: proto: cannot parse invalid wire-format data --- PASS: TestReadTsCorruptedBuffer (0.00s) === RUN TestReadTsValidBuffer log_buffer_corruption_test.go:92: ✓ readTs correctly parsed valid buffer: size=15, ts=123456789 --- PASS: TestReadTsValidBuffer (0.00s) === RUN TestReadFromBufferCorruption E0505 12:12:52.776224 log_buffer.go:862 ReadFromBuffer: buffer corruption at idx[0] pos 0: corrupted log buffer: failed to unmarshal LogEntry at pos 0, size 33: proto: cannot parse invalid wire-format data log_buffer_corruption_test.go:134: ✓ ReadFromBuffer correctly detected corruption: log buffer is corrupted: corrupted log buffer: failed to unmarshal LogEntry at pos 0, size 33: proto: cannot parse invalid wire-format data log_buffer_corruption_test.go:137: ReadFromBuffer result: buf=false, offset=-1, err=log buffer is corrupted: corrupted log buffer: failed to unmarshal LogEntry at pos 0, size 33: proto: cannot parse invalid wire-format data --- PASS: TestReadFromBufferCorruption (0.00s) === RUN TestLocateByTsCorruption log_buffer_corruption_test.go:163: ✓ locateByTs correctly detected corruption: locateByTs: buffer corruption at pos 0: corrupted log buffer: failed to unmarshal LogEntry at pos 0, size 10: proto: cannot parse invalid wire-format data --- PASS: TestLocateByTsCorruption (0.00s) === RUN TestErrorPropagationChain === RUN TestErrorPropagationChain/Corruption_in_readTs log_buffer_corruption_test.go:171: ✓ readTs error propagation tested === RUN TestErrorPropagationChain/Corruption_in_locateByTs log_buffer_corruption_test.go:176: ✓ locateByTs error propagation tested === RUN TestErrorPropagationChain/Corruption_in_ReadFromBuffer_binary_search log_buffer_corruption_test.go:181: ✓ ReadFromBuffer error propagation tested === NAME TestErrorPropagationChain log_buffer_corruption_test.go:184: ✓ Complete error propagation chain verified --- PASS: TestErrorPropagationChain (0.00s) --- PASS: TestErrorPropagationChain/Corruption_in_readTs (0.00s) --- PASS: TestErrorPropagationChain/Corruption_in_locateByTs (0.00s) --- PASS: TestErrorPropagationChain/Corruption_in_ReadFromBuffer_binary_search (0.00s) === RUN TestNoSilentCorruption === RUN TestNoSilentCorruption/Invalid_protobuf log_buffer_corruption_test.go:215: ✓ Correctly returned error instead of silent (0, 0): corrupted log buffer: entry size 167772160 at pos 0 exceeds buffer length 14 === RUN TestNoSilentCorruption/Truncated_data log_buffer_corruption_test.go:215: ✓ Correctly returned error instead of silent (0, 0): corrupted log buffer: entry size 1677721600 at pos 0 exceeds buffer length 7 --- PASS: TestNoSilentCorruption (0.00s) --- PASS: TestNoSilentCorruption/Invalid_protobuf (0.00s) --- PASS: TestNoSilentCorruption/Truncated_data (0.00s) === RUN TestFlushOffsetGap_ReproduceDataLoss log_buffer_flush_gap_test.go:69: Sending 100 messages... log_buffer_flush_gap_test.go:82: Forcing flush... log_buffer_flush_gap_test.go:33: FLUSH: minOffset=0 maxOffset=99 size=4434 bytes log_buffer_flush_gap_test.go:61: Parsed 100 messages from flush buffer log_buffer_flush_gap_test.go:33: FLUSH: minOffset=100 maxOffset=149 size=2352 bytes log_buffer_flush_gap_test.go:61: Parsed 50 messages from flush buffer log_buffer_flush_gap_test.go:117: BUFFER STATE AFTER FLUSH: log_buffer_flush_gap_test.go:118: bufferStartOffset: 150 log_buffer_flush_gap_test.go:119: currentOffset (HWM): 150 log_buffer_flush_gap_test.go:120: pos (bytes in buffer): 0 log_buffer_flush_gap_test.go:121: Messages sent: 150 (offsets 0-149) log_buffer_flush_gap_test.go:122: Messages flushed to disk: 150 (offsets 0-149) log_buffer_flush_gap_test.go:128: OFFSET CONTINUITY CHECK: log_buffer_flush_gap_test.go:129: Last flushed offset: 149 log_buffer_flush_gap_test.go:130: Buffer starts at: 150 log_buffer_flush_gap_test.go:131: Gap: 0 offsets log_buffer_flush_gap_test.go:143: PASS: No gap detected - offsets are continuous log_buffer_flush_gap_test.go:147: READABILITY CHECK: log_buffer_flush_gap_test.go:159: Offset 0: OK (buf=false, err=resumeFromDisk) log_buffer_flush_gap_test.go:159: Offset 10: OK (buf=true, err=) log_buffer_flush_gap_test.go:159: Offset 20: OK (buf=true, err=) log_buffer_flush_gap_test.go:159: Offset 30: OK (buf=true, err=) log_buffer_flush_gap_test.go:159: Offset 40: OK (buf=true, err=) log_buffer_flush_gap_test.go:159: Offset 50: OK (buf=true, err=) log_buffer_flush_gap_test.go:159: Offset 60: OK (buf=true, err=) log_buffer_flush_gap_test.go:159: Offset 70: OK (buf=true, err=) log_buffer_flush_gap_test.go:159: Offset 80: OK (buf=true, err=) log_buffer_flush_gap_test.go:159: Offset 90: OK (buf=true, err=) log_buffer_flush_gap_test.go:159: Offset 100: OK (buf=true, err=) log_buffer_flush_gap_test.go:159: Offset 110: OK (buf=true, err=) log_buffer_flush_gap_test.go:159: Offset 120: OK (buf=true, err=) log_buffer_flush_gap_test.go:159: Offset 130: OK (buf=true, err=) log_buffer_flush_gap_test.go:159: Offset 140: OK (buf=true, err=) log_buffer_flush_gap_test.go:177: MESSAGE ACCOUNTING: log_buffer_flush_gap_test.go:178: Expected: 150 messages log_buffer_flush_gap_test.go:179: Flushed to disk: 150 log_buffer_flush_gap_test.go:180: In memory buffer: 0 (offset range 150-149) log_buffer_flush_gap_test.go:181: Total accounted for: 150 log_buffer_flush_gap_test.go:182: Missing: 0 messages log_buffer_flush_gap_test.go:187: All messages accounted for --- PASS: TestFlushOffsetGap_ReproduceDataLoss (0.20s) === RUN TestFlushOffsetGap_CheckPrevBuffers log_buffer_flush_gap_test.go:211: Batch 0: log_buffer_flush_gap_test.go:203: FLUSH #1: minOffset=0 maxOffset=19 size=872 bytes log_buffer_flush_gap_test.go:242: Before flush: offset=20, bufferStartOffset=0 log_buffer_flush_gap_test.go:243: After flush: offset=20, bufferStartOffset=20, prevBuffers=4 log_buffer_flush_gap_test.go:249: prevBuffer[3]: offsets 0-19, size=872 bytes (NOT FLUSHED!) log_buffer_flush_gap_test.go:211: Batch 1: log_buffer_flush_gap_test.go:203: FLUSH #2: minOffset=20 maxOffset=39 size=874 bytes log_buffer_flush_gap_test.go:242: Before flush: offset=40, bufferStartOffset=20 log_buffer_flush_gap_test.go:243: After flush: offset=40, bufferStartOffset=40, prevBuffers=4 log_buffer_flush_gap_test.go:249: prevBuffer[2]: offsets 0-19, size=872 bytes (NOT FLUSHED!) log_buffer_flush_gap_test.go:249: prevBuffer[3]: offsets 20-39, size=874 bytes (NOT FLUSHED!) log_buffer_flush_gap_test.go:211: Batch 2: log_buffer_flush_gap_test.go:203: FLUSH #3: minOffset=40 maxOffset=59 size=879 bytes log_buffer_flush_gap_test.go:242: Before flush: offset=60, bufferStartOffset=40 log_buffer_flush_gap_test.go:243: After flush: offset=60, bufferStartOffset=60, prevBuffers=4 log_buffer_flush_gap_test.go:249: prevBuffer[1]: offsets 0-19, size=872 bytes (NOT FLUSHED!) log_buffer_flush_gap_test.go:249: prevBuffer[2]: offsets 20-39, size=874 bytes (NOT FLUSHED!) log_buffer_flush_gap_test.go:249: prevBuffer[3]: offsets 40-59, size=879 bytes (NOT FLUSHED!) log_buffer_flush_gap_test.go:211: Batch 3: log_buffer_flush_gap_test.go:203: FLUSH #4: minOffset=60 maxOffset=79 size=904 bytes log_buffer_flush_gap_test.go:242: Before flush: offset=80, bufferStartOffset=60 log_buffer_flush_gap_test.go:243: After flush: offset=80, bufferStartOffset=80, prevBuffers=4 log_buffer_flush_gap_test.go:249: prevBuffer[0]: offsets 0-19, size=872 bytes (NOT FLUSHED!) log_buffer_flush_gap_test.go:249: prevBuffer[1]: offsets 20-39, size=874 bytes (NOT FLUSHED!) log_buffer_flush_gap_test.go:249: prevBuffer[2]: offsets 40-59, size=879 bytes (NOT FLUSHED!) log_buffer_flush_gap_test.go:249: prevBuffer[3]: offsets 60-79, size=904 bytes (NOT FLUSHED!) log_buffer_flush_gap_test.go:211: Batch 4: log_buffer_flush_gap_test.go:203: FLUSH #5: minOffset=80 maxOffset=99 size=905 bytes log_buffer_flush_gap_test.go:242: Before flush: offset=100, bufferStartOffset=80 log_buffer_flush_gap_test.go:243: After flush: offset=100, bufferStartOffset=100, prevBuffers=4 log_buffer_flush_gap_test.go:249: prevBuffer[0]: offsets 20-39, size=874 bytes (NOT FLUSHED!) log_buffer_flush_gap_test.go:249: prevBuffer[1]: offsets 40-59, size=879 bytes (NOT FLUSHED!) log_buffer_flush_gap_test.go:249: prevBuffer[2]: offsets 60-79, size=904 bytes (NOT FLUSHED!) log_buffer_flush_gap_test.go:249: prevBuffer[3]: offsets 80-99, size=905 bytes (NOT FLUSHED!) --- PASS: TestFlushOffsetGap_CheckPrevBuffers (0.26s) === RUN TestFlushOffsetGap_ConcurrentWriteAndFlush log_buffer_flush_gap_test.go:273: FLUSH: offsets 0-150 (6831 bytes) log_buffer_flush_gap_test.go:273: FLUSH: offsets 151-199 (2316 bytes) log_buffer_flush_gap_test.go:335: FINAL STATE: log_buffer_flush_gap_test.go:336: Total messages sent: 200 (offsets 0-199) log_buffer_flush_gap_test.go:337: Flushed to disk: 200 log_buffer_flush_gap_test.go:338: In memory: 0 (offsets 200-199) log_buffer_flush_gap_test.go:339: Total accounted: 200 log_buffer_flush_gap_test.go:340: Missing: 0 --- PASS: TestFlushOffsetGap_ConcurrentWriteAndFlush (0.36s) === RUN TestFlushOffsetGap_ProductionScenario log_buffer_flush_gap_test.go:393: === ROUND 1: Adding messages 0-49 === log_buffer_flush_gap_test.go:412: Before flush: logBuffer.offset=50, bufferStartOffset=0, nextKafkaOffset=50 log_buffer_flush_gap_test.go:382: FLUSH: minOffset=0 maxOffset=49, parsed 50 messages log_buffer_flush_gap_test.go:424: After flush: logBuffer.offset=50, bufferStartOffset=50 log_buffer_flush_gap_test.go:428: === ROUND 2: Adding messages 50-99 === log_buffer_flush_gap_test.go:382: FLUSH: minOffset=50 maxOffset=99, parsed 50 messages log_buffer_flush_gap_test.go:447: === VERIFICATION === log_buffer_flush_gap_test.go:448: Expected Kafka offsets: 0-99 log_buffer_flush_gap_test.go:452: Flush #0: minOffset=0, maxOffset=49, messages=50 log_buffer_flush_gap_test.go:452: Flush #1: minOffset=50, maxOffset=99, messages=50 log_buffer_flush_gap_test.go:481: SUCCESS: All 100 Kafka offsets accounted for (0-99) log_buffer_flush_gap_test.go:490: Final buffer state: log_buffer_flush_gap_test.go:491: logBuffer.offset: 100 log_buffer_flush_gap_test.go:492: bufferStartOffset: 100 log_buffer_flush_gap_test.go:493: Expected (nextKafkaOffset): 100 --- PASS: TestFlushOffsetGap_ProductionScenario (0.20s) === RUN TestFlushOffsetGap_ConcurrentReadDuringFlush log_buffer_flush_gap_test.go:554: Adding 100 messages... log_buffer_flush_gap_test.go:568: Flushing... log_buffer_flush_gap_test.go:546: FLUSH: Stored 100 offsets to disk (minOffset=0, maxOffset=99) log_buffer_flush_gap_test.go:573: Reading messages from offset 0... E0505 12:12:53.902446 log_read_stateless.go:169 [StatelessRead] CASE 1: Historical data - offset 0 < bufferStart 100 log_buffer_flush_gap_test.go:576: Read result: messages=100, nextOffset=100, hwm=100, endOfPartition=true, err= log_buffer_flush_gap_test.go:600: All 100 offsets can be read after flush --- PASS: TestFlushOffsetGap_ConcurrentReadDuringFlush (0.10s) === RUN TestFlushOffsetGap_ForceFlushAdvancesBuffer log_buffer_flush_gap_test.go:622: === ROUND 0 === log_buffer_flush_gap_test.go:630: Before adding: offset=0, bufferStartOffset=0 log_buffer_flush_gap_test.go:649: After adding: offset=10, bufferStartOffset=0 log_buffer_flush_gap_test.go:652: Forcing flush... log_buffer_flush_gap_test.go:614: FLUSH: offsets 0-9 log_buffer_flush_gap_test.go:662: After flush: offset=10, bufferStartOffset=10 log_buffer_flush_gap_test.go:671: bufferStartOffset correctly advanced to 10 log_buffer_flush_gap_test.go:622: === ROUND 1 === log_buffer_flush_gap_test.go:630: Before adding: offset=10, bufferStartOffset=10 log_buffer_flush_gap_test.go:649: After adding: offset=20, bufferStartOffset=10 log_buffer_flush_gap_test.go:652: Forcing flush... log_buffer_flush_gap_test.go:614: FLUSH: offsets 10-19 log_buffer_flush_gap_test.go:662: After flush: offset=20, bufferStartOffset=20 log_buffer_flush_gap_test.go:671: bufferStartOffset correctly advanced to 20 log_buffer_flush_gap_test.go:622: === ROUND 2 === log_buffer_flush_gap_test.go:630: Before adding: offset=20, bufferStartOffset=20 log_buffer_flush_gap_test.go:649: After adding: offset=30, bufferStartOffset=20 log_buffer_flush_gap_test.go:652: Forcing flush... log_buffer_flush_gap_test.go:614: FLUSH: offsets 20-29 log_buffer_flush_gap_test.go:662: After flush: offset=30, bufferStartOffset=30 log_buffer_flush_gap_test.go:671: bufferStartOffset correctly advanced to 30 log_buffer_flush_gap_test.go:677: === FLUSHED RANGES === log_buffer_flush_gap_test.go:679: Flush #0: offsets 0-9 log_buffer_flush_gap_test.go:679: Flush #1: offsets 10-19 log_buffer_flush_gap_test.go:692: Continuous with previous flush log_buffer_flush_gap_test.go:679: Flush #2: offsets 20-29 log_buffer_flush_gap_test.go:692: Continuous with previous flush --- PASS: TestFlushOffsetGap_ForceFlushAdvancesBuffer (0.30s) === RUN TestBufferQueryability log_buffer_queryability_test.go:104: Buffer queryability test passed - data is immediately readable --- PASS: TestBufferQueryability (0.00s) === RUN TestMultipleEntriesQueryability log_buffer_queryability_test.go:168: Entry 1: Key=test-key-1, Data=test-data-1, Offset=1 log_buffer_queryability_test.go:168: Entry 2: Key=test-key-2, Data=test-data-2, Offset=2 log_buffer_queryability_test.go:168: Entry 3: Key=test-key-3, Data=test-data-3, Offset=3 log_buffer_queryability_test.go:175: Multiple entries queryability test passed - found 3 entries --- PASS: TestMultipleEntriesQueryability (0.00s) === RUN TestSchemaRegistryScenario log_buffer_queryability_test.go:243: Schema registry scenario test passed - schema value preserved: 109 bytes --- PASS: TestSchemaRegistryScenario (0.00s) === RUN TestTimeBasedFirstReadBeforeEarliest --- PASS: TestTimeBasedFirstReadBeforeEarliest (0.00s) === RUN TestEarliestTimeExactRead --- PASS: TestEarliestTimeExactRead (0.00s) === RUN TestNewLogBufferFirstBuffer processed all messages E0505 12:12:54.235875 log_read.go:279 LoopProcessLogData: test process log entry 1 ts_ns:1777983174235850506 partition_key_hash:-736260903 data:"\x84tQ\x198l\xe7rV\xc7c\x8a\xcfdl\xbdmɌ\xaa\x02\x8a\xb4\xf6j\xf4\t\x93\x1b\xf3\xb0\xe5\xc2%\x1ekq\x1e\xe7i\xea\xab\xf9y\x11c\x84\xabc\xc5b\xec\x87\x06_\xbe\xcd\xe6\xcfG\x06\x02|\xc4O\x19S\x97T.\x17O#\x81\x14\xef\x17^\x8b\xf0v\xfbZ\xef\x1a\xaa\xe3>\xbd\x85ja\xecm\x7f(1\tP\x17\x89\xc1\x87\xe8S\"\x0b\xeb\xd9BO\x05jS\xbb8-\xa3\xf6\x91\x8a8\xffj\x0fq\xc5K\x96\x1fm\xab\x9c\xa4E\xf5\x95aW/\x98\xf7\xc0\xf4\x89p\x83\x9f\x10[/'>[\xcb`{p\x98\x14\x8c\x02B\xbcfp\xff2T\xbdO$\xef\xf9\x88\x02$-\x89\xff\x15\xa5\r݉\x1b\xff\xf1\xe8/\xed\xc9W \"@\xe6\xfd\xd4\x18\x99\x91\xe0ɏ\xbd\x96\x84wb\xcb˝\xc9\xdab(\xban{QD}\x94 \xe25T\x1eط\x98\xbc\xa8\xfb\xa8\x0c\x98D\xe7>\xad\xe8\xed\x90\x18\xb7\x7f\x8a\x7f\x07S\xeeD\xd31\x99\xcd\xfb4\xfb\x8e\r\xe0\xfb\x8e\xbc>\x8f\x88\\\x15Au\xc4$I\xbd8\xa0gf\xcf:\x9a\xa5]\xea\xcf\x00}w\x14\xab\x01H8/\xd1(3\xff\x96>\x17|\xf5\x9eD\x8b=u\x0b\x047\x139X\xf4\x93@\xce,\x001:Q\x15YN\xa9\x15W݆`xgzB\x8cI\xa2\xa5:33|\x12\"\xc0@\x03\x80\x8b\xc6V\xe9\xc8J\xe3\x10\xf6\xe5\x1d\x9a\xb8F\x97\xc6ϕ\x10\xcd)\xd4\xcf\x02\xb5\x87\x0c\\a\xaeA\xba)\xder\x82|X\xee[\x04ci\xea\xac\xd4\xe3\x87H\xdf<))\x05\xb9j\xee\x95w\xa5\xe3\xef\x8e<\x19Ít\xdb\xd6\r\x87\xc4Q\xe7{\xf8\xdfֹ\xb4\xf3}l\xfc\x90\x82UDM\xceAlA%ܦ\x81e\x07Z\x91GE\xe2\x0bWg\xf95'\xadD*JYRL\x9a\x83\xb2\x9f^\xce\xe5|ˠ\xcc}>\xad\x98\xfa;\xe48o\\\xd4\xe0\x80\xe5\xec!\xc1\x1b\xc0D\x8fwl@\xce#\xfc]ۻȑ)@\x8e1\xda*I\xa6\xa0\xf2[\xa6a\xf3\xea\x0e\x8es\xf8Z\x8a\x97\xd0\t\xa3\xca\xc5!Q\x96=W^\xf4ٴ\xe0\xd2&\xecf\x18\rtֻ\xb2(\xa4\xcc\xe8\x10\xae\xd2eV*l\x99\x8d\xc2ˤ5\x89\xc8V\xa6jɧ(\xab\xfa\xf8\xcfH\xbb\x1e\x9f\xf2a8\xebc\x95\xdc{\x11\xd9\xd2<\x9c\xd0\xfc\x87\x13\n\x91\xc4\xefo\xf1\x94\xfd\xfdXf\xa1\xee@X\x8d\xdf\xfa\x0c\xa6!\xd4$\xb8\xeb\xcd\x1b\x85J\xa6\xb4+C\x90#\x9e\tR\x7fJ\x8c\xb5\x9d$\xed\x1eV\x08a?\xc2\x00^i\x91N\xa5\xbbC\x19\xa9\xd0]\xb9+\x9fJnQ\x82rlr\x05\xccD\x90\xc1z%\xeee\x16\xd0j\xba\x85\x01\xd7ytr\x06Z~7}\xd3d%ׯͷ\x9fPv\xa3fyG\x91\xa1\xf8\x96>L[s\x8f>\r\x10\x9a\xc1\x97\x07\x07\xb5ÍY}\u009bYnǍ\xbf_\xeb\x94\x18_\n\x9e\x93\xbc\xc2Ӣ0\xb4FO\x80A\x93hh\xcfJ\xf6S\x9f\xa1r\xf1\xce뫥\x19\xa3\x10\x06;\x8e|plx\xa2q\xeeǏ\u0092(\xd1" offset:4999: EOF before flush: sent 5000 received 5000 lastProcessedTime {2026-05-05 12:12:54.235850506 +0000 UTC 5000 false} isDone true err: EOF --- PASS: TestNewLogBufferFirstBuffer (0.03s) === RUN TestReadFromBufferTimestampBased_AfterFlushReturnsNewerData --- PASS: TestReadFromBufferTimestampBased_AfterFlushReturnsNewerData (0.00s) === RUN TestReadFromBuffer_OldOffsetReturnsResumeFromDiskError === RUN TestReadFromBuffer_OldOffsetReturnsResumeFromDiskError/Request_offset_0_when_buffer_starts_at_4_(Schema_Registry_bug_scenario) log_buffer_test.go:211: ✓ When Schema Registry tries to read from offset 0, but data has been flushed to disk: correctly returned resumeFromDisk === RUN TestReadFromBuffer_OldOffsetReturnsResumeFromDiskError/Request_offset_before_buffer_start_with_empty_buffer log_buffer_test.go:211: ✓ Old offset with no data in memory should trigger disk read: correctly returned resumeFromDisk === RUN TestReadFromBuffer_OldOffsetReturnsResumeFromDiskError/Request_offset_before_buffer_start_with_data log_buffer_test.go:211: ✓ Old offset with current data in memory should still trigger disk read: correctly returned resumeFromDisk === RUN TestReadFromBuffer_OldOffsetReturnsResumeFromDiskError/Request_current_offset_(no_disk_read_needed) log_buffer_test.go:218: ✓ Current offset should return data from memory without error: correctly returned data without error === RUN TestReadFromBuffer_OldOffsetReturnsResumeFromDiskError/Request_offset_within_buffer_range log_buffer_test.go:218: ✓ Offset within buffer range should return data without error: correctly returned data without error --- PASS: TestReadFromBuffer_OldOffsetReturnsResumeFromDiskError (0.00s) --- PASS: TestReadFromBuffer_OldOffsetReturnsResumeFromDiskError/Request_offset_0_when_buffer_starts_at_4_(Schema_Registry_bug_scenario) (0.00s) --- PASS: TestReadFromBuffer_OldOffsetReturnsResumeFromDiskError/Request_offset_before_buffer_start_with_empty_buffer (0.00s) --- PASS: TestReadFromBuffer_OldOffsetReturnsResumeFromDiskError/Request_offset_before_buffer_start_with_data (0.00s) --- PASS: TestReadFromBuffer_OldOffsetReturnsResumeFromDiskError/Request_current_offset_(no_disk_read_needed) (0.00s) --- PASS: TestReadFromBuffer_OldOffsetReturnsResumeFromDiskError/Request_offset_within_buffer_range (0.00s) === RUN TestReadFromBuffer_OldOffsetWithNoPrevBuffers log_buffer_test.go:262: DEBUG: ReadFromBuffer returned: buf=false, batchIdx=-2, err=resumeFromDisk log_buffer_test.go:263: DEBUG: Buffer state: bufferStartOffset=10, offset=15, pos=100 log_buffer_test.go:265: DEBUG: Requested offset 5, prevBuffers[0] range: [20-25] log_buffer_test.go:274: ✓ BUG FIX VERIFIED: Correctly returns ResumeFromDiskError when requesting old offset 5 log_buffer_test.go:275: This allows the subscriber to read from disk instead of waiting forever --- PASS: TestReadFromBuffer_OldOffsetWithNoPrevBuffers (0.00s) === RUN TestReadFromBuffer_EmptyBufferAtCurrentOffset log_buffer_test.go:300: DEBUG: ReadFromBuffer returned: buf=false, batchIdx=-2, err=resumeFromDisk log_buffer_test.go:301: DEBUG: Buffer state: bufferStartOffset=0, offset=4, pos=0 log_buffer_test.go:311: ✓ BUG #2 FIX VERIFIED: Empty buffer correctly returns ResumeFromDiskError to check disk --- PASS: TestReadFromBuffer_EmptyBufferAtCurrentOffset (0.00s) === RUN TestReadFromBuffer_OffsetRanges === RUN TestReadFromBuffer_OffsetRanges/Before_buffer_start log_buffer_test.go:371: ✓ Offset 5 < bufferStartOffset 10 → read from disk === RUN TestReadFromBuffer_OffsetRanges/At_buffer_start log_buffer_test.go:379: ✓ Offset 10 == bufferStartOffset 10 → read from buffer === RUN TestReadFromBuffer_OffsetRanges/Within_buffer_range log_buffer_test.go:379: ✓ Offset 15 is within [10, 20] → read from buffer === RUN TestReadFromBuffer_OffsetRanges/At_buffer_end log_buffer_test.go:379: ✓ Offset 20 == offset 20 → read from buffer === RUN TestReadFromBuffer_OffsetRanges/After_buffer_end log_buffer_test.go:379: ✓ Offset 25 > offset 20 → future data, return nil without error --- PASS: TestReadFromBuffer_OffsetRanges (0.00s) --- PASS: TestReadFromBuffer_OffsetRanges/Before_buffer_start (0.00s) --- PASS: TestReadFromBuffer_OffsetRanges/At_buffer_start (0.00s) --- PASS: TestReadFromBuffer_OffsetRanges/Within_buffer_range (0.00s) --- PASS: TestReadFromBuffer_OffsetRanges/At_buffer_end (0.00s) --- PASS: TestReadFromBuffer_OffsetRanges/After_buffer_end (0.00s) === RUN TestReadFromBuffer_InitializedFromDisk log_buffer_test.go:410: After InitializeOffsetFromExistingData(highestOffset=3): log_buffer_test.go:411: offset=4 (should be 4), bufferStartOffset=4 (FIX: should be 4, not 0) log_buffer_test.go:429: After writing new message: log_buffer_test.go:430: bufferStartOffset=4, offset=5, pos=56 log_buffer_test.go:431: Requested offset 0, got: buf=false, batchIdx=-2, err=resumeFromDisk log_buffer_test.go:449: ✓ BUG #3 FIX VERIFIED: Reading old offset 0 correctly returns ResumeFromDiskError log_buffer_test.go:450: This ensures Schema Registry reads correct data from disk instead of getting new messages --- PASS: TestReadFromBuffer_InitializedFromDisk (0.00s) === RUN TestLoopProcessLogDataWithOffset_DiskReadRetry log_buffer_test.go:481: DISK READ #1: startOffset=0, dataReady=false log_buffer_test.go:484: → No data on disk yet log_buffer_test.go:545: ➕ Marking data as ready on disk flush from 2026-05-05 12:12:54.208377276 +0000 UTC m=+1.440820944 to 2026-05-05 12:12:54.235850506 +0000 UTC m=+1.468294174 5274870 bytes log_buffer_test.go:481: DISK READ #2: startOffset=0, dataReady=true log_buffer_test.go:516: ✉️ RECEIVED: offset=0 key=key-0 log_buffer_test.go:526: 📋 Reader finished: isDone=true, err= log_buffer_test.go:561: RESULTS: log_buffer_test.go:562: Disk reads: 2 log_buffer_test.go:563: Received messages: 1 log_buffer_test.go:564: Loop iterations: 1 log_buffer_test.go:576: ✓ SUCCESS: Message received after 2 disk read attempts --- PASS: TestLoopProcessLogDataWithOffset_DiskReadRetry (2.00s) === RUN TestConcurrentProducerConsumer log_read_integration_test.go:108: Consumer 0 consumed 500 messages log_read_integration_test.go:108: Consumer 1 consumed 500 messages --- PASS: TestConcurrentProducerConsumer (1.10s) === RUN TestBackwardSeeksWhileProducing log_read_integration_test.go:183: Seeking backward from 300 to 280 log_read_integration_test.go:183: Seeking backward from 300 to 280 log_read_integration_test.go:183: Seeking backward from 300 to 280 log_read_integration_test.go:183: Seeking backward from 300 to 280 log_read_integration_test.go:183: Seeking backward from 300 to 280 log_read_integration_test.go:183: Seeking backward from 300 to 280 log_read_integration_test.go:183: Seeking backward from 300 to 280 log_read_integration_test.go:183: Seeking backward from 300 to 280 log_read_integration_test.go:183: Seeking backward from 300 to 280 log_read_integration_test.go:183: Seeking backward from 300 to 280 log_read_integration_test.go:205: Total unique offsets read: 500 out of 500 --- PASS: TestBackwardSeeksWhileProducing (0.73s) === RUN TestHighConcurrencyReads --- PASS: TestHighConcurrencyReads (0.00s) === RUN TestRepeatedReadsAtSameOffset --- PASS: TestRepeatedReadsAtSameOffset (0.00s) === RUN TestEmptyPartitionPolling --- PASS: TestEmptyPartitionPolling (0.00s) === RUN TestReadMessagesAtOffset_EmptyBuffer --- PASS: TestReadMessagesAtOffset_EmptyBuffer (0.00s) === RUN TestReadMessagesAtOffset_SingleMessage --- PASS: TestReadMessagesAtOffset_SingleMessage (0.00s) === RUN TestReadMessagesAtOffset_MultipleMessages --- PASS: TestReadMessagesAtOffset_MultipleMessages (0.00s) === RUN TestReadMessagesAtOffset_StartFromMiddle --- PASS: TestReadMessagesAtOffset_StartFromMiddle (0.00s) === RUN TestReadMessagesAtOffset_MaxBytesLimit --- PASS: TestReadMessagesAtOffset_MaxBytesLimit (0.00s) === RUN TestReadMessagesAtOffset_ConcurrentReads --- PASS: TestReadMessagesAtOffset_ConcurrentReads (0.00s) === RUN TestReadMessagesAtOffset_FutureOffset --- PASS: TestReadMessagesAtOffset_FutureOffset (0.00s) === RUN TestWaitForDataWithTimeout_DataAvailable --- PASS: TestWaitForDataWithTimeout_DataAvailable (0.00s) === RUN TestWaitForDataWithTimeout_NoData log_read_stateless_test.go:314: Waited 50.441795ms for timeout --- PASS: TestWaitForDataWithTimeout_NoData (0.05s) === RUN TestWaitForDataWithTimeout_DataArrives --- PASS: TestWaitForDataWithTimeout_DataArrives (0.06s) === RUN TestGetHighWaterMark --- PASS: TestGetHighWaterMark (0.00s) === RUN TestGetLogStartOffset --- PASS: TestGetLogStartOffset (0.00s) === RUN TestLoopProcessLogDataWithOffset_ClientDisconnect log_read_test.go:53: Loop exited cleanly in 250.420922ms after client disconnect --- PASS: TestLoopProcessLogDataWithOffset_ClientDisconnect (0.25s) === RUN TestLoopProcessLogDataWithOffset_EmptyBuffer log_read_test.go:108: Loop exited cleanly in 751.045468ms after 4 iterations (no busy-waiting detected) --- PASS: TestLoopProcessLogDataWithOffset_EmptyBuffer (0.75s) === RUN TestLoopProcessLogDataWithOffset_NoDataResumeFromDisk log_read_test.go:154: Loop exited cleanly in 4.001767849s after 3 iterations (proper sleep detected) --- PASS: TestLoopProcessLogDataWithOffset_NoDataResumeFromDisk (4.00s) === RUN TestLoopFlush_NotifiesSubscribersAfterFlush log_read_test.go:205: flush notification delivered in 10.099µs --- PASS: TestLoopFlush_NotifiesSubscribersAfterFlush (0.00s) === RUN TestLoopProcessLogDataWithOffset_WakesOnDataArrival I0505 12:13:03.248231 log_read.go:543 LoopProcessLogDataWithOffset: wake-test process log entry 1 log_read_test.go:274: reader processed the entry in 207.119µs after AddToBuffer --- PASS: TestLoopProcessLogDataWithOffset_WakesOnDataArrival (0.05s) === RUN TestLoopProcessLogDataWithOffset_WakesOnShutdown log_read_test.go:335: reader exited in 19.987µs after ShutdownLogBuffer --- PASS: TestLoopProcessLogDataWithOffset_WakesOnShutdown (0.05s) === RUN TestLoopProcessLogDataWithOffset_WithData I0505 12:13:03.299885 log_read.go:543 LoopProcessLogDataWithOffset: test-client process log entry 1 log_read_test.go:401: Successfully processed 1 message(s) in 37.701µs --- PASS: TestLoopProcessLogDataWithOffset_WithData (0.00s) === RUN TestLoopProcessLogDataWithOffset_ConcurrentDisconnect log_read_test.go:449: All 10 concurrent clients exited cleanly --- PASS: TestLoopProcessLogDataWithOffset_ConcurrentDisconnect (0.25s) === RUN TestLoopProcessLogDataWithOffset_StopTime log_read_test.go:488: Loop correctly exited for past stopTsNs in 10.7µs (waitForDataFn called 0 times) --- PASS: TestLoopProcessLogDataWithOffset_StopTime (0.00s) === RUN TestLoopProcessLogData_SlowConsumerFallsBehind --- PASS: TestLoopProcessLogData_SlowConsumerFallsBehind (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/util/log_buffer 10.794s === RUN TestAllocateFree --- PASS: TestAllocateFree (0.00s) === RUN TestAllocateFreeEdgeCases --- PASS: TestAllocateFreeEdgeCases (0.00s) === RUN TestBitCount --- PASS: TestBitCount (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/util/mem 0.003s === RUN TestQuoteDSNValue --- PASS: TestQuoteDSNValue (0.00s) === RUN TestBuildDSN_QuotesProblematicValues --- PASS: TestBuildDSN_QuotesProblematicValues (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/util/pgxutil 0.003s === RUN TestNewUsesUppercaseHexFormat --- PASS: TestNewUsesUppercaseHexFormat (0.00s) === RUN TestNewIsUnique --- PASS: TestNewIsUnique (0.00s) === RUN TestEnsureIgnoresClientHeader --- PASS: TestEnsureIgnoresClientHeader (0.00s) === RUN TestEnsureReusesContextID --- PASS: TestEnsureReusesContextID (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/util/request_id 0.003s === RUN TestNameList 0 1 10 11 12 13 14 15 16 17 18 19 2 20 21 22 23 24 25 26 27 28 29 3 30 31 32 33 34 35 36 37 38 39 4 40 41 42 43 44 45 46 47 48 49 5 50 51 52 53 54 55 56 57 58 59 6 60 61 62 63 64 65 66 67 68 69 7 70 71 72 73 74 75 76 77 78 79 8 80 81 82 83 84 85 86 87 88 89 9 90 91 92 93 94 95 96 97 98 99 --- PASS: TestNameList (0.07s) === RUN TestReverseInsert --- PASS: TestReverseInsert (0.00s) === RUN TestInsertAndFind --- PASS: TestInsertAndFind (0.04s) === RUN TestDelete --- PASS: TestDelete (0.05s) === RUN TestNext --- PASS: TestNext (0.01s) === RUN TestPrev --- PASS: TestPrev (0.01s) === RUN TestFindGreaterOrEqual --- PASS: TestFindGreaterOrEqual (0.02s) === RUN TestChangeValue --- PASS: TestChangeValue (0.03s) PASS ok github.com/seaweedfs/seaweedfs/weed/util/skiplist 0.236s === RUN TestSplitStatements === RUN TestSplitStatements/Simple_single_statement === RUN TestSplitStatements/Multiple_statements === RUN TestSplitStatements/Semicolon_in_single_quotes === RUN TestSplitStatements/Semicolon_in_double_quotes === RUN TestSplitStatements/Escaped_quotes_in_strings === RUN TestSplitStatements/Escaped_quotes_in_identifiers === RUN TestSplitStatements/Single_line_comment === RUN TestSplitStatements/Single_line_comment_with_semicolon === RUN TestSplitStatements/Multi-line_comment === RUN TestSplitStatements/Multi-line_comment_with_semicolon === RUN TestSplitStatements/Complex_mixed_case === RUN TestSplitStatements/Empty_statements_filtered === RUN TestSplitStatements/Whitespace_handling === RUN TestSplitStatements/Single_statement_without_semicolon === RUN TestSplitStatements/Empty_query === RUN TestSplitStatements/Only_whitespace --- PASS: TestSplitStatements (0.00s) --- PASS: TestSplitStatements/Simple_single_statement (0.00s) --- PASS: TestSplitStatements/Multiple_statements (0.00s) --- PASS: TestSplitStatements/Semicolon_in_single_quotes (0.00s) --- PASS: TestSplitStatements/Semicolon_in_double_quotes (0.00s) --- PASS: TestSplitStatements/Escaped_quotes_in_strings (0.00s) --- PASS: TestSplitStatements/Escaped_quotes_in_identifiers (0.00s) --- PASS: TestSplitStatements/Single_line_comment (0.00s) --- PASS: TestSplitStatements/Single_line_comment_with_semicolon (0.00s) --- PASS: TestSplitStatements/Multi-line_comment (0.00s) --- PASS: TestSplitStatements/Multi-line_comment_with_semicolon (0.00s) --- PASS: TestSplitStatements/Complex_mixed_case (0.00s) --- PASS: TestSplitStatements/Empty_statements_filtered (0.00s) --- PASS: TestSplitStatements/Whitespace_handling (0.00s) --- PASS: TestSplitStatements/Single_statement_without_semicolon (0.00s) --- PASS: TestSplitStatements/Empty_query (0.00s) --- PASS: TestSplitStatements/Only_whitespace (0.00s) === RUN TestSplitStatements_EdgeCases === RUN TestSplitStatements_EdgeCases/Nested_comments_are_not_supported_but_handled_gracefully === RUN TestSplitStatements_EdgeCases/Unterminated_string_(malformed_SQL) === RUN TestSplitStatements_EdgeCases/Unterminated_comment_(malformed_SQL) === RUN TestSplitStatements_EdgeCases/Multiple_semicolons_in_quotes --- PASS: TestSplitStatements_EdgeCases (0.00s) --- PASS: TestSplitStatements_EdgeCases/Nested_comments_are_not_supported_but_handled_gracefully (0.00s) --- PASS: TestSplitStatements_EdgeCases/Unterminated_string_(malformed_SQL) (0.00s) --- PASS: TestSplitStatements_EdgeCases/Unterminated_comment_(malformed_SQL) (0.00s) --- PASS: TestSplitStatements_EdgeCases/Multiple_semicolons_in_quotes (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/util/sqlutil 0.002s ? github.com/seaweedfs/seaweedfs/weed/util/version [no test files] === RUN TestMatchesWildcard === RUN TestMatchesWildcard/Exact_match === RUN TestMatchesWildcard/Single_wildcard === RUN TestMatchesWildcard/Empty_string_with_wildcard === RUN TestMatchesWildcard/Prefix_wildcard === RUN TestMatchesWildcard/Suffix_wildcard === RUN TestMatchesWildcard/Middle_wildcard === RUN TestMatchesWildcard/Multiple_wildcards === RUN TestMatchesWildcard/No_match === RUN TestMatchesWildcard/Single_question_mark === RUN TestMatchesWildcard/Multiple_question_marks === RUN TestMatchesWildcard/Question_mark_no_match === RUN TestMatchesWildcard/Mixed_wildcards === RUN TestMatchesWildcard/Empty_pattern === RUN TestMatchesWildcard/Empty_pattern_with_string === RUN TestMatchesWildcard/Pattern_with_string_empty === RUN TestMatchesWildcard/Pattern_with_regex_special_chars === RUN TestMatchesWildcard/Pattern_with_dots === RUN TestMatchesWildcard/Pattern_with_dots_and_wildcard --- PASS: TestMatchesWildcard (0.00s) --- PASS: TestMatchesWildcard/Exact_match (0.00s) --- PASS: TestMatchesWildcard/Single_wildcard (0.00s) --- PASS: TestMatchesWildcard/Empty_string_with_wildcard (0.00s) --- PASS: TestMatchesWildcard/Prefix_wildcard (0.00s) --- PASS: TestMatchesWildcard/Suffix_wildcard (0.00s) --- PASS: TestMatchesWildcard/Middle_wildcard (0.00s) --- PASS: TestMatchesWildcard/Multiple_wildcards (0.00s) --- PASS: TestMatchesWildcard/No_match (0.00s) --- PASS: TestMatchesWildcard/Single_question_mark (0.00s) --- PASS: TestMatchesWildcard/Multiple_question_marks (0.00s) --- PASS: TestMatchesWildcard/Question_mark_no_match (0.00s) --- PASS: TestMatchesWildcard/Mixed_wildcards (0.00s) --- PASS: TestMatchesWildcard/Empty_pattern (0.00s) --- PASS: TestMatchesWildcard/Empty_pattern_with_string (0.00s) --- PASS: TestMatchesWildcard/Pattern_with_string_empty (0.00s) --- PASS: TestMatchesWildcard/Pattern_with_regex_special_chars (0.00s) --- PASS: TestMatchesWildcard/Pattern_with_dots (0.00s) --- PASS: TestMatchesWildcard/Pattern_with_dots_and_wildcard (0.00s) === RUN TestWildcardMatcherMatch === RUN TestWildcardMatcherMatch/Simple_star === RUN TestWildcardMatcherMatch/Question_mark === RUN TestWildcardMatcherMatch/Extension_filter --- PASS: TestWildcardMatcherMatch (0.00s) --- PASS: TestWildcardMatcherMatch/Simple_star (0.00s) --- PASS: TestWildcardMatcherMatch/Question_mark (0.00s) --- PASS: TestWildcardMatcherMatch/Extension_filter (0.00s) === RUN TestCompileWildcardPattern === RUN TestCompileWildcardPattern/s3:Get* === RUN TestCompileWildcardPattern/s3:Get?bject === RUN TestCompileWildcardPattern/s3:*Object* --- PASS: TestCompileWildcardPattern (0.00s) --- PASS: TestCompileWildcardPattern/s3:Get* (0.00s) --- PASS: TestCompileWildcardPattern/s3:Get?bject (0.00s) --- PASS: TestCompileWildcardPattern/s3:*Object* (0.00s) === RUN TestFastMatchesWildcard === RUN TestFastMatchesWildcard/s3:Get*_s3:GetObject === RUN TestFastMatchesWildcard/s3:Put*_s3:GetObject === RUN TestFastMatchesWildcard/arn:aws:s3:::bucket/*_arn:aws:s3:::bucket/file.txt === RUN TestFastMatchesWildcard/user:admin-*_user:admin-john === RUN TestFastMatchesWildcard/user:admin-*_user:guest-john --- PASS: TestFastMatchesWildcard (0.00s) --- PASS: TestFastMatchesWildcard/s3:Get*_s3:GetObject (0.00s) --- PASS: TestFastMatchesWildcard/s3:Put*_s3:GetObject (0.00s) --- PASS: TestFastMatchesWildcard/arn:aws:s3:::bucket/*_arn:aws:s3:::bucket/file.txt (0.00s) --- PASS: TestFastMatchesWildcard/user:admin-*_user:admin-john (0.00s) --- PASS: TestFastMatchesWildcard/user:admin-*_user:guest-john (0.00s) === RUN TestWildcardMatcherCaching --- PASS: TestWildcardMatcherCaching (0.00s) === RUN TestWildcardMatcherCacheBounding --- PASS: TestWildcardMatcherCacheBounding (0.00s) === RUN TestWildcardMatcherCacheLRU --- PASS: TestWildcardMatcherCacheLRU (0.00s) === RUN TestWildcardMatcherCacheClear --- PASS: TestWildcardMatcherCacheClear (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/util/wildcard 0.003s === RUN TestLookupVolumeIdsRetriesOnUnavailable --- PASS: TestLookupVolumeIdsRetriesOnUnavailable (4.78s) === RUN TestLookupVolumeIdsStopsOnContextCancel --- PASS: TestLookupVolumeIdsStopsOnContextCancel (2.00s) === RUN TestWaitUntilConnectedWithoutKeepConnected --- PASS: TestWaitUntilConnectedWithoutKeepConnected (0.10s) === RUN TestWaitUntilConnectedReturnsImmediatelyWhenConnected --- PASS: TestWaitUntilConnectedReturnsImmediatelyWhenConnected (0.00s) === RUN TestGetMasterRespectsContextCancellation --- PASS: TestGetMasterRespectsContextCancellation (0.10s) === RUN TestMasterClientFilerGroupLogging --- PASS: TestMasterClientFilerGroupLogging (0.00s) === RUN TestLookupFileId --- PASS: TestLookupFileId (0.00s) === RUN TestConcurrentGetLocations --- PASS: TestConcurrentGetLocations (1.09s) === RUN TestInvalidateCacheValidFileId --- PASS: TestInvalidateCacheValidFileId (0.00s) === RUN TestInvalidateCacheInvalidFileId === RUN TestInvalidateCacheInvalidFileId/empty_file_ID === RUN TestInvalidateCacheInvalidFileId/no_comma_separator === RUN TestInvalidateCacheInvalidFileId/non-numeric_vid === RUN TestInvalidateCacheInvalidFileId/negative_vid === RUN TestInvalidateCacheInvalidFileId/oversized_vid --- PASS: TestInvalidateCacheInvalidFileId (0.00s) --- PASS: TestInvalidateCacheInvalidFileId/empty_file_ID (0.00s) --- PASS: TestInvalidateCacheInvalidFileId/no_comma_separator (0.00s) --- PASS: TestInvalidateCacheInvalidFileId/non-numeric_vid (0.00s) --- PASS: TestInvalidateCacheInvalidFileId/negative_vid (0.00s) --- PASS: TestInvalidateCacheInvalidFileId/oversized_vid (0.00s) === RUN TestInvalidateCacheWithHistory --- PASS: TestInvalidateCacheWithHistory (0.00s) === RUN TestDeleteVidRecursion --- PASS: TestDeleteVidRecursion (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/wdclient 8.088s ? github.com/seaweedfs/seaweedfs/weed/wdclient/exclusive_locks [no test files] ? github.com/seaweedfs/seaweedfs/weed/worker [no test files] ? github.com/seaweedfs/seaweedfs/weed/worker/tasks [no test files] === RUN TestIntegration_DCFilterWithVolumeState I0505 12:12:53.089490 detection.go:248 BALANCE [hdd]: Created 13 task(s), cluster now balanced. Imbalance=16.0% (threshold=20.0%) detection_integration_test.go:147: DC+state filter: 13 tasks, effective=map[node-a:27 node-b:23] --- PASS: TestIntegration_DCFilterWithVolumeState (0.00s) === RUN TestIntegration_NodeFilterWithCollections I0505 12:12:53.089732 detection.go:248 BALANCE [hdd]: Created 18 task(s), cluster now balanced. Imbalance=13.3% (threshold=20.0%) detection_integration_test.go:206: Node filter with mixed collections: 18 tasks --- PASS: TestIntegration_NodeFilterWithCollections (0.00s) === RUN TestIntegration_ReplicaPlacementWithDCFilter I0505 12:12:53.090302 detection.go:248 BALANCE [hdd]: Created 11 task(s), cluster now balanced. Imbalance=17.1% (threshold=20.0%) detection_integration_test.go:287: Replica placement + DC filter: 11 tasks --- PASS: TestIntegration_ReplicaPlacementWithDCFilter (0.00s) === RUN TestIntegration_RackFilterWithReplicaPlacement I0505 12:12:53.090482 detection.go:248 BALANCE [hdd]: Created 11 task(s), cluster now balanced. Imbalance=17.1% (threshold=20.0%) detection_integration_test.go:361: Rack filter + replica placement: 11 tasks --- PASS: TestIntegration_RackFilterWithReplicaPlacement (0.00s) === RUN TestIntegration_AllFactors I0505 12:12:53.090699 detection.go:248 BALANCE [hdd]: Created 9 task(s), cluster now balanced. Imbalance=13.3% (threshold=20.0%) detection_integration_test.go:469: All factors combined: 9 tasks, effective=map[node-a:16 node-b:14] --- PASS: TestIntegration_AllFactors (0.00s) === RUN TestIntegration_FullVolumesOnlyBalancing I0505 12:12:53.090874 detection.go:248 BALANCE [hdd]: Created 11 task(s), cluster now balanced. Imbalance=17.1% (threshold=20.0%) detection_integration_test.go:512: Full-only balancing: 11 tasks --- PASS: TestIntegration_FullVolumesOnlyBalancing (0.00s) === RUN TestDetection_MixedDiskTypes I0505 12:12:53.091090 detection.go:245 BALANCE [hdd]: No tasks created - cluster well balanced. Imbalance=0.0% (threshold=20.0%). MaxUtil=10.0% on hdd-server-1, MinUtil=10.0% on hdd-server-1 I0505 12:12:53.091100 detection.go:245 BALANCE [ssd]: No tasks created - cluster well balanced. Imbalance=0.0% (threshold=20.0%). MaxUtil=1.0% on ssd-server-1, MinUtil=1.0% on ssd-server-1 --- PASS: TestDetection_MixedDiskTypes (0.00s) === RUN TestDetection_ImbalancedDiskType I0505 12:12:53.091515 detection.go:248 BALANCE [ssd]: Created 40 task(s), cluster now balanced. Imbalance=18.2% (threshold=20.0%) --- PASS: TestDetection_ImbalancedDiskType (0.00s) === RUN TestDetection_RespectsMaxResults I0505 12:12:53.092079 detection.go:248 BALANCE [ssd]: Created 40 task(s), cluster now balanced. Imbalance=18.2% (threshold=20.0%) --- PASS: TestDetection_RespectsMaxResults (0.00s) === RUN TestDetection_ThreeServers_ConvergesToBalance I0505 12:12:53.092581 detection.go:248 BALANCE [hdd]: Created 23 task(s), cluster now balanced. Imbalance=17.6% (threshold=20.0%) --- PASS: TestDetection_ThreeServers_ConvergesToBalance (0.00s) === RUN TestDetection_SkipsPreExistingPendingTasks I0505 12:12:53.092698 detection.go:248 BALANCE [hdd]: Created 5 task(s), cluster now balanced. Imbalance=0.0% (threshold=20.0%) --- PASS: TestDetection_SkipsPreExistingPendingTasks (0.00s) === RUN TestDetection_NoDuplicateVolumesAcrossIterations I0505 12:12:53.092803 detection.go:248 BALANCE [ssd]: Created 18 task(s), cluster now balanced. Imbalance=13.3% (threshold=20.0%) --- PASS: TestDetection_NoDuplicateVolumesAcrossIterations (0.00s) === RUN TestDetection_ThreeServers_MaxServerShifts I0505 12:12:53.092931 detection.go:248 BALANCE [hdd]: Created 16 task(s), cluster now balanced. Imbalance=17.5% (threshold=20.0%) --- PASS: TestDetection_ThreeServers_MaxServerShifts (0.00s) === RUN TestDetection_FourServers_DestinationSpreading I0505 12:12:53.093211 detection.go:248 BALANCE [ssd]: Created 54 task(s), cluster now balanced. Imbalance=12.2% (threshold=20.0%) --- PASS: TestDetection_FourServers_DestinationSpreading (0.00s) === RUN TestDetection_ConvergenceVerification === RUN TestDetection_ConvergenceVerification/2-server-big-gap I0505 12:12:53.093470 detection.go:248 BALANCE [hdd]: Created 40 task(s), cluster now balanced. Imbalance=18.2% (threshold=20.0%) detection_test.go:782: 2-server-big-gap: 40 moves, effective=map[node-0:60 node-1:50], imbalance=18.2% === RUN TestDetection_ConvergenceVerification/3-server-staircase I0505 12:12:53.093744 detection.go:248 BALANCE [hdd]: Created 36 task(s), cluster now balanced. Imbalance=16.0% (threshold=20.0%) detection_test.go:782: 3-server-staircase: 36 moves, effective=map[node-0:54 node-1:50 node-2:46], imbalance=16.0% === RUN TestDetection_ConvergenceVerification/4-server-one-hot I0505 12:12:53.094364 detection.go:248 BALANCE [hdd]: Created 126 task(s), cluster now balanced. Imbalance=17.6% (threshold=20.0%) detection_test.go:782: 4-server-one-hot: 126 moves, effective=map[node-0:74 node-1:62 node-2:62 node-3:62], imbalance=18.5% === RUN TestDetection_ConvergenceVerification/3-server-tight-threshold I0505 12:12:53.094466 detection.go:248 BALANCE [hdd]: Created 10 task(s), cluster now balanced. Imbalance=0.0% (threshold=10.0%) detection_test.go:782: 3-server-tight-threshold: 10 moves, effective=map[node-0:20 node-1:20 node-2:20], imbalance=0.0% --- PASS: TestDetection_ConvergenceVerification (0.00s) --- PASS: TestDetection_ConvergenceVerification/2-server-big-gap (0.00s) --- PASS: TestDetection_ConvergenceVerification/3-server-staircase (0.00s) --- PASS: TestDetection_ConvergenceVerification/4-server-one-hot (0.00s) --- PASS: TestDetection_ConvergenceVerification/3-server-tight-threshold (0.00s) === RUN TestDetection_ExhaustedServerFallsThrough I0505 12:12:53.094667 detection.go:248 BALANCE [hdd]: Created 23 task(s), cluster now balanced. Imbalance=16.0% (threshold=20.0%) detection_test.go:854: Created 23 tasks from node-b after node-a exhausted --- PASS: TestDetection_ExhaustedServerFallsThrough (0.00s) === RUN TestDetection_HeterogeneousCapacity detection_test.go:919: First balance task: move from server-3 (correct: highest utilization) --- PASS: TestDetection_HeterogeneousCapacity (0.00s) === RUN TestDetection_ZeroVolumeServerIncludedInBalance I0505 12:12:53.095767 detection.go:275 BALANCE [hdd]: Created 5 task(s), cluster as balanced as possible. Imbalance=40.0% (threshold=20.0%), max-min diff=1 detection_test.go:1001: Distribution 8/2/1/0 → map[node-a:3 node-b:3 node-c:3 node-d:2] after 5 moves (imbalance=36.4%) --- PASS: TestDetection_ZeroVolumeServerIncludedInBalance (0.00s) === RUN TestDetection_DataCenterFilter I0505 12:12:53.095877 detection.go:248 BALANCE [hdd]: Created 18 task(s), cluster now balanced. Imbalance=13.3% (threshold=20.0%) detection_test.go:1058: Created 18 tasks within dc1 scope --- PASS: TestDetection_DataCenterFilter (0.00s) === RUN TestDetection_NodeFilter I0505 12:12:53.095976 detection.go:248 BALANCE [hdd]: Created 18 task(s), cluster now balanced. Imbalance=13.3% (threshold=20.0%) detection_test.go:1111: Created 18 tasks within node-a,node-b scope --- PASS: TestDetection_NodeFilter (0.00s) === RUN TestDetection_HeterogeneousMax_NoOvershootNoOscillation I0505 12:12:53.096006 detection.go:303 BALANCE [hdd]: No tasks created - no beneficial move available. After move, dest node-b util would be 60.0% vs source node-a util 50.0% detection_test.go:1220: tasks=0, effective=map[node-a:11 node-b:5], final diff=0.050 (initial=0.050) --- PASS: TestDetection_HeterogeneousMax_NoOvershootNoOscillation (0.00s) === RUN TestDetection_RespectsClusterIdealUtilization I0505 12:12:53.096070 detection.go:248 BALANCE [hdd]: Created 3 task(s), cluster now balanced. Imbalance=11.8% (threshold=20.0%) detection_test.go:1278: tasks=3, effective=map[node-a:18 node-b:9 node-c:4], ideal=0.443 --- PASS: TestDetection_RespectsClusterIdealUtilization (0.00s) === RUN TestResolveBalanceDestination_UsesEffectiveCapacity --- PASS: TestResolveBalanceDestination_UsesEffectiveCapacity (0.00s) === RUN TestDecodeVolumeBalanceTaskParamsFromPayload --- PASS: TestDecodeVolumeBalanceTaskParamsFromPayload (0.00s) === RUN TestDecodeVolumeBalanceTaskParamsFallback --- PASS: TestDecodeVolumeBalanceTaskParamsFallback (0.00s) === RUN TestDeriveBalanceWorkerConfig --- PASS: TestDeriveBalanceWorkerConfig (0.00s) === RUN TestDeriveBalanceWorkerConfigBatchFields --- PASS: TestDeriveBalanceWorkerConfigBatchFields (0.00s) === RUN TestDeriveBalanceWorkerConfigBatchClamping --- PASS: TestDeriveBalanceWorkerConfigBatchClamping (0.00s) === RUN TestBuildBatchVolumeBalanceProposals_SingleBatch --- PASS: TestBuildBatchVolumeBalanceProposals_SingleBatch (0.00s) === RUN TestBuildBatchVolumeBalanceProposals_MultipleBatches --- PASS: TestBuildBatchVolumeBalanceProposals_MultipleBatches (0.00s) === RUN TestBuildBatchVolumeBalanceProposals_BatchSizeOne --- PASS: TestBuildBatchVolumeBalanceProposals_BatchSizeOne (0.00s) === RUN TestVolumeBalanceDescriptorHasBatchFields --- PASS: TestVolumeBalanceDescriptorHasBatchFields (0.00s) === RUN TestBuildVolumeBalanceProposal --- PASS: TestBuildVolumeBalanceProposal (0.00s) === RUN TestVolumeBalanceHandlerRejectsUnsupportedJobType --- PASS: TestVolumeBalanceHandlerRejectsUnsupportedJobType (0.00s) === RUN TestEmitVolumeBalanceDetectionDecisionTraceNoTasks --- PASS: TestEmitVolumeBalanceDetectionDecisionTraceNoTasks (0.00s) === RUN TestVolumeBalanceDescriptorOmitsExecutionTuningFields --- PASS: TestVolumeBalanceDescriptorOmitsExecutionTuningFields (0.00s) === RUN TestBuildMoveTaskParams --- PASS: TestBuildMoveTaskParams (0.00s) === RUN TestBuildMoveTaskParamsDefaultTimeout --- PASS: TestBuildMoveTaskParamsDefaultTimeout (0.00s) === RUN TestExecuteDispatchesBatchPath I0505 12:12:53.097471 plugin_handler.go:812 batch volume balance: 2 moves, max concurrent 2 I0505 12:12:53.097768 task.go:63 Starting balance task - moving volume I0505 12:12:53.097772 task.go:63 Starting balance task - moving volume I0505 12:12:53.097785 task.go:63 Marking volume readonly for move I0505 12:12:53.097800 task.go:63 Marking volume readonly for move W0505 12:12:53.097814 plugin_handler.go:921 batch balance move 1 failed: volume 2 s2:8080→t2:8080: failed to mark volume readonly: getOrCreateConnection s2:18080: fail to dial s2:18080: grpc: no transport security set (use grpc.WithTransportCredentials(insecure.NewCredentials()) explicitly or set credentials) W0505 12:12:53.097958 plugin_handler.go:921 batch balance move 0 failed: volume 1 s1:8080→t1:8080: failed to mark volume readonly: getOrCreateConnection s1:18080: fail to dial s1:18080: grpc: no transport security set (use grpc.WithTransportCredentials(insecure.NewCredentials()) explicitly or set credentials) --- PASS: TestExecuteDispatchesBatchPath (0.00s) === RUN TestExecuteSingleMovePathUnchanged I0505 12:12:53.098070 task.go:63 Starting balance task - moving volume I0505 12:12:53.098083 task.go:63 Marking volume readonly for move --- PASS: TestExecuteSingleMovePathUnchanged (0.00s) === RUN TestFilterMetricsByLocation --- PASS: TestFilterMetricsByLocation (0.00s) === RUN TestFilterMetricsByVolumeState === RUN TestFilterMetricsByVolumeState/ALL_returns_everything === RUN TestFilterMetricsByVolumeState/empty_string_returns_everything === RUN TestFilterMetricsByVolumeState/ACTIVE_keeps_FullnessRatio_below_1.01 === RUN TestFilterMetricsByVolumeState/FULL_keeps_FullnessRatio_at_or_above_1.01 === RUN TestFilterMetricsByVolumeState/unknown_value_returns_everything --- PASS: TestFilterMetricsByVolumeState (0.00s) --- PASS: TestFilterMetricsByVolumeState/ALL_returns_everything (0.00s) --- PASS: TestFilterMetricsByVolumeState/empty_string_returns_everything (0.00s) --- PASS: TestFilterMetricsByVolumeState/ACTIVE_keeps_FullnessRatio_below_1.01 (0.00s) --- PASS: TestFilterMetricsByVolumeState/FULL_keeps_FullnessRatio_at_or_above_1.01 (0.00s) --- PASS: TestFilterMetricsByVolumeState/unknown_value_returns_everything (0.00s) === RUN TestFilterMetricsByVolumeState_NilElement --- PASS: TestFilterMetricsByVolumeState_NilElement (0.00s) === RUN TestFilterMetricsByVolumeState_EmptyInput --- PASS: TestFilterMetricsByVolumeState_EmptyInput (0.00s) === RUN TestVolumeBalanceDescriptorHasVolumeStateField --- PASS: TestVolumeBalanceDescriptorHasVolumeStateField (0.00s) === RUN TestIsGoodMove_NoReplication --- PASS: TestIsGoodMove_NoReplication (0.00s) === RUN TestIsGoodMove_001_SameRack --- PASS: TestIsGoodMove_001_SameRack (0.00s) === RUN TestIsGoodMove_010_DiffRack --- PASS: TestIsGoodMove_010_DiffRack (0.00s) === RUN TestIsGoodMove_100_DiffDC --- PASS: TestIsGoodMove_100_DiffDC (0.00s) === RUN TestIsGoodMove_SameNode --- PASS: TestIsGoodMove_SameNode (0.00s) === RUN TestIsGoodMove_011_Composite --- PASS: TestIsGoodMove_011_Composite (0.00s) === RUN TestIsGoodMove_110_Composite --- PASS: TestIsGoodMove_110_Composite (0.00s) === RUN TestIsGoodMove_NilReplicaPlacement --- PASS: TestIsGoodMove_NilReplicaPlacement (0.00s) === RUN TestCalculateBalanceScore_ReplicationAware --- PASS: TestCalculateBalanceScore_ReplicationAware (0.00s) === RUN TestPlanBalanceDestination_ChoosesBestValidCompositeDestination --- PASS: TestPlanBalanceDestination_ChoosesBestValidCompositeDestination (0.00s) === RUN TestCreateBalanceTask_FallbackSelectsValidCompositeDestination --- PASS: TestCreateBalanceTask_FallbackSelectsValidCompositeDestination (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/worker/tasks/balance 0.020s ? github.com/seaweedfs/seaweedfs/weed/worker/tasks/base [no test files] === RUN TestShardBitCount --- PASS: TestShardBitCount (0.00s) === RUN TestCeilDivide --- PASS: TestCeilDivide (0.00s) === RUN TestDetectDuplicateShards --- PASS: TestDetectDuplicateShards (0.00s) === RUN TestDetectCrossRackImbalance --- PASS: TestDetectCrossRackImbalance (0.00s) === RUN TestDetectCrossRackImbalanceBelowThreshold --- PASS: TestDetectCrossRackImbalanceBelowThreshold (0.00s) === RUN TestDetectWithinRackImbalance --- PASS: TestDetectWithinRackImbalance (0.00s) === RUN TestDetectGlobalImbalance --- PASS: TestDetectGlobalImbalance (0.00s) === RUN TestDetectGlobalImbalance_HeterogeneousCapacity --- PASS: TestDetectGlobalImbalance_HeterogeneousCapacity (0.00s) === RUN TestDetectGlobalImbalanceSkipsFullNodes --- PASS: TestDetectGlobalImbalanceSkipsFullNodes (0.00s) === RUN TestBuildECTopology --- PASS: TestBuildECTopology (0.00s) === RUN TestBuildECTopologyCrossDCRackNames --- PASS: TestBuildECTopologyCrossDCRackNames (0.00s) === RUN TestCollectECCollections --- PASS: TestCollectECCollections (0.00s) === RUN TestCollectECCollectionsWithFilter --- PASS: TestCollectECCollectionsWithFilter (0.00s) === RUN TestDetectionDisabled --- PASS: TestDetectionDisabled (0.00s) === RUN TestDetectionNilTopology --- PASS: TestDetectionNilTopology (0.00s) === RUN TestMovePhasePriority --- PASS: TestMovePhasePriority (0.00s) === RUN TestExceedsImbalanceThreshold --- PASS: TestExceedsImbalanceThreshold (0.00s) === RUN TestDeriveECBalanceWorkerConfig === RUN TestDeriveECBalanceWorkerConfig/nil_values_uses_defaults === RUN TestDeriveECBalanceWorkerConfig/custom_threshold === RUN TestDeriveECBalanceWorkerConfig/threshold_clamped_to_min === RUN TestDeriveECBalanceWorkerConfig/threshold_clamped_to_max === RUN TestDeriveECBalanceWorkerConfig/min_server_count_clamped_to_2 --- PASS: TestDeriveECBalanceWorkerConfig (0.00s) --- PASS: TestDeriveECBalanceWorkerConfig/nil_values_uses_defaults (0.00s) --- PASS: TestDeriveECBalanceWorkerConfig/custom_threshold (0.00s) --- PASS: TestDeriveECBalanceWorkerConfig/threshold_clamped_to_min (0.00s) --- PASS: TestDeriveECBalanceWorkerConfig/threshold_clamped_to_max (0.00s) --- PASS: TestDeriveECBalanceWorkerConfig/min_server_count_clamped_to_2 (0.00s) === RUN TestBuildECBalanceProposal --- PASS: TestBuildECBalanceProposal (0.00s) === RUN TestBuildECBalanceProposalNilResult --- PASS: TestBuildECBalanceProposalNilResult (0.00s) === RUN TestDecodeECBalanceTaskParamsFromProtobuf --- PASS: TestDecodeECBalanceTaskParamsFromProtobuf (0.00s) === RUN TestDecodeECBalanceTaskParamsFallback --- PASS: TestDecodeECBalanceTaskParamsFallback (0.00s) === RUN TestDecodeECBalanceTaskParamsProtobufValidation --- PASS: TestDecodeECBalanceTaskParamsProtobufValidation (0.00s) === RUN TestDecodeECBalanceTaskParamsMissingShardID --- PASS: TestDecodeECBalanceTaskParamsMissingShardID (0.00s) === RUN TestECBalanceHandlerCapability --- PASS: TestECBalanceHandlerCapability (0.00s) === RUN TestECBalanceConfigRoundTrip --- PASS: TestECBalanceConfigRoundTrip (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/worker/tasks/ec_balance 0.016s === RUN TestECPlacementPlannerApplyReservations --- PASS: TestECPlacementPlannerApplyReservations (0.00s) === RUN TestPlanECDestinationsUsesPlanner --- PASS: TestPlanECDestinationsUsesPlanner (0.00s) === RUN TestECPlacementPlannerPrefersTaggedDisks --- PASS: TestECPlacementPlannerPrefersTaggedDisks (0.00s) === RUN TestECPlacementPlannerFallsBackWhenTagsInsufficient --- PASS: TestECPlacementPlannerFallsBackWhenTagsInsufficient (0.00s) === RUN TestDetectionContextCancellation --- PASS: TestDetectionContextCancellation (0.00s) === RUN TestDetectionMaxResultsHonorsLimit I0505 12:12:53.114863 detection.go:124 EC Detection: Volume 1 meets all criteria, attempting to create task I0505 12:12:53.115018 detection.go:150 EC Detection: ActiveTopology available, planning destinations for volume 1 I0505 12:12:53.115030 detection.go:167 EC Detection: Successfully planned 4 destinations for volume 1 I0505 12:12:53.115034 detection.go:184 EC Detection: Looking for replica locations for volume 1 I0505 12:12:53.115038 detection.go:190 EC Detection: Found 4 replica locations for volume 1 I0505 12:12:53.115051 detection.go:298 EC Detection: Successfully created EC task for volume 1, adding to results --- PASS: TestDetectionMaxResultsHonorsLimit (0.00s) === RUN TestPlanECDestinationsFailsWithInsufficientCapacity --- PASS: TestPlanECDestinationsFailsWithInsufficientCapacity (0.00s) === RUN TestDeleteOriginalVolumeSurfacesReplicaFailures I0505 12:13:02.032336 task.go:63 Starting original volume deletion from replica servers I0505 12:13:02.032349 task.go:63 Deleting volume from replica server I0505 12:13:02.033268 task.go:63 Successfully deleted volume from replica server I0505 12:13:02.033276 task.go:63 Deleting volume from replica server E0505 12:13:02.033658 task.go:79 Failed to delete volume from replica server E0505 12:13:02.034097 task.go:79 Failed to delete some original volume replicas after EC encoding --- PASS: TestDeleteOriginalVolumeSurfacesReplicaFailures (18.96s) === RUN TestDeleteOriginalVolumeSucceedsWhenAllReplicasReachable I0505 12:13:12.488419 task.go:63 Starting original volume deletion from replica servers I0505 12:13:12.488433 task.go:63 Deleting volume from replica server I0505 12:13:12.490359 task.go:63 Successfully deleted volume from replica server I0505 12:13:12.490369 task.go:63 Successfully deleted volume from all replica servers --- PASS: TestDeleteOriginalVolumeSucceedsWhenAllReplicasReachable (10.43s) === RUN TestCopyVolumeFilesToWorkerUsesCurrentCompactionRevision I0505 12:13:22.930576 task.go:63 Starting volume file copy from source server I0505 12:13:22.930923 task.go:63 Volume index file copied successfully I0505 12:13:22.931153 task.go:63 Volume data file copied successfully --- PASS: TestCopyVolumeFilesToWorkerUsesCurrentCompactionRevision (10.44s) === RUN TestDecodeErasureCodingTaskParamsFromPayload --- PASS: TestDecodeErasureCodingTaskParamsFromPayload (0.00s) === RUN TestDecodeErasureCodingTaskParamsFallback --- PASS: TestDecodeErasureCodingTaskParamsFallback (0.00s) === RUN TestDeriveErasureCodingWorkerConfig --- PASS: TestDeriveErasureCodingWorkerConfig (0.00s) === RUN TestBuildErasureCodingProposal --- PASS: TestBuildErasureCodingProposal (0.00s) === RUN TestErasureCodingHandlerRejectsUnsupportedJobType --- PASS: TestErasureCodingHandlerRejectsUnsupportedJobType (0.00s) === RUN TestEmitErasureCodingDetectionDecisionTraceNoTasks --- PASS: TestEmitErasureCodingDetectionDecisionTraceNoTasks (0.00s) === RUN TestErasureCodingDescriptorOmitsLocalExecutionFields --- PASS: TestErasureCodingDescriptorOmitsLocalExecutionFields (0.00s) === RUN TestApplyErasureCodingExecutionDefaultsForcesLocalFields --- PASS: TestApplyErasureCodingExecutionDefaultsForcesLocalFields (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/worker/tasks/erasure_coding 39.855s === RUN TestExpireSnapshotsExecution exec_test.go:534: expireSnapshots result: expired 2 snapshot(s), deleted 6 unreferenced file(s) --- PASS: TestExpireSnapshotsExecution (0.01s) === RUN TestExpireSnapshotsNothingToExpire --- PASS: TestExpireSnapshotsNothingToExpire (0.00s) === RUN TestRemoveOrphansExecution --- PASS: TestRemoveOrphansExecution (0.00s) === RUN TestRemoveOrphansPreservesReferencedFiles --- PASS: TestRemoveOrphansPreservesReferencedFiles (0.00s) === RUN TestRewriteManifestsExecution exec_test.go:756: rewriteManifests result: rewrote 5 manifests into 1 (5 entries) --- PASS: TestRewriteManifestsExecution (0.01s) === RUN TestRewriteManifestsBelowThreshold --- PASS: TestRewriteManifestsBelowThreshold (0.00s) === RUN TestFullExecuteFlow exec_test.go:880: Full execution results: expire_snapshots: no snapshots expired; remove_orphans: removed 1 orphan file(s) --- PASS: TestFullExecuteFlow (0.01s) === RUN TestDetectWithFakeFiler --- PASS: TestDetectWithFakeFiler (0.00s) === RUN TestDetectWithFilters --- PASS: TestDetectWithFilters (0.00s) === RUN TestConnectToFilerSkipsUnreachableAddresses --- PASS: TestConnectToFilerSkipsUnreachableAddresses (0.00s) === RUN TestConnectToFilerFailsWhenAllAddressesAreUnreachable --- PASS: TestConnectToFilerFailsWhenAllAddressesAreUnreachable (0.00s) === RUN TestDetectSchedulesCompactionWithoutSnapshotPressure --- PASS: TestDetectSchedulesCompactionWithoutSnapshotPressure (0.00s) === RUN TestDetectSchedulesCompactionWithDeleteManifestPresent --- PASS: TestDetectSchedulesCompactionWithDeleteManifestPresent (0.00s) === RUN TestDetectSchedulesSnapshotExpiryDespiteCompactionEvaluationError --- PASS: TestDetectSchedulesSnapshotExpiryDespiteCompactionEvaluationError (0.00s) === RUN TestDetectSchedulesManifestRewriteWithoutSnapshotPressure --- PASS: TestDetectSchedulesManifestRewriteWithoutSnapshotPressure (0.01s) === RUN TestDetectUsesPlanningIndexForRepeatedCompactionScans --- PASS: TestDetectUsesPlanningIndexForRepeatedCompactionScans (0.00s) === RUN TestDetectInvalidatesPlanningIndexWhenCompactionConfigChanges --- PASS: TestDetectInvalidatesPlanningIndexWhenCompactionConfigChanges (0.01s) === RUN TestDetectPlanningIndexPreservesUnscannedSections --- PASS: TestDetectPlanningIndexPreservesUnscannedSections (0.01s) === RUN TestTableNeedsMaintenanceCachesPlanningIndexBuildError --- PASS: TestTableNeedsMaintenanceCachesPlanningIndexBuildError (0.00s) === RUN TestTableNeedsMaintenanceScopesPlanningIndexBuildErrorsPerOperation --- PASS: TestTableNeedsMaintenanceScopesPlanningIndexBuildErrorsPerOperation (0.00s) === RUN TestPersistPlanningIndexUsesMetadataXattrCASGuard --- PASS: TestPersistPlanningIndexUsesMetadataXattrCASGuard (0.00s) === RUN TestDetectDoesNotScheduleManifestRewriteFromDeleteManifestsOnly --- PASS: TestDetectDoesNotScheduleManifestRewriteFromDeleteManifestsOnly (0.00s) === RUN TestDetectSchedulesOrphanCleanupWithoutSnapshotPressure --- PASS: TestDetectSchedulesOrphanCleanupWithoutSnapshotPressure (0.00s) === RUN TestDetectSchedulesOrphanCleanupWithoutSnapshots --- PASS: TestDetectSchedulesOrphanCleanupWithoutSnapshots (0.00s) === RUN TestStalePlanGuard --- PASS: TestStalePlanGuard (0.00s) === RUN TestMetadataVersionCAS --- PASS: TestMetadataVersionCAS (0.00s) === RUN TestMetadataVersionCASDetectsConcurrentUpdate --- PASS: TestMetadataVersionCASDetectsConcurrentUpdate (0.00s) === RUN TestCompactDataFilesMetrics --- PASS: TestCompactDataFilesMetrics (0.00s) === RUN TestExpireSnapshotsMetrics exec_test.go:2521: expected non-nil metrics --- FAIL: TestExpireSnapshotsMetrics (0.00s) === RUN TestExecuteCompletionOutputValues --- PASS: TestExecuteCompletionOutputValues (0.01s) === RUN TestCompactDataFilesWithPositionDeletes exec_test.go:2625: result: compacted 2 files into 1 (across 1 bins) --- PASS: TestCompactDataFilesWithPositionDeletes (0.01s) === RUN TestCompactDataFilesWithEqualityDeletes exec_test.go:2725: result: compacted 2 files into 1 (across 1 bins) --- PASS: TestCompactDataFilesWithEqualityDeletes (0.01s) === RUN TestCompactDataFilesApplyDeletesDisabled --- PASS: TestCompactDataFilesApplyDeletesDisabled (0.00s) === RUN TestCompactDataFilesWithMixedDeletes --- PASS: TestCompactDataFilesWithMixedDeletes (0.01s) === RUN TestCompactDataFilesSortStrategyUsesAscendingTableSortOrder --- PASS: TestCompactDataFilesSortStrategyUsesAscendingTableSortOrder (0.01s) === RUN TestCompactDataFilesSortStrategyUsesTableSortOrder --- PASS: TestCompactDataFilesSortStrategyUsesTableSortOrder (0.01s) === RUN TestDetectSkipsSortCompactionBinsAboveCap --- PASS: TestDetectSkipsSortCompactionBinsAboveCap (0.00s) === RUN TestDetectSplitsSortCompactionBinsByCap --- PASS: TestDetectSplitsSortCompactionBinsByCap (0.01s) === RUN TestCompactDataFilesSortStrategyRequiresTableSortOrder --- PASS: TestCompactDataFilesSortStrategyRequiresTableSortOrder (0.00s) === RUN TestRewritePositionDeleteFilesExecution --- PASS: TestRewritePositionDeleteFilesExecution (0.01s) === RUN TestRewritePositionDeleteFilesDetection --- PASS: TestRewritePositionDeleteFilesDetection (0.00s) === RUN TestRewritePositionDeleteFilesSkipsSingleFile --- PASS: TestRewritePositionDeleteFilesSkipsSingleFile (0.01s) === RUN TestRewritePositionDeleteFilesRespectsMinInputFiles --- PASS: TestRewritePositionDeleteFilesRespectsMinInputFiles (0.00s) === RUN TestRewritePositionDeleteFilesPreservesUnsupportedMultiTargetDeletes --- PASS: TestRewritePositionDeleteFilesPreservesUnsupportedMultiTargetDeletes (0.01s) === RUN TestRewritePositionDeleteFilesRebuildsMixedDeleteManifests --- PASS: TestRewritePositionDeleteFilesRebuildsMixedDeleteManifests (0.01s) === RUN TestResolveCompactionRewritePlanFallsBackForUnsupportedSortTransform --- PASS: TestResolveCompactionRewritePlanFallsBackForUnsupportedSortTransform (0.00s) === RUN TestParseConfig --- PASS: TestParseConfig (0.00s) === RUN TestParseOperations --- PASS: TestParseOperations (0.00s) === RUN TestExtractMetadataVersion --- PASS: TestExtractMetadataVersion (0.00s) === RUN TestNeedsMaintenanceNoSnapshots --- PASS: TestNeedsMaintenanceNoSnapshots (0.00s) === RUN TestNeedsMaintenanceExceedsMaxSnapshots --- PASS: TestNeedsMaintenanceExceedsMaxSnapshots (0.00s) === RUN TestNeedsMaintenanceWithinLimits --- PASS: TestNeedsMaintenanceWithinLimits (0.00s) === RUN TestNeedsMaintenanceOldSnapshot --- PASS: TestNeedsMaintenanceOldSnapshot (0.00s) === RUN TestCapabilityAndDescriptor --- PASS: TestCapabilityAndDescriptor (0.00s) === RUN TestBuildMaintenanceProposal --- PASS: TestBuildMaintenanceProposal (0.00s) === RUN TestReadResourceGroupConfig --- PASS: TestReadResourceGroupConfig (0.00s) === RUN TestSelectTablesByResourceGroupRoundRobin --- PASS: TestSelectTablesByResourceGroupRoundRobin (0.00s) === RUN TestSelectTablesByResourceGroupCap --- PASS: TestSelectTablesByResourceGroupCap (0.00s) === RUN TestManifestRewritePathConsistency --- PASS: TestManifestRewritePathConsistency (0.00s) === RUN TestManifestRewriteNestedPathConsistency === RUN TestManifestRewriteNestedPathConsistency/nested_two_levels === RUN TestManifestRewriteNestedPathConsistency/nested_one_level --- PASS: TestManifestRewriteNestedPathConsistency (0.00s) --- PASS: TestManifestRewriteNestedPathConsistency/nested_two_levels (0.00s) --- PASS: TestManifestRewriteNestedPathConsistency/nested_one_level (0.00s) === RUN TestNormalizeIcebergPath === RUN TestNormalizeIcebergPath/relative_metadata_path === RUN TestNormalizeIcebergPath/relative_data_path === RUN TestNormalizeIcebergPath/S3_URL === RUN TestNormalizeIcebergPath/absolute_filer_path === RUN TestNormalizeIcebergPath/nested_data_path === RUN TestNormalizeIcebergPath/S3_URL_nested --- PASS: TestNormalizeIcebergPath (0.00s) --- PASS: TestNormalizeIcebergPath/relative_metadata_path (0.00s) --- PASS: TestNormalizeIcebergPath/relative_data_path (0.00s) --- PASS: TestNormalizeIcebergPath/S3_URL (0.00s) --- PASS: TestNormalizeIcebergPath/absolute_filer_path (0.00s) --- PASS: TestNormalizeIcebergPath/nested_data_path (0.00s) --- PASS: TestNormalizeIcebergPath/S3_URL_nested (0.00s) === RUN TestPartitionKey === RUN TestPartitionKey/empty_partition === RUN TestPartitionKey/nil_partition === RUN TestPartitionKey/single_field === RUN TestPartitionKey/multiple_fields_sorted --- PASS: TestPartitionKey (0.00s) --- PASS: TestPartitionKey/empty_partition (0.00s) --- PASS: TestPartitionKey/nil_partition (0.00s) --- PASS: TestPartitionKey/single_field (0.00s) --- PASS: TestPartitionKey/multiple_fields_sorted (0.00s) === RUN TestBuildCompactionBins --- PASS: TestBuildCompactionBins (0.00s) === RUN TestBuildCompactionBinsFiltersLargeFiles --- PASS: TestBuildCompactionBinsFiltersLargeFiles (0.00s) === RUN TestBuildCompactionBinsMinFilesThreshold --- PASS: TestBuildCompactionBinsMinFilesThreshold (0.00s) === RUN TestBuildCompactionBinsMultiplePartitions --- PASS: TestBuildCompactionBinsMultiplePartitions (0.00s) === RUN TestSplitOversizedBinRespectsTargetSize --- PASS: TestSplitOversizedBinRespectsTargetSize (0.00s) === RUN TestSplitOversizedBinDropsImpossibleRunts --- PASS: TestSplitOversizedBinDropsImpossibleRunts (0.00s) === RUN TestBuildCompactionBinsMultipleSpecs --- PASS: TestBuildCompactionBinsMultipleSpecs (0.00s) === RUN TestBuildCompactionBinsSingleSpec --- PASS: TestBuildCompactionBinsSingleSpec (0.00s) === RUN TestParseConfigApplyDeletes --- PASS: TestParseConfigApplyDeletes (0.00s) === RUN TestNormalizeDetectionConfigUsesSharedDefaults --- PASS: TestNormalizeDetectionConfigUsesSharedDefaults (0.00s) === RUN TestParseConfigRewriteStrategy --- PASS: TestParseConfigRewriteStrategy (0.00s) === RUN TestCollectPositionDeletes --- PASS: TestCollectPositionDeletes (0.00s) === RUN TestCollectEqualityDeletes --- PASS: TestCollectEqualityDeletes (0.00s) === RUN TestMergeParquetFilesWithPositionDeletes --- PASS: TestMergeParquetFilesWithPositionDeletes (0.00s) === RUN TestMergeParquetFilesWithEqualityDeletes --- PASS: TestMergeParquetFilesWithEqualityDeletes (0.00s) === RUN TestDetectNilRequest --- PASS: TestDetectNilRequest (0.00s) === RUN TestExecuteNilRequest --- PASS: TestExecuteNilRequest (0.00s) === RUN TestValidateWhereOperations --- PASS: TestValidateWhereOperations (0.00s) === RUN TestSplitWhereConjunctionQuoteAware --- PASS: TestSplitWhereConjunctionQuoteAware (0.00s) === RUN TestPartitionPredicateMatchesUsesPartitionFieldIDs --- PASS: TestPartitionPredicateMatchesUsesPartitionFieldIDs (0.00s) === RUN TestCompactDataFilesWhereFilter --- PASS: TestCompactDataFilesWhereFilter (0.01s) FAIL FAIL github.com/seaweedfs/seaweedfs/weed/worker/tasks/iceberg 0.287s ? github.com/seaweedfs/seaweedfs/weed/worker/tasks/util [no test files] === RUN TestDecodeVacuumTaskParamsFromPayload --- PASS: TestDecodeVacuumTaskParamsFromPayload (0.00s) === RUN TestDecodeVacuumTaskParamsFallback --- PASS: TestDecodeVacuumTaskParamsFallback (0.00s) === RUN TestDeriveVacuumConfigAllowsZeroValues --- PASS: TestDeriveVacuumConfigAllowsZeroValues (0.00s) === RUN TestMasterAddressCandidates --- PASS: TestMasterAddressCandidates (0.00s) === RUN TestShouldSkipDetectionByInterval --- PASS: TestShouldSkipDetectionByInterval (0.00s) === RUN TestVacuumHandlerRejectsUnsupportedJobType --- PASS: TestVacuumHandlerRejectsUnsupportedJobType (0.00s) === RUN TestBuildExecutorActivity --- PASS: TestBuildExecutorActivity (0.00s) === RUN TestEmitVacuumDetectionDecisionTraceNoTasks --- PASS: TestEmitVacuumDetectionDecisionTraceNoTasks (0.00s) === RUN TestVacuumDescriptorHasNewFields --- PASS: TestVacuumDescriptorHasNewFields (0.00s) === RUN TestVacuumFiltersVolumeState === RUN TestVacuumFiltersVolumeState/ALL_returns_all === RUN TestVacuumFiltersVolumeState/ACTIVE_returns_writable === RUN TestVacuumFiltersVolumeState/FULL_returns_read-only --- PASS: TestVacuumFiltersVolumeState (0.00s) --- PASS: TestVacuumFiltersVolumeState/ALL_returns_all (0.00s) --- PASS: TestVacuumFiltersVolumeState/ACTIVE_returns_writable (0.00s) --- PASS: TestVacuumFiltersVolumeState/FULL_returns_read-only (0.00s) === RUN TestVacuumFiltersLocation === RUN TestVacuumFiltersLocation/dc_filter === RUN TestVacuumFiltersLocation/rack_filter === RUN TestVacuumFiltersLocation/node_filter === RUN TestVacuumFiltersLocation/dc_+_rack --- PASS: TestVacuumFiltersLocation (0.00s) --- PASS: TestVacuumFiltersLocation/dc_filter (0.00s) --- PASS: TestVacuumFiltersLocation/rack_filter (0.00s) --- PASS: TestVacuumFiltersLocation/node_filter (0.00s) --- PASS: TestVacuumFiltersLocation/dc_+_rack (0.00s) PASS ok github.com/seaweedfs/seaweedfs/weed/worker/tasks/vacuum 0.016s ? github.com/seaweedfs/seaweedfs/weed/worker/types [no test files] ? github.com/seaweedfs/seaweedfs/weed/worker/types/base [no test files] FAIL ==> ERROR: A failure occurred in check(). Aborting... ==> ERROR: Build failed, check /home/alhp/workspace/chroot/build_9f7e739b-5a34-492a-9bcf-e4b3778dedfd/build