~ubuntu-branches/ubuntu/utopic/moodle/utopic

« back to all changes in this revision

Viewing changes to cache/stores/session/tests/session_test.php

  • Committer: Package Import Robot
  • Author(s): Thijs Kinkhorst
  • Date: 2014-05-12 16:10:38 UTC
  • mfrom: (36.1.3 sid)
  • Revision ID: package-import@ubuntu.com-20140512161038-puyqf65k4e0s8ytz
Tags: 2.6.3-1
New upstream release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
44
44
    protected function get_class_name() {
45
45
        return 'cachestore_session';
46
46
    }
 
47
 
 
48
    /**
 
49
     * Test the maxsize option.
 
50
     */
 
51
    public function test_maxsize() {
 
52
        $config = cache_config_phpunittest::instance();
 
53
        $config->phpunit_add_definition('phpunit/one', array(
 
54
            'mode' => cache_store::MODE_SESSION,
 
55
            'component' => 'phpunit',
 
56
            'area' => 'one',
 
57
            'maxsize' => 3
 
58
        ));
 
59
 
 
60
        $config->phpunit_add_definition('phpunit/two', array(
 
61
            'mode' => cache_store::MODE_SESSION,
 
62
            'component' => 'phpunit',
 
63
            'area' => 'two',
 
64
            'maxsize' => 3
 
65
        ));
 
66
 
 
67
        $cacheone = cache::make('phpunit', 'one');
 
68
 
 
69
        $this->assertTrue($cacheone->set('key1', 'value1'));
 
70
        $this->assertTrue($cacheone->set('key2', 'value2'));
 
71
        $this->assertTrue($cacheone->set('key3', 'value3'));
 
72
 
 
73
        $this->assertTrue($cacheone->has('key1'));
 
74
        $this->assertTrue($cacheone->has('key2'));
 
75
        $this->assertTrue($cacheone->has('key3'));
 
76
 
 
77
        $this->assertTrue($cacheone->set('key4', 'value4'));
 
78
        $this->assertTrue($cacheone->set('key5', 'value5'));
 
79
 
 
80
        $this->assertFalse($cacheone->has('key1'));
 
81
        $this->assertFalse($cacheone->has('key2'));
 
82
        $this->assertTrue($cacheone->has('key3'));
 
83
        $this->assertTrue($cacheone->has('key4'));
 
84
        $this->assertTrue($cacheone->has('key5'));
 
85
 
 
86
        $this->assertFalse($cacheone->get('key1'));
 
87
        $this->assertFalse($cacheone->get('key2'));
 
88
        $this->assertEquals('value3', $cacheone->get('key3'));
 
89
        $this->assertEquals('value4', $cacheone->get('key4'));
 
90
        $this->assertEquals('value5', $cacheone->get('key5'));
 
91
 
 
92
        // Test adding one more.
 
93
        $this->assertTrue($cacheone->set('key6', 'value6'));
 
94
        $this->assertFalse($cacheone->get('key3'));
 
95
 
 
96
        // Test reducing and then adding to make sure we don't lost one.
 
97
        $this->assertTrue($cacheone->delete('key6'));
 
98
        $this->assertTrue($cacheone->set('key7', 'value7'));
 
99
        $this->assertEquals('value4', $cacheone->get('key4'));
 
100
 
 
101
        // Set the same key three times to make sure it doesn't count overrides.
 
102
        for ($i = 0; $i < 3; $i++) {
 
103
            $this->assertTrue($cacheone->set('key8', 'value8'));
 
104
        }
 
105
        $this->assertEquals('value7', $cacheone->get('key7'), 'Overrides are incorrectly incrementing size');
 
106
 
 
107
        // Test adding many.
 
108
        $this->assertEquals(3, $cacheone->set_many(array(
 
109
            'keyA' => 'valueA',
 
110
            'keyB' => 'valueB',
 
111
            'keyC' => 'valueC'
 
112
        )));
 
113
        $this->assertEquals(array(
 
114
            'key4' => false,
 
115
            'key5' => false,
 
116
            'key6' => false,
 
117
            'key7' => false,
 
118
            'keyA' => 'valueA',
 
119
            'keyB' => 'valueB',
 
120
            'keyC' => 'valueC'
 
121
        ), $cacheone->get_many(array(
 
122
            'key4', 'key5', 'key6', 'key7', 'keyA', 'keyB', 'keyC'
 
123
        )));
 
124
 
 
125
        $cachetwo = cache::make('phpunit', 'two');
 
126
 
 
127
        // Test adding many.
 
128
        $this->assertEquals(3, $cacheone->set_many(array(
 
129
            'keyA' => 'valueA',
 
130
            'keyB' => 'valueB',
 
131
            'keyC' => 'valueC'
 
132
        )));
 
133
 
 
134
        $this->assertEquals(3, $cachetwo->set_many(array(
 
135
            'key1' => 'value1',
 
136
            'key2' => 'value2',
 
137
            'key3' => 'value3'
 
138
        )));
 
139
 
 
140
        $this->assertEquals(array(
 
141
            'keyA' => 'valueA',
 
142
            'keyB' => 'valueB',
 
143
            'keyC' => 'valueC'
 
144
        ), $cacheone->get_many(array(
 
145
            'keyA', 'keyB', 'keyC'
 
146
        )));
 
147
 
 
148
        $this->assertEquals(array(
 
149
            'key1' => 'value1',
 
150
            'key2' => 'value2',
 
151
            'key3' => 'value3'
 
152
        ), $cachetwo->get_many(array(
 
153
            'key1', 'key2', 'key3'
 
154
        )));
 
155
 
 
156
        // Test that that cache deletes element that was least recently accessed.
 
157
        $this->assertEquals('valueA', $cacheone->get('keyA'));
 
158
        $cacheone->set('keyD', 'valueD');
 
159
        $this->assertEquals('valueA', $cacheone->get('keyA'));
 
160
        $this->assertFalse($cacheone->get('keyB'));
 
161
        $this->assertEquals(array('keyD' => 'valueD', 'keyC' => 'valueC'), $cacheone->get_many(array('keyD', 'keyC')));
 
162
        $cacheone->set('keyE', 'valueE');
 
163
        $this->assertFalse($cacheone->get('keyB'));
 
164
        $this->assertFalse($cacheone->get('keyA'));
 
165
        $this->assertEquals(array('keyA' => false, 'keyE' => 'valueE', 'keyD' => 'valueD', 'keyC' => 'valueC'),
 
166
                $cacheone->get_many(array('keyA', 'keyE', 'keyD', 'keyC')));
 
167
        // Overwrite keyE (moves it to the end of array), and set keyF.
 
168
        $cacheone->set_many(array('keyE' => 'valueE', 'keyF' => 'valueF'));
 
169
        $this->assertEquals(array('keyC' => 'valueC', 'keyE' => 'valueE', 'keyD' => false, 'keyF' => 'valueF'),
 
170
                $cacheone->get_many(array('keyC', 'keyE', 'keyD', 'keyF')));
 
171
    }
 
172
 
 
173
    public function test_ttl() {
 
174
        $config = cache_config_phpunittest::instance();
 
175
        $config->phpunit_add_definition('phpunit/three', array(
 
176
            'mode' => cache_store::MODE_SESSION,
 
177
            'component' => 'phpunit',
 
178
            'area' => 'three',
 
179
            'maxsize' => 3,
 
180
            'ttl' => 3
 
181
        ));
 
182
 
 
183
        $cachethree = cache::make('phpunit', 'three');
 
184
 
 
185
        // Make sure that when cache with ttl is full the elements that were added first are deleted first regardless of access time.
 
186
        $cachethree->set('key1', 'value1');
 
187
        $cachethree->set('key2', 'value2');
 
188
        $cachethree->set('key3', 'value3');
 
189
        $cachethree->set('key4', 'value4');
 
190
        $this->assertFalse($cachethree->get('key1'));
 
191
        $this->assertEquals('value4', $cachethree->get('key4'));
 
192
        $cachethree->set('key5', 'value5');
 
193
        $this->assertFalse($cachethree->get('key2'));
 
194
        $this->assertEquals('value4', $cachethree->get('key4'));
 
195
        $cachethree->set_many(array('key6' => 'value6', 'key7' => 'value7'));
 
196
        $this->assertEquals(array('key3' => false, 'key4' => false, 'key5' => 'value5', 'key6' => 'value6', 'key7' => 'value7'),
 
197
                $cachethree->get_many(array('key3', 'key4', 'key5', 'key6', 'key7')));
 
198
    }
47
199
}
 
 
b'\\ No newline at end of file'