Skip to content

Commit 32274b6

Browse files
ENGCOM-4267: Allow redis compression options to be specified during \setup:install\ process #21053
- Merge Pull Request #21053 from cmacdonald-au/magento2:2.3-develop - Merged commits: 1. fa47719 2. dd913cf 3. 68623a9 4. eb213d8 5. ce6dee1
2 parents 1fb83b1 + ce6dee1 commit 32274b6

File tree

4 files changed

+77
-23
lines changed

4 files changed

+77
-23
lines changed

setup/src/Magento/Setup/Model/ConfigOptionsList/Cache.php

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,17 @@ class Cache implements ConfigOptionsListInterface
2727
const INPUT_KEY_CACHE_BACKEND_REDIS_DATABASE = 'cache-backend-redis-db';
2828
const INPUT_KEY_CACHE_BACKEND_REDIS_PORT = 'cache-backend-redis-port';
2929
const INPUT_KEY_CACHE_BACKEND_REDIS_PASSWORD = 'cache-backend-redis-password';
30+
const INPUT_KEY_CACHE_BACKEND_REDIS_COMPRESS_DATA = 'cache-backend-redis-compress-data';
31+
const INPUT_KEY_CACHE_BACKEND_REDIS_COMPRESSION_LIB = 'cache-backend-redis-compression-lib';
3032
const INPUT_KEY_CACHE_ID_PREFIX = 'cache-id-prefix';
3133

3234
const CONFIG_PATH_CACHE_BACKEND = 'cache/frontend/default/backend';
3335
const CONFIG_PATH_CACHE_BACKEND_SERVER = 'cache/frontend/default/backend_options/server';
3436
const CONFIG_PATH_CACHE_BACKEND_DATABASE = 'cache/frontend/default/backend_options/database';
3537
const CONFIG_PATH_CACHE_BACKEND_PORT = 'cache/frontend/default/backend_options/port';
3638
const CONFIG_PATH_CACHE_BACKEND_PASSWORD = 'cache/frontend/default/backend_options/password';
39+
const CONFIG_PATH_CACHE_BACKEND_COMPRESS_DATA = 'cache/frontend/default/backend_options/compress_data';
40+
const CONFIG_PATH_CACHE_BACKEND_COMPRESSION_LIB = 'cache/frontend/default/backend_options/compression_lib';
3741
const CONFIG_PATH_CACHE_ID_PREFIX = 'cache/frontend/default/id_prefix';
3842

3943
/**
@@ -43,7 +47,9 @@ class Cache implements ConfigOptionsListInterface
4347
self::INPUT_KEY_CACHE_BACKEND_REDIS_SERVER => '127.0.0.1',
4448
self::INPUT_KEY_CACHE_BACKEND_REDIS_DATABASE => '0',
4549
self::INPUT_KEY_CACHE_BACKEND_REDIS_PORT => '6379',
46-
self::INPUT_KEY_CACHE_BACKEND_REDIS_PASSWORD => ''
50+
self::INPUT_KEY_CACHE_BACKEND_REDIS_PASSWORD => '',
51+
self::INPUT_KEY_CACHE_BACKEND_REDIS_COMPRESS_DATA => '1',
52+
self::INPUT_KEY_CACHE_BACKEND_REDIS_COMPRESSION_LIB => '',
4753
];
4854

4955
/**
@@ -60,7 +66,9 @@ class Cache implements ConfigOptionsListInterface
6066
self::INPUT_KEY_CACHE_BACKEND_REDIS_SERVER => self::CONFIG_PATH_CACHE_BACKEND_SERVER,
6167
self::INPUT_KEY_CACHE_BACKEND_REDIS_DATABASE => self::CONFIG_PATH_CACHE_BACKEND_DATABASE,
6268
self::INPUT_KEY_CACHE_BACKEND_REDIS_PORT => self::CONFIG_PATH_CACHE_BACKEND_PORT,
63-
self::INPUT_KEY_CACHE_BACKEND_REDIS_PASSWORD => self::CONFIG_PATH_CACHE_BACKEND_PASSWORD
69+
self::INPUT_KEY_CACHE_BACKEND_REDIS_PASSWORD => self::CONFIG_PATH_CACHE_BACKEND_PASSWORD,
70+
self::INPUT_KEY_CACHE_BACKEND_REDIS_COMPRESS_DATA => self::CONFIG_PATH_CACHE_BACKEND_COMPRESS_DATA,
71+
self::INPUT_KEY_CACHE_BACKEND_REDIS_COMPRESSION_LIB => self::CONFIG_PATH_CACHE_BACKEND_COMPRESSION_LIB,
6472
];
6573

6674
/**
@@ -115,12 +123,24 @@ public function getOptions()
115123
self::CONFIG_PATH_CACHE_BACKEND_PASSWORD,
116124
'Redis server password'
117125
),
126+
new TextConfigOption(
127+
self::INPUT_KEY_CACHE_BACKEND_REDIS_COMPRESS_DATA,
128+
TextConfigOption::FRONTEND_WIZARD_TEXT,
129+
self::CONFIG_PATH_CACHE_BACKEND_COMPRESS_DATA,
130+
'Set to 0 to disable compression (default is 1, enabled)'
131+
),
132+
new TextConfigOption(
133+
self::INPUT_KEY_CACHE_BACKEND_REDIS_COMPRESSION_LIB,
134+
TextConfigOption::FRONTEND_WIZARD_TEXT,
135+
self::CONFIG_PATH_CACHE_BACKEND_COMPRESSION_LIB,
136+
'Compression lib to use [snappy,lzf,l4z,zstd,gzip] (leave blank to determine automatically)'
137+
),
118138
new TextConfigOption(
119139
self::INPUT_KEY_CACHE_ID_PREFIX,
120140
TextConfigOption::FRONTEND_WIZARD_TEXT,
121141
self::CONFIG_PATH_CACHE_ID_PREFIX,
122142
'ID prefix for cache keys'
123-
)
143+
),
124144
];
125145
}
126146

setup/src/Magento/Setup/Model/ConfigOptionsList/PageCache.php

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,18 @@ class PageCache implements ConfigOptionsListInterface
2626
const INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_SERVER = 'page-cache-redis-server';
2727
const INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_DATABASE = 'page-cache-redis-db';
2828
const INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_PORT = 'page-cache-redis-port';
29-
const INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_COMPRESS_DATA = 'page-cache-redis-compress-data';
3029
const INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_PASSWORD = 'page-cache-redis-password';
30+
const INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_COMPRESS_DATA = 'page-cache-redis-compress-data';
31+
const INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_COMPRESSION_LIB = 'page-cache-redis-compression-lib';
3132
const INPUT_KEY_PAGE_CACHE_ID_PREFIX = 'page-cache-id-prefix';
3233

3334
const CONFIG_PATH_PAGE_CACHE_BACKEND = 'cache/frontend/page_cache/backend';
3435
const CONFIG_PATH_PAGE_CACHE_BACKEND_SERVER = 'cache/frontend/page_cache/backend_options/server';
3536
const CONFIG_PATH_PAGE_CACHE_BACKEND_DATABASE = 'cache/frontend/page_cache/backend_options/database';
3637
const CONFIG_PATH_PAGE_CACHE_BACKEND_PORT = 'cache/frontend/page_cache/backend_options/port';
37-
const CONFIG_PATH_PAGE_CACHE_BACKEND_COMPRESS_DATA = 'cache/frontend/page_cache/backend_options/compress_data';
3838
const CONFIG_PATH_PAGE_CACHE_BACKEND_PASSWORD = 'cache/frontend/page_cache/backend_options/password';
39+
const CONFIG_PATH_PAGE_CACHE_BACKEND_COMPRESS_DATA = 'cache/frontend/page_cache/backend_options/compress_data';
40+
const CONFIG_PATH_PAGE_CACHE_BACKEND_COMPRESSION_LIB = 'cache/frontend/page_cache/backend_options/compression_lib';
3941
const CONFIG_PATH_PAGE_CACHE_ID_PREFIX = 'cache/frontend/page_cache/id_prefix';
4042

4143
/**
@@ -45,8 +47,9 @@ class PageCache implements ConfigOptionsListInterface
4547
self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_SERVER => '127.0.0.1',
4648
self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_DATABASE => '1',
4749
self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_PORT => '6379',
50+
self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_PASSWORD => '',
4851
self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_COMPRESS_DATA => '0',
49-
self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_PASSWORD => ''
52+
self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_COMPRESSION_LIB => '',
5053
];
5154

5255
/**
@@ -63,8 +66,9 @@ class PageCache implements ConfigOptionsListInterface
6366
self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_SERVER => self::CONFIG_PATH_PAGE_CACHE_BACKEND_SERVER,
6467
self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_DATABASE => self::CONFIG_PATH_PAGE_CACHE_BACKEND_DATABASE,
6568
self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_PORT => self::CONFIG_PATH_PAGE_CACHE_BACKEND_PORT,
69+
self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_PASSWORD => self::CONFIG_PATH_PAGE_CACHE_BACKEND_PASSWORD,
6670
self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_COMPRESS_DATA => self::CONFIG_PATH_PAGE_CACHE_BACKEND_COMPRESS_DATA,
67-
self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_PASSWORD => self::CONFIG_PATH_PAGE_CACHE_BACKEND_PASSWORD
71+
self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_COMPRESSION_LIB => self::CONFIG_PATH_PAGE_CACHE_BACKEND_COMPRESSION_LIB,
6872
];
6973

7074
/**
@@ -113,24 +117,30 @@ public function getOptions()
113117
self::CONFIG_PATH_PAGE_CACHE_BACKEND_PORT,
114118
'Redis server listen port'
115119
),
120+
new TextConfigOption(
121+
self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_PASSWORD,
122+
TextConfigOption::FRONTEND_WIZARD_TEXT,
123+
self::CONFIG_PATH_PAGE_CACHE_BACKEND_PASSWORD,
124+
'Redis server password'
125+
),
116126
new TextConfigOption(
117127
self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_COMPRESS_DATA,
118128
TextConfigOption::FRONTEND_WIZARD_TEXT,
119129
self::CONFIG_PATH_PAGE_CACHE_BACKEND_COMPRESS_DATA,
120130
'Set to 1 to compress the full page cache (use 0 to disable)'
121131
),
122132
new TextConfigOption(
123-
self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_PASSWORD,
133+
self::INPUT_KEY_PAGE_CACHE_BACKEND_REDIS_COMPRESSION_LIB,
124134
TextConfigOption::FRONTEND_WIZARD_TEXT,
125-
self::CONFIG_PATH_PAGE_CACHE_BACKEND_PASSWORD,
126-
'Redis server password'
135+
self::CONFIG_PATH_PAGE_CACHE_BACKEND_COMPRESSION_LIB,
136+
'Compression library to use [snappy,lzf,l4z,zstd,gzip] (leave blank to determine automatically)'
127137
),
128138
new TextConfigOption(
129139
self::INPUT_KEY_PAGE_CACHE_ID_PREFIX,
130140
TextConfigOption::FRONTEND_WIZARD_TEXT,
131141
self::CONFIG_PATH_PAGE_CACHE_ID_PREFIX,
132142
'ID prefix for cache keys'
133-
)
143+
),
134144
];
135145
}
136146

setup/src/Magento/Setup/Test/Unit/Model/ConfigOptionsList/CacheTest.php

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ protected function setUp()
4545
public function testGetOptions()
4646
{
4747
$options = $this->configOptionsList->getOptions();
48-
$this->assertCount(6, $options);
48+
$this->assertCount(8, $options);
4949

5050
$this->assertArrayHasKey(0, $options);
5151
$this->assertInstanceOf(SelectConfigOption::class, $options[0]);
@@ -69,7 +69,16 @@ public function testGetOptions()
6969

7070
$this->assertArrayHasKey(5, $options);
7171
$this->assertInstanceOf(TextConfigOption::class, $options[5]);
72-
$this->assertEquals('cache-id-prefix', $options[5]->getName());
72+
$this->assertEquals('cache-backend-redis-compress-data', $options[5]->getName());
73+
74+
$this->assertArrayHasKey(6, $options);
75+
$this->assertInstanceOf(TextConfigOption::class, $options[6]);
76+
$this->assertEquals('cache-backend-redis-compression-lib', $options[6]->getName());
77+
78+
$this->assertArrayHasKey(7, $options);
79+
$this->assertInstanceOf(TextConfigOption::class, $options[7]);
80+
$this->assertEquals('cache-id-prefix', $options[7]->getName());
81+
7382
}
7483

7584
/**
@@ -88,7 +97,9 @@ public function testCreateConfigCacheRedis()
8897
'server' => '',
8998
'port' => '',
9099
'database' => '',
91-
'password' => ''
100+
'password' => '',
101+
'compress_data' => '',
102+
'compression_lib' => '',
92103
],
93104
'id_prefix' => $this->expectedIdPrefix(),
94105
]
@@ -115,18 +126,23 @@ public function testCreateConfigWithRedisConfig()
115126
'server' => 'localhost',
116127
'port' => '1234',
117128
'database' => '5',
118-
'password' => ''
129+
'password' => '',
130+
'compress_data' => '1',
131+
'compression_lib' => 'gzip',
119132
],
120133
'id_prefix' => $this->expectedIdPrefix(),
121134
]
122135
]
123136
]
124137
];
138+
125139
$options = [
126140
'cache-backend' => 'redis',
127141
'cache-backend-redis-server' => 'localhost',
128142
'cache-backend-redis-port' => '1234',
129-
'cache-backend-redis-db' => '5'
143+
'cache-backend-redis-db' => '5',
144+
'cache-backend-redis-compress-data' => '1',
145+
'cache-backend-redis-compression-lib' => 'gzip'
130146
];
131147

132148
$configData = $this->configOptionsList->createConfig($options, $this->deploymentConfigMock);

setup/src/Magento/Setup/Test/Unit/Model/ConfigOptionsList/PageCacheTest.php

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ protected function setUp()
4545
public function testGetOptions()
4646
{
4747
$options = $this->configList->getOptions();
48-
$this->assertCount(7, $options);
48+
$this->assertCount(8, $options);
4949

5050
$this->assertArrayHasKey(0, $options);
5151
$this->assertInstanceOf(SelectConfigOption::class, $options[0]);
@@ -65,15 +65,20 @@ public function testGetOptions()
6565

6666
$this->assertArrayHasKey(4, $options);
6767
$this->assertInstanceOf(TextConfigOption::class, $options[4]);
68-
$this->assertEquals('page-cache-redis-compress-data', $options[4]->getName());
68+
$this->assertEquals('page-cache-redis-password', $options[4]->getName());
6969

7070
$this->assertArrayHasKey(5, $options);
7171
$this->assertInstanceOf(TextConfigOption::class, $options[5]);
72-
$this->assertEquals('page-cache-redis-password', $options[5]->getName());
72+
$this->assertEquals('page-cache-redis-compress-data', $options[5]->getName());
7373

7474
$this->assertArrayHasKey(6, $options);
7575
$this->assertInstanceOf(TextConfigOption::class, $options[6]);
76-
$this->assertEquals('page-cache-id-prefix', $options[6]->getName());
76+
$this->assertEquals('page-cache-redis-compression-lib', $options[6]->getName());
77+
78+
$this->assertArrayHasKey(7, $options);
79+
$this->assertInstanceOf(TextConfigOption::class, $options[7]);
80+
$this->assertEquals('page-cache-id-prefix', $options[7]->getName());
81+
7782
}
7883

7984
/**
@@ -93,7 +98,8 @@ public function testCreateConfigWithRedis()
9398
'port' => '',
9499
'database' => '',
95100
'compress_data' => '',
96-
'password' => ''
101+
'password' => '',
102+
'compression_lib' => '',
97103
],
98104
'id_prefix' => $this->expectedIdPrefix(),
99105
]
@@ -120,8 +126,9 @@ public function testCreateConfigWithRedisConfiguration()
120126
'server' => 'foo.bar',
121127
'port' => '9000',
122128
'database' => '6',
129+
'password' => '',
123130
'compress_data' => '1',
124-
'password' => ''
131+
'compression_lib' => 'gzip',
125132
],
126133
'id_prefix' => $this->expectedIdPrefix(),
127134
]
@@ -134,7 +141,8 @@ public function testCreateConfigWithRedisConfiguration()
134141
'page-cache-redis-server' => 'foo.bar',
135142
'page-cache-redis-port' => '9000',
136143
'page-cache-redis-db' => '6',
137-
'page-cache-redis-compress-data' => '1'
144+
'page-cache-redis-compress-data' => '1',
145+
'page-cache-redis-compression-lib' => 'gzip',
138146
];
139147

140148
$configData = $this->configList->createConfig($options, $this->deploymentConfigMock);

0 commit comments

Comments
 (0)