github.com/weaviate/weaviate@v1.24.6/adapters/handlers/rest/handlers_backup_test.go (about)

     1  //                           _       _
     2  // __      _____  __ ___   ___  __ _| |_ ___
     3  // \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \
     4  //  \ V  V /  __/ (_| |\ V /| | (_| | ||  __/
     5  //   \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___|
     6  //
     7  //  Copyright © 2016 - 2024 Weaviate B.V. All rights reserved.
     8  //
     9  //  CONTACT: hello@weaviate.io
    10  //
    11  
    12  package rest
    13  
    14  import (
    15  	"testing"
    16  
    17  	"github.com/stretchr/testify/assert"
    18  	"github.com/weaviate/weaviate/entities/models"
    19  	ubak "github.com/weaviate/weaviate/usecases/backup"
    20  )
    21  
    22  func TestCompressionBackupCfg(t *testing.T) {
    23  	tcs := map[string]struct {
    24  		cfg                 *models.BackupConfig
    25  		expectedCompression ubak.CompressionLevel
    26  		expectedCPU         int
    27  		expectedChunkSize   int
    28  	}{
    29  		"without config": {
    30  			cfg:                 nil,
    31  			expectedCompression: ubak.DefaultCompression,
    32  			expectedCPU:         ubak.DefaultCPUPercentage,
    33  			expectedChunkSize:   ubak.DefaultChunkSize,
    34  		},
    35  		"with config": {
    36  			cfg: &models.BackupConfig{
    37  				CPUPercentage:    25,
    38  				ChunkSize:        512,
    39  				CompressionLevel: models.BackupConfigCompressionLevelBestSpeed,
    40  			},
    41  			expectedCompression: ubak.BestSpeed,
    42  			expectedCPU:         25,
    43  			expectedChunkSize:   512,
    44  		},
    45  		"with partial config [CPU]": {
    46  			cfg: &models.BackupConfig{
    47  				CPUPercentage: 25,
    48  			},
    49  			expectedCompression: ubak.DefaultCompression,
    50  			expectedCPU:         25,
    51  			expectedChunkSize:   ubak.DefaultChunkSize,
    52  		},
    53  		"with partial config [ChunkSize]": {
    54  			cfg: &models.BackupConfig{
    55  				ChunkSize: 125,
    56  			},
    57  			expectedCompression: ubak.DefaultCompression,
    58  			expectedCPU:         ubak.DefaultCPUPercentage,
    59  			expectedChunkSize:   125,
    60  		},
    61  		"with partial config [Compression]": {
    62  			cfg: &models.BackupConfig{
    63  				CompressionLevel: models.BackupConfigCompressionLevelBestSpeed,
    64  			},
    65  			expectedCompression: ubak.BestSpeed,
    66  			expectedCPU:         ubak.DefaultCPUPercentage,
    67  			expectedChunkSize:   ubak.DefaultChunkSize,
    68  		},
    69  	}
    70  
    71  	for n, tc := range tcs {
    72  		t.Run(n, func(t *testing.T) {
    73  			ccfg := compressionFromBCfg(tc.cfg)
    74  			assert.Equal(t, tc.expectedCompression, ccfg.Level)
    75  			assert.Equal(t, tc.expectedCPU, ccfg.CPUPercentage)
    76  			assert.Equal(t, tc.expectedChunkSize, ccfg.ChunkSize)
    77  		})
    78  	}
    79  }
    80  
    81  func TestCompressionRestoreCfg(t *testing.T) {
    82  	tcs := map[string]struct {
    83  		cfg                 *models.RestoreConfig
    84  		expectedCompression ubak.CompressionLevel
    85  		expectedCPU         int
    86  		expectedChunkSize   int
    87  	}{
    88  		"without config": {
    89  			cfg:                 nil,
    90  			expectedCompression: ubak.DefaultCompression,
    91  			expectedCPU:         ubak.DefaultCPUPercentage,
    92  			expectedChunkSize:   ubak.DefaultChunkSize,
    93  		},
    94  		"with config": {
    95  			cfg: &models.RestoreConfig{
    96  				CPUPercentage: 25,
    97  			},
    98  			expectedCPU: 25,
    99  		},
   100  	}
   101  
   102  	for n, tc := range tcs {
   103  		t.Run(n, func(t *testing.T) {
   104  			ccfg := compressionFromRCfg(tc.cfg)
   105  			assert.Equal(t, tc.expectedCPU, ccfg.CPUPercentage)
   106  		})
   107  	}
   108  }