MediaWiki REL1_33
MemcachedBagOStuffTest.php
Go to the documentation of this file.
1<?php
7 private $cache;
8
9 protected function setUp() {
10 parent::setUp();
11 $this->cache = new MemcachedBagOStuff( [ 'keyspace' => 'test' ] );
12 }
13
17 public function testKeyNormalization() {
18 $this->assertEquals(
19 'test:vanilla',
20 $this->cache->makeKey( 'vanilla' )
21 );
22
23 $this->assertEquals(
24 'test:punctuation_marks_are_ok:!@$^&*()',
25 $this->cache->makeKey( 'punctuation_marks_are_ok', '!@$^&*()' )
26 );
27
28 $this->assertEquals(
29 'test:but_spaces:hashes%23:and%0Anewlines:are_not',
30 $this->cache->makeKey( 'but spaces', 'hashes#', "and\nnewlines", 'are_not' )
31 );
32
33 $this->assertEquals(
34 'test:this:key:contains:%F0%9D%95%9E%F0%9D%95%A6%F0%9D%95%9D%F0%9D%95%A5%F0%9' .
35 'D%95%9A%F0%9D%95%93%F0%9D%95%AA%F0%9D%95%A5%F0%9D%95%96:characters',
36 $this->cache->makeKey( 'this', 'key', 'contains', '𝕞𝕦𝕝𝕥𝕚𝕓𝕪𝕥𝕖', 'characters' )
37 );
38
39 $this->assertEquals(
40 'test:this:key:contains:#c118f92685a635cb843039de50014c9c',
41 $this->cache->makeKey( 'this', 'key', 'contains', '𝕥𝕠𝕠 𝕞𝕒𝕟𝕪 𝕞𝕦𝕝𝕥𝕚𝕓𝕪𝕥𝕖 𝕔𝕙𝕒𝕣𝕒𝕔𝕥𝕖𝕣𝕤' )
42 );
43
44 $this->assertEquals(
45 'test:BagOStuff-long-key:##dc89dcb43b28614da27660240af478b5',
46 $this->cache->makeKey( '𝕖𝕧𝕖𝕟', '𝕚𝕗', '𝕨𝕖', '𝕄𝔻𝟝', '𝕖𝕒𝕔𝕙',
47 '𝕒𝕣𝕘𝕦𝕞𝕖𝕟𝕥', '𝕥𝕙𝕚𝕤', '𝕜𝕖𝕪', '𝕨𝕠𝕦𝕝𝕕', '𝕤𝕥𝕚𝕝𝕝', '𝕓𝕖', '𝕥𝕠𝕠', '𝕝𝕠𝕟𝕘' )
48 );
49
50 $this->assertEquals(
51 'test:%23%235820ad1d105aa4dc698585c39df73e19',
52 $this->cache->makeKey( '##5820ad1d105aa4dc698585c39df73e19' )
53 );
54
55 $this->assertEquals(
56 'test:percent_is_escaped:!@$%25^&*()',
57 $this->cache->makeKey( 'percent_is_escaped', '!@$%^&*()' )
58 );
59
60 $this->assertEquals(
61 'test:colon_is_escaped:!@$%3A^&*()',
62 $this->cache->makeKey( 'colon_is_escaped', '!@$:^&*()' )
63 );
64
65 $this->assertEquals(
66 'test:long_key_part_hashed:#0244f7b1811d982dd932dd7de01465ac',
67 $this->cache->makeKey( 'long_key_part_hashed', str_repeat( 'y', 500 ) )
68 );
69 }
70
75 public function testValidateKeyEncoding( $key ) {
76 $this->assertSame( $key, $this->cache->validateKeyEncoding( $key ) );
77 }
78
79 public function validKeyProvider() {
80 return [
81 'empty' => [ '' ],
82 'digits' => [ '09' ],
83 'letters' => [ 'AZaz' ],
84 'ASCII special characters' => [ '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~' ],
85 ];
86 }
87
93 $this->setExpectedException( Exception::class );
94 $this->cache->validateKeyEncoding( $key );
95 }
96
97 public function invalidKeyProvider() {
98 return [
99 [ "\x00" ],
100 [ ' ' ],
101 [ "\x1F" ],
102 [ "\x7F" ],
103 [ "\x80" ],
104 [ "\xFF" ],
105 ];
106 }
107}
and that you know you can do these things To protect your we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights These restrictions translate to certain responsibilities for you if you distribute copies of the or if you modify it For if you distribute copies of such a whether gratis or for a you must give the recipients all the rights that you have You must make sure that receive or can get the source code And you must show them these terms so they know their rights We protect your rights with two and(2) offer you this license which gives you legal permission to copy
testValidateKeyEncoding( $key)
validKeyProvider MemcachedBagOStuff::validateKeyEncoding
testValidateKeyEncodingThrowsException( $key)
invalidKeyProvider MemcachedBagOStuff::validateKeyEncoding
testKeyNormalization()
MemcachedBagOStuff::makeKey.
Base class for memcached clients.
you have access to all of the normal MediaWiki so you can get a DB use the cache