Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "config.h" | 5 #include "config.h" |
| 6 | 6 |
| 7 #include "CCTextureUpdateController.h" | 7 #include "CCTextureUpdateController.h" |
| 8 | 8 |
| 9 #include "CCSchedulerTestCommon.h" | 9 #include "CCSchedulerTestCommon.h" |
| 10 #include "CCSingleThreadProxy.h" // For DebugScopedSetImplThread | 10 #include "CCSingleThreadProxy.h" // For DebugScopedSetImplThread |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 108 } | 108 } |
| 109 | 109 |
| 110 m_numDanglingUploads = 0; | 110 m_numDanglingUploads = 0; |
| 111 m_numConsecutiveFlushes++; | 111 m_numConsecutiveFlushes++; |
| 112 m_numTotalFlushes++; | 112 m_numTotalFlushes++; |
| 113 m_numPreviousFlushes++; | 113 m_numPreviousFlushes++; |
| 114 } | 114 } |
| 115 | 115 |
| 116 void onBeginUploads() | 116 void onBeginUploads() |
| 117 { | 117 { |
| 118 EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flush."; | |
| 119 | |
| 118 m_numPreviousFlushes = 0; | 120 m_numPreviousFlushes = 0; |
| 119 m_numPreviousUploads = 0; | 121 m_numPreviousUploads = 0; |
| 120 m_numBeginUploads++; | 122 m_numBeginUploads++; |
| 121 } | 123 } |
| 122 | 124 |
| 123 void onUpload() | 125 void onUpload() |
| 124 { | 126 { |
| 125 // Check for too many consecutive uploads | 127 // Check for too many consecutive uploads |
| 126 if (m_numTotalUploads < m_fullUploadCountExpected) | 128 if (m_numTotalUploads < m_fullUploadCountExpected) |
| 127 EXPECT_LT(m_numDanglingUploads, kFlushPeriodFull) << "Too many conse cutive full uploads detected."; | 129 EXPECT_LT(m_numDanglingUploads, kFlushPeriodFull) << "Too many conse cutive full uploads detected."; |
| 128 else | 130 else |
| 129 EXPECT_LT(m_numDanglingUploads, kFlushPeriodPartial) << "Too many co nsecutive partial uploads detected."; | 131 EXPECT_LT(m_numDanglingUploads, kFlushPeriodPartial) << "Too many co nsecutive partial uploads detected."; |
| 130 | 132 |
| 131 m_numConsecutiveFlushes = 0; | 133 m_numConsecutiveFlushes = 0; |
| 132 m_numDanglingUploads++; | 134 m_numDanglingUploads++; |
| 133 m_numTotalUploads++; | 135 m_numTotalUploads++; |
| 134 m_numPreviousUploads++; | 136 m_numPreviousUploads++; |
| 135 } | 137 } |
| 136 | 138 |
| 137 void onEndUploads() | 139 void onEndUploads() |
| 138 { | 140 { |
| 139 EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flush."; | |
| 140 | |
|
brianderson
2012/09/18 00:45:52
onEndUploads is called before the final flush to k
| |
| 141 // Note: The m_numTotalUploads != m_fullUploadCountExpected comparison | 141 // Note: The m_numTotalUploads != m_fullUploadCountExpected comparison |
| 142 // allows for the quota not to be hit in the case where we are trasition ing | 142 // allows for the quota not to be hit in the case where we are trasition ing |
| 143 // from full uploads to partial uploads. | 143 // from full uploads to partial uploads. |
| 144 if (m_numTotalUploads != m_totalUploadCountExpected && m_numTotalUploads != m_fullUploadCountExpected) { | 144 if (m_numTotalUploads != m_totalUploadCountExpected && m_numTotalUploads != m_fullUploadCountExpected) { |
| 145 EXPECT_EQ(m_maxUploadCountPerUpdate, m_numPreviousUploads) | 145 EXPECT_EQ(m_maxUploadCountPerUpdate, m_numPreviousUploads) |
| 146 << "endUpload() was called when there are textures to upload, bu t the upload quota hasn't been filled."; | 146 << "endUpload() was called when there are textures to upload, bu t the upload quota hasn't been filled."; |
| 147 } | 147 } |
| 148 | 148 |
| 149 m_numEndUploads++; | 149 m_numEndUploads++; |
| 150 } | 150 } |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 258 { | 258 { |
| 259 appendFullUploadsToUpdateQueue(1); | 259 appendFullUploadsToUpdateQueue(1); |
| 260 appendPartialUploadsToUpdateQueue(0); | 260 appendPartialUploadsToUpdateQueue(0); |
| 261 DebugScopedSetImplThread implThread; | 261 DebugScopedSetImplThread implThread; |
| 262 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), m_totalUploadCountExpected); | 262 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), m_totalUploadCountExpected); |
| 263 | 263 |
| 264 EXPECT_EQ(1, m_numBeginUploads); | 264 EXPECT_EQ(1, m_numBeginUploads); |
| 265 EXPECT_EQ(1, m_numEndUploads); | 265 EXPECT_EQ(1, m_numEndUploads); |
| 266 EXPECT_EQ(1, m_numPreviousFlushes); | 266 EXPECT_EQ(1, m_numPreviousFlushes); |
| 267 EXPECT_EQ(1, m_numPreviousUploads); | 267 EXPECT_EQ(1, m_numPreviousUploads); |
| 268 EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flus h."; | |
| 268 } | 269 } |
| 269 | 270 |
| 270 TEST_F(CCTextureUpdateControllerTest, OnePartialUpload) | 271 TEST_F(CCTextureUpdateControllerTest, OnePartialUpload) |
| 271 { | 272 { |
| 272 appendFullUploadsToUpdateQueue(0); | 273 appendFullUploadsToUpdateQueue(0); |
| 273 appendPartialUploadsToUpdateQueue(1); | 274 appendPartialUploadsToUpdateQueue(1); |
| 274 DebugScopedSetImplThread implThread; | 275 DebugScopedSetImplThread implThread; |
| 275 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), m_totalUploadCountExpected); | 276 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), m_totalUploadCountExpected); |
| 276 | 277 |
| 277 EXPECT_EQ(1, m_numBeginUploads); | 278 EXPECT_EQ(1, m_numBeginUploads); |
| 278 EXPECT_EQ(1, m_numEndUploads); | 279 EXPECT_EQ(1, m_numEndUploads); |
| 279 EXPECT_EQ(1, m_numPreviousFlushes); | 280 EXPECT_EQ(1, m_numPreviousFlushes); |
| 280 EXPECT_EQ(1, m_numPreviousUploads); | 281 EXPECT_EQ(1, m_numPreviousUploads); |
| 282 EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flus h."; | |
| 281 } | 283 } |
| 282 | 284 |
| 283 TEST_F(CCTextureUpdateControllerTest, OneFullOnePartialUpload) | 285 TEST_F(CCTextureUpdateControllerTest, OneFullOnePartialUpload) |
| 284 { | 286 { |
| 285 appendFullUploadsToUpdateQueue(1); | 287 appendFullUploadsToUpdateQueue(1); |
| 286 appendPartialUploadsToUpdateQueue(1); | 288 appendPartialUploadsToUpdateQueue(1); |
| 287 DebugScopedSetImplThread implThread; | 289 DebugScopedSetImplThread implThread; |
| 288 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), m_totalUploadCountExpected); | 290 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), m_totalUploadCountExpected); |
| 289 | 291 |
| 290 // We expect the full uploads to be followed by a flush | 292 // We expect the full uploads to be followed by a flush |
| 291 // before the partial uploads begin. | 293 // before the partial uploads begin. |
| 292 EXPECT_EQ(1, m_numBeginUploads); | 294 EXPECT_EQ(1, m_numBeginUploads); |
| 293 EXPECT_EQ(1, m_numEndUploads); | 295 EXPECT_EQ(1, m_numEndUploads); |
| 294 EXPECT_EQ(2, m_numPreviousFlushes); | 296 EXPECT_EQ(2, m_numPreviousFlushes); |
| 295 EXPECT_EQ(2, m_numPreviousUploads); | 297 EXPECT_EQ(2, m_numPreviousUploads); |
| 298 EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flus h."; | |
| 296 } | 299 } |
| 297 | 300 |
| 298 | 301 |
| 299 // NO REMAINDER TESTS | 302 // NO REMAINDER TESTS |
| 300 // This class of tests upload a number of textures that is a multiple of the flu sh period. | 303 // This class of tests upload a number of textures that is a multiple of the flu sh period. |
| 301 const int fullUploadFlushMultipler = 7; | 304 const int fullUploadFlushMultipler = 7; |
| 302 const int fullNoRemainderCount = fullUploadFlushMultipler * kFlushPeriodFull; | 305 const int fullNoRemainderCount = fullUploadFlushMultipler * kFlushPeriodFull; |
| 303 | 306 |
| 304 const int partialUploadFlushMultipler = 11; | 307 const int partialUploadFlushMultipler = 11; |
| 305 const int partialNoRemainderCount = partialUploadFlushMultipler * kFlushPeriodPa rtial; | 308 const int partialNoRemainderCount = partialUploadFlushMultipler * kFlushPeriodPa rtial; |
| 306 | 309 |
| 307 TEST_F(CCTextureUpdateControllerTest, ManyFullUploadsNoRemainder) | 310 TEST_F(CCTextureUpdateControllerTest, ManyFullUploadsNoRemainder) |
| 308 { | 311 { |
| 309 appendFullUploadsToUpdateQueue(fullNoRemainderCount); | 312 appendFullUploadsToUpdateQueue(fullNoRemainderCount); |
| 310 appendPartialUploadsToUpdateQueue(0); | 313 appendPartialUploadsToUpdateQueue(0); |
| 311 DebugScopedSetImplThread implThread; | 314 DebugScopedSetImplThread implThread; |
| 312 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), m_totalUploadCountExpected); | 315 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), m_totalUploadCountExpected); |
| 313 | 316 |
| 314 EXPECT_EQ(1, m_numBeginUploads); | 317 EXPECT_EQ(1, m_numBeginUploads); |
| 315 EXPECT_EQ(1, m_numEndUploads); | 318 EXPECT_EQ(1, m_numEndUploads); |
| 316 EXPECT_EQ(fullUploadFlushMultipler, m_numPreviousFlushes); | 319 EXPECT_EQ(fullUploadFlushMultipler, m_numPreviousFlushes); |
| 317 EXPECT_EQ(fullNoRemainderCount, m_numPreviousUploads); | 320 EXPECT_EQ(fullNoRemainderCount, m_numPreviousUploads); |
| 321 EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flus h."; | |
| 318 } | 322 } |
| 319 | 323 |
| 320 TEST_F(CCTextureUpdateControllerTest, ManyPartialUploadsNoRemainder) | 324 TEST_F(CCTextureUpdateControllerTest, ManyPartialUploadsNoRemainder) |
| 321 { | 325 { |
| 322 appendFullUploadsToUpdateQueue(0); | 326 appendFullUploadsToUpdateQueue(0); |
| 323 appendPartialUploadsToUpdateQueue(partialNoRemainderCount); | 327 appendPartialUploadsToUpdateQueue(partialNoRemainderCount); |
| 324 DebugScopedSetImplThread implThread; | 328 DebugScopedSetImplThread implThread; |
| 325 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), m_totalUploadCountExpected); | 329 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), m_totalUploadCountExpected); |
| 326 | 330 |
| 327 EXPECT_EQ(1, m_numBeginUploads); | 331 EXPECT_EQ(1, m_numBeginUploads); |
| 328 EXPECT_EQ(1, m_numEndUploads); | 332 EXPECT_EQ(1, m_numEndUploads); |
| 329 EXPECT_EQ(partialUploadFlushMultipler, m_numPreviousFlushes); | 333 EXPECT_EQ(partialUploadFlushMultipler, m_numPreviousFlushes); |
| 330 EXPECT_EQ(partialNoRemainderCount, m_numPreviousUploads); | 334 EXPECT_EQ(partialNoRemainderCount, m_numPreviousUploads); |
| 335 EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flus h."; | |
| 331 } | 336 } |
| 332 | 337 |
| 333 TEST_F(CCTextureUpdateControllerTest, ManyFullManyPartialUploadsNoRemainder) | 338 TEST_F(CCTextureUpdateControllerTest, ManyFullManyPartialUploadsNoRemainder) |
| 334 { | 339 { |
| 335 appendFullUploadsToUpdateQueue(fullNoRemainderCount); | 340 appendFullUploadsToUpdateQueue(fullNoRemainderCount); |
| 336 appendPartialUploadsToUpdateQueue(partialNoRemainderCount); | 341 appendPartialUploadsToUpdateQueue(partialNoRemainderCount); |
| 337 DebugScopedSetImplThread implThread; | 342 DebugScopedSetImplThread implThread; |
| 338 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), m_totalUploadCountExpected); | 343 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), m_totalUploadCountExpected); |
| 339 | 344 |
| 340 EXPECT_EQ(1, m_numBeginUploads); | 345 EXPECT_EQ(1, m_numBeginUploads); |
| 341 EXPECT_EQ(1, m_numEndUploads); | 346 EXPECT_EQ(1, m_numEndUploads); |
| 342 EXPECT_EQ(fullUploadFlushMultipler + partialUploadFlushMultipler, m_numPrevi ousFlushes); | 347 EXPECT_EQ(fullUploadFlushMultipler + partialUploadFlushMultipler, m_numPrevi ousFlushes); |
| 343 EXPECT_EQ(fullNoRemainderCount + partialNoRemainderCount, m_numPreviousUploa ds); | 348 EXPECT_EQ(fullNoRemainderCount + partialNoRemainderCount, m_numPreviousUploa ds); |
| 349 EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flus h."; | |
| 344 } | 350 } |
| 345 | 351 |
| 346 | 352 |
| 347 // MIN/MAX REMAINDER TESTS | 353 // MIN/MAX REMAINDER TESTS |
| 348 // This class of tests mix and match uploading 1 more and 1 less texture | 354 // This class of tests mix and match uploading 1 more and 1 less texture |
| 349 // than a multiple of the flush period. | 355 // than a multiple of the flush period. |
| 350 | 356 |
| 351 const int fullMinRemainderCount = fullNoRemainderCount + 1; | 357 const int fullMinRemainderCount = fullNoRemainderCount + 1; |
| 352 const int fullMaxRemainderCount = fullNoRemainderCount - 1; | 358 const int fullMaxRemainderCount = fullNoRemainderCount - 1; |
| 353 const int partialMinRemainderCount = partialNoRemainderCount + 1; | 359 const int partialMinRemainderCount = partialNoRemainderCount + 1; |
| 354 const int partialMaxRemainderCount = partialNoRemainderCount - 1; | 360 const int partialMaxRemainderCount = partialNoRemainderCount - 1; |
| 355 | 361 |
| 356 TEST_F(CCTextureUpdateControllerTest, ManyFullAndPartialMinRemainder) | 362 TEST_F(CCTextureUpdateControllerTest, ManyFullAndPartialMinRemainder) |
| 357 { | 363 { |
| 358 appendFullUploadsToUpdateQueue(fullMinRemainderCount); | 364 appendFullUploadsToUpdateQueue(fullMinRemainderCount); |
| 359 appendPartialUploadsToUpdateQueue(partialMinRemainderCount); | 365 appendPartialUploadsToUpdateQueue(partialMinRemainderCount); |
| 360 DebugScopedSetImplThread implThread; | 366 DebugScopedSetImplThread implThread; |
| 361 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), m_totalUploadCountExpected); | 367 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), m_totalUploadCountExpected); |
| 362 | 368 |
| 363 EXPECT_EQ(1, m_numBeginUploads); | 369 EXPECT_EQ(1, m_numBeginUploads); |
| 364 EXPECT_EQ(1, m_numEndUploads); | 370 EXPECT_EQ(1, m_numEndUploads); |
| 365 EXPECT_EQ(fullUploadFlushMultipler + partialUploadFlushMultipler + 2, m_numP reviousFlushes); | 371 EXPECT_EQ(fullUploadFlushMultipler + partialUploadFlushMultipler + 2, m_numP reviousFlushes); |
| 366 EXPECT_EQ(fullMinRemainderCount + partialMinRemainderCount, m_numPreviousUpl oads); | 372 EXPECT_EQ(fullMinRemainderCount + partialMinRemainderCount, m_numPreviousUpl oads); |
| 373 EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flus h."; | |
| 367 } | 374 } |
| 368 | 375 |
| 369 TEST_F(CCTextureUpdateControllerTest, ManyFullAndPartialUploadsMaxRemainder) | 376 TEST_F(CCTextureUpdateControllerTest, ManyFullAndPartialUploadsMaxRemainder) |
| 370 { | 377 { |
| 371 appendFullUploadsToUpdateQueue(fullMaxRemainderCount); | 378 appendFullUploadsToUpdateQueue(fullMaxRemainderCount); |
| 372 appendPartialUploadsToUpdateQueue(partialMaxRemainderCount); | 379 appendPartialUploadsToUpdateQueue(partialMaxRemainderCount); |
| 373 DebugScopedSetImplThread implThread; | 380 DebugScopedSetImplThread implThread; |
| 374 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), m_totalUploadCountExpected); | 381 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), m_totalUploadCountExpected); |
| 375 | 382 |
| 376 EXPECT_EQ(1, m_numBeginUploads); | 383 EXPECT_EQ(1, m_numBeginUploads); |
| 377 EXPECT_EQ(1, m_numEndUploads); | 384 EXPECT_EQ(1, m_numEndUploads); |
| 378 EXPECT_EQ(fullUploadFlushMultipler + partialUploadFlushMultipler, m_numPrevi ousFlushes); | 385 EXPECT_EQ(fullUploadFlushMultipler + partialUploadFlushMultipler, m_numPrevi ousFlushes); |
| 379 EXPECT_EQ(fullMaxRemainderCount + partialMaxRemainderCount, m_numPreviousUpl oads); | 386 EXPECT_EQ(fullMaxRemainderCount + partialMaxRemainderCount, m_numPreviousUpl oads); |
| 387 EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flus h."; | |
| 380 } | 388 } |
| 381 | 389 |
| 382 TEST_F(CCTextureUpdateControllerTest, ManyFullMinRemainderManyPartialMaxRemainde r) | 390 TEST_F(CCTextureUpdateControllerTest, ManyFullMinRemainderManyPartialMaxRemainde r) |
| 383 { | 391 { |
| 384 appendFullUploadsToUpdateQueue(fullMinRemainderCount); | 392 appendFullUploadsToUpdateQueue(fullMinRemainderCount); |
| 385 appendPartialUploadsToUpdateQueue(partialMaxRemainderCount); | 393 appendPartialUploadsToUpdateQueue(partialMaxRemainderCount); |
| 386 DebugScopedSetImplThread implThread; | 394 DebugScopedSetImplThread implThread; |
| 387 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), m_totalUploadCountExpected); | 395 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), m_totalUploadCountExpected); |
| 388 | 396 |
| 389 EXPECT_EQ(1, m_numBeginUploads); | 397 EXPECT_EQ(1, m_numBeginUploads); |
| 390 EXPECT_EQ(1, m_numEndUploads); | 398 EXPECT_EQ(1, m_numEndUploads); |
| 391 EXPECT_EQ((fullUploadFlushMultipler+1) + partialUploadFlushMultipler, m_numP reviousFlushes); | 399 EXPECT_EQ((fullUploadFlushMultipler+1) + partialUploadFlushMultipler, m_numP reviousFlushes); |
| 392 EXPECT_EQ(fullMinRemainderCount + partialMaxRemainderCount, m_numPreviousUpl oads); | 400 EXPECT_EQ(fullMinRemainderCount + partialMaxRemainderCount, m_numPreviousUpl oads); |
| 401 EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flus h."; | |
| 393 } | 402 } |
| 394 | 403 |
| 395 TEST_F(CCTextureUpdateControllerTest, ManyFullMaxRemainderManyPartialMinRemainde r) | 404 TEST_F(CCTextureUpdateControllerTest, ManyFullMaxRemainderManyPartialMinRemainde r) |
| 396 { | 405 { |
| 397 appendFullUploadsToUpdateQueue(fullMaxRemainderCount); | 406 appendFullUploadsToUpdateQueue(fullMaxRemainderCount); |
| 398 appendPartialUploadsToUpdateQueue(partialMinRemainderCount); | 407 appendPartialUploadsToUpdateQueue(partialMinRemainderCount); |
| 399 DebugScopedSetImplThread implThread; | 408 DebugScopedSetImplThread implThread; |
| 400 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), m_totalUploadCountExpected); | 409 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), m_totalUploadCountExpected); |
| 401 | 410 |
| 402 EXPECT_EQ(1, m_numBeginUploads); | 411 EXPECT_EQ(1, m_numBeginUploads); |
| 403 EXPECT_EQ(1, m_numEndUploads); | 412 EXPECT_EQ(1, m_numEndUploads); |
| 404 EXPECT_EQ(fullUploadFlushMultipler + (partialUploadFlushMultipler+1), m_numP reviousFlushes); | 413 EXPECT_EQ(fullUploadFlushMultipler + (partialUploadFlushMultipler+1), m_numP reviousFlushes); |
| 405 EXPECT_EQ(fullMaxRemainderCount + partialMinRemainderCount, m_numPreviousUpl oads); | 414 EXPECT_EQ(fullMaxRemainderCount + partialMinRemainderCount, m_numPreviousUpl oads); |
| 415 EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flus h."; | |
| 406 } | 416 } |
| 407 | 417 |
| 408 | 418 |
| 409 // MULTIPLE UPDATE TESTS | 419 // MULTIPLE UPDATE TESTS |
| 410 // These tests attempt to upload too many textures at once, requiring | 420 // These tests attempt to upload too many textures at once, requiring |
| 411 // multiple calls to update(). | 421 // multiple calls to update(). |
| 412 | 422 |
| 413 int expectedFlushes(int uploads, int flushPeriod) | 423 int expectedFlushes(int uploads, int flushPeriod) |
| 414 { | 424 { |
| 415 return (uploads + flushPeriod - 1) / flushPeriod; | 425 return (uploads + flushPeriod - 1) / flushPeriod; |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 460 EXPECT_EQ(3, m_numEndUploads); | 470 EXPECT_EQ(3, m_numEndUploads); |
| 461 | 471 |
| 462 expectedPreviousFlushes = expectedFlushes(kFullUploads-kMaxUploadsPerUpdate* 2, kFlushPeriodFull) + | 472 expectedPreviousFlushes = expectedFlushes(kFullUploads-kMaxUploadsPerUpdate* 2, kFlushPeriodFull) + |
| 463 expectedFlushes(kPartialUploads, kFlushPeriodParti al); | 473 expectedFlushes(kPartialUploads, kFlushPeriodParti al); |
| 464 EXPECT_EQ(expectedPreviousFlushes, m_numPreviousFlushes); | 474 EXPECT_EQ(expectedPreviousFlushes, m_numPreviousFlushes); |
| 465 | 475 |
| 466 expectedPreviousUploads = (kFullUploads-kMaxUploadsPerUpdate*2)+kPartialUplo ads; | 476 expectedPreviousUploads = (kFullUploads-kMaxUploadsPerUpdate*2)+kPartialUplo ads; |
| 467 EXPECT_EQ(expectedPreviousUploads, m_numPreviousUploads); | 477 EXPECT_EQ(expectedPreviousUploads, m_numPreviousUploads); |
| 468 | 478 |
| 469 // Final sanity checks | 479 // Final sanity checks |
| 480 EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flus h."; | |
| 470 EXPECT_EQ(kFullUploads + kPartialUploads, m_numTotalUploads); | 481 EXPECT_EQ(kFullUploads + kPartialUploads, m_numTotalUploads); |
| 471 } | 482 } |
| 472 | 483 |
| 473 TEST_F(CCTextureUpdateControllerTest, TripleUpdateFinalUpdateAllPartial) | 484 TEST_F(CCTextureUpdateControllerTest, TripleUpdateFinalUpdateAllPartial) |
| 474 { | 485 { |
| 475 const int kMaxUploadsPerUpdate = 40; | 486 const int kMaxUploadsPerUpdate = 40; |
| 476 const int kFullUploads = 70; | 487 const int kFullUploads = 70; |
| 477 const int kPartialUploads = 30; | 488 const int kPartialUploads = 30; |
| 478 | 489 |
| 479 int expectedPreviousFlushes = 0; | 490 int expectedPreviousFlushes = 0; |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 508 | 519 |
| 509 // Third update (30 partial OR 20 partial if 10 partial uploaded in second u pdate) | 520 // Third update (30 partial OR 20 partial if 10 partial uploaded in second u pdate) |
| 510 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), kMaxUploadsPerUpdate); | 521 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), kMaxUploadsPerUpdate); |
| 511 | 522 |
| 512 EXPECT_EQ(3, m_numBeginUploads); | 523 EXPECT_EQ(3, m_numBeginUploads); |
| 513 EXPECT_EQ(3, m_numEndUploads); | 524 EXPECT_EQ(3, m_numEndUploads); |
| 514 EXPECT_LE(m_numPreviousUploads, kMaxUploadsPerUpdate); | 525 EXPECT_LE(m_numPreviousUploads, kMaxUploadsPerUpdate); |
| 515 // Be lenient on the exact number of flushes here as well. | 526 // Be lenient on the exact number of flushes here as well. |
| 516 | 527 |
| 517 // Final sanity checks | 528 // Final sanity checks |
| 529 EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flus h."; | |
| 518 EXPECT_EQ(kFullUploads + kPartialUploads, m_numTotalUploads); | 530 EXPECT_EQ(kFullUploads + kPartialUploads, m_numTotalUploads); |
| 519 } | 531 } |
| 520 | 532 |
| 521 class FakeCCTextureUpdateControllerClient : public cc::CCTextureUpdateController Client { | 533 class FakeCCTextureUpdateControllerClient : public cc::CCTextureUpdateController Client { |
| 522 public: | 534 public: |
| 523 FakeCCTextureUpdateControllerClient() { reset(); } | 535 FakeCCTextureUpdateControllerClient() { reset(); } |
| 524 void reset() { m_readyToFinalizeCalled = false; } | 536 void reset() { m_readyToFinalizeCalled = false; } |
| 525 bool readyToFinalizeCalled() const { return m_readyToFinalizeCalled; } | 537 bool readyToFinalizeCalled() const { return m_readyToFinalizeCalled; } |
| 526 | 538 |
| 527 virtual void readyToFinalizeTextureUpdates() OVERRIDE { m_readyToFinalizeCal led = true; } | 539 virtual void readyToFinalizeTextureUpdates() OVERRIDE { m_readyToFinalizeCal led = true; } |
| 528 | 540 |
| 529 protected: | 541 protected: |
| 530 bool m_readyToFinalizeCalled; | 542 bool m_readyToFinalizeCalled; |
| 531 }; | 543 }; |
| 532 | 544 |
| 533 class FakeCCTextureUpdateController : public cc::CCTextureUpdateController { | 545 class FakeCCTextureUpdateController : public cc::CCTextureUpdateController { |
| 534 public: | 546 public: |
| 535 static PassOwnPtr<FakeCCTextureUpdateController> create(cc::CCTextureUpdateC ontrollerClient* client, cc::CCThread* thread, PassOwnPtr<CCTextureUpdateQueue> queue, CCResourceProvider* resourceProvider, TextureCopier* copier, TextureUploa der* uploader) | 547 static PassOwnPtr<FakeCCTextureUpdateController> create(cc::CCTextureUpdateC ontrollerClient* client, cc::CCThread* thread, PassOwnPtr<CCTextureUpdateQueue> queue, CCResourceProvider* resourceProvider, TextureCopier* copier, TextureUploa der* uploader, size_t maxPartialTextureUpdates) |
| 536 { | 548 { |
| 537 return adoptPtr(new FakeCCTextureUpdateController(client, thread, queue, resourceProvider, copier, uploader)); | 549 return adoptPtr(new FakeCCTextureUpdateController(client, thread, queue, resourceProvider, copier, uploader, maxPartialTextureUpdates)); |
| 538 } | 550 } |
| 539 | 551 |
| 540 void setMonotonicTimeNow(double time) { m_monotonicTimeNow = time; } | 552 void setMonotonicTimeNow(double time) { m_monotonicTimeNow = time; } |
| 541 virtual double monotonicTimeNow() const OVERRIDE { return m_monotonicTimeNow ; } | 553 virtual double monotonicTimeNow() const OVERRIDE { return m_monotonicTimeNow ; } |
| 542 void setUpdateMoreTexturesTime(double time) { m_updateMoreTexturesTime = tim e; } | 554 void setUpdateMoreTexturesTime(double time) { m_updateMoreTexturesTime = tim e; } |
| 543 virtual double updateMoreTexturesTime() const OVERRIDE { return m_updateMore TexturesTime; } | 555 virtual double updateMoreTexturesTime() const OVERRIDE { return m_updateMore TexturesTime; } |
| 544 void setUpdateMoreTexturesSize(size_t size) { m_updateMoreTexturesSize = siz e; } | 556 void setUpdateMoreTexturesSize(size_t size) { m_updateMoreTexturesSize = siz e; } |
| 545 virtual size_t updateMoreTexturesSize() const OVERRIDE { return m_updateMore TexturesSize; } | 557 virtual size_t updateMoreTexturesSize() const OVERRIDE { return m_updateMore TexturesSize; } |
| 546 | 558 |
| 547 protected: | 559 protected: |
| 548 FakeCCTextureUpdateController(cc::CCTextureUpdateControllerClient* client, c c::CCThread* thread, PassOwnPtr<CCTextureUpdateQueue> queue, CCResourceProvider* resourceProvider, TextureCopier* copier, TextureUploader* uploader) | 560 FakeCCTextureUpdateController(cc::CCTextureUpdateControllerClient* client, c c::CCThread* thread, PassOwnPtr<CCTextureUpdateQueue> queue, CCResourceProvider* resourceProvider, TextureCopier* copier, TextureUploader* uploader, size_t maxP artialTextureUpdates) |
| 549 : cc::CCTextureUpdateController(client, thread, queue, resourceProvider, copier, uploader) | 561 : cc::CCTextureUpdateController(client, thread, queue, resourceProvider, copier, uploader, maxPartialTextureUpdates) |
| 550 , m_monotonicTimeNow(0) | 562 , m_monotonicTimeNow(0) |
| 551 , m_updateMoreTexturesTime(0) | 563 , m_updateMoreTexturesTime(0) |
| 552 , m_updateMoreTexturesSize(0) { } | 564 , m_updateMoreTexturesSize(0) { } |
| 553 | 565 |
| 554 double m_monotonicTimeNow; | 566 double m_monotonicTimeNow; |
| 555 double m_updateMoreTexturesTime; | 567 double m_updateMoreTexturesTime; |
| 556 size_t m_updateMoreTexturesSize; | 568 size_t m_updateMoreTexturesSize; |
| 557 }; | 569 }; |
| 558 | 570 |
| 559 static void runPendingTask(FakeCCThread* thread, FakeCCTextureUpdateController* controller) | 571 static void runPendingTask(FakeCCThread* thread, FakeCCTextureUpdateController* controller) |
| 560 { | 572 { |
| 561 EXPECT_TRUE(thread->hasPendingTask()); | 573 EXPECT_TRUE(thread->hasPendingTask()); |
| 562 controller->setMonotonicTimeNow(controller->monotonicTimeNow() + thread->pen dingDelayMs() / 1000.0); | 574 controller->setMonotonicTimeNow(controller->monotonicTimeNow() + thread->pen dingDelayMs() / 1000.0); |
| 563 thread->runPendingTask(); | 575 thread->runPendingTask(); |
| 564 } | 576 } |
| 565 | 577 |
| 566 TEST_F(CCTextureUpdateControllerTest, UpdateMoreTextures) | 578 TEST_F(CCTextureUpdateControllerTest, UpdateMoreTextures) |
| 567 { | 579 { |
| 568 FakeCCTextureUpdateControllerClient client; | 580 FakeCCTextureUpdateControllerClient client; |
| 569 FakeCCThread thread; | 581 FakeCCThread thread; |
| 570 | 582 |
| 571 setMaxUploadCountPerUpdate(1); | 583 setMaxUploadCountPerUpdate(1); |
| 572 appendFullUploadsToUpdateQueue(3); | 584 appendFullUploadsToUpdateQueue(3); |
| 573 appendPartialUploadsToUpdateQueue(0); | 585 appendPartialUploadsToUpdateQueue(0); |
| 574 | 586 |
| 575 DebugScopedSetImplThread implThread; | 587 DebugScopedSetImplThread implThread; |
| 576 OwnPtr<FakeCCTextureUpdateController> controller(FakeCCTextureUpdateControll er::create(&client, &thread, m_queue.release(), m_resourceProvider.get(), &m_cop ier, &m_uploader)); | 588 OwnPtr<FakeCCTextureUpdateController> controller(FakeCCTextureUpdateControll er::create(&client, &thread, m_queue.release(), m_resourceProvider.get(), &m_cop ier, &m_uploader, 0)); |
| 577 | 589 |
| 578 controller->setMonotonicTimeNow(0); | 590 controller->setMonotonicTimeNow(0); |
| 579 controller->setUpdateMoreTexturesTime(0.1); | 591 controller->setUpdateMoreTexturesTime(0.1); |
| 580 controller->setUpdateMoreTexturesSize(1); | 592 controller->setUpdateMoreTexturesSize(1); |
| 581 // Not enough time for any updates. | 593 // Not enough time for any updates. |
| 582 controller->performMoreUpdates(0.09); | 594 controller->performMoreUpdates(0.09); |
| 583 EXPECT_FALSE(thread.hasPendingTask()); | 595 EXPECT_FALSE(thread.hasPendingTask()); |
| 584 EXPECT_EQ(0, m_numBeginUploads); | 596 EXPECT_EQ(0, m_numBeginUploads); |
| 585 EXPECT_EQ(0, m_numEndUploads); | 597 EXPECT_EQ(0, m_numEndUploads); |
| 586 | 598 |
| (...skipping 25 matching lines...) Expand all Loading... | |
| 612 TEST_F(CCTextureUpdateControllerTest, NoMoreUpdates) | 624 TEST_F(CCTextureUpdateControllerTest, NoMoreUpdates) |
| 613 { | 625 { |
| 614 FakeCCTextureUpdateControllerClient client; | 626 FakeCCTextureUpdateControllerClient client; |
| 615 FakeCCThread thread; | 627 FakeCCThread thread; |
| 616 | 628 |
| 617 setMaxUploadCountPerUpdate(1); | 629 setMaxUploadCountPerUpdate(1); |
| 618 appendFullUploadsToUpdateQueue(2); | 630 appendFullUploadsToUpdateQueue(2); |
| 619 appendPartialUploadsToUpdateQueue(0); | 631 appendPartialUploadsToUpdateQueue(0); |
| 620 | 632 |
| 621 DebugScopedSetImplThread implThread; | 633 DebugScopedSetImplThread implThread; |
| 622 OwnPtr<FakeCCTextureUpdateController> controller(FakeCCTextureUpdateControll er::create(&client, &thread, m_queue.release(), m_resourceProvider.get(), &m_cop ier, &m_uploader)); | 634 OwnPtr<FakeCCTextureUpdateController> controller(FakeCCTextureUpdateControll er::create(&client, &thread, m_queue.release(), m_resourceProvider.get(), &m_cop ier, &m_uploader, 0)); |
| 623 | 635 |
| 624 controller->setMonotonicTimeNow(0); | 636 controller->setMonotonicTimeNow(0); |
| 625 controller->setUpdateMoreTexturesTime(0.1); | 637 controller->setUpdateMoreTexturesTime(0.1); |
| 626 controller->setUpdateMoreTexturesSize(1); | 638 controller->setUpdateMoreTexturesSize(1); |
| 627 // Enough time for 3 updates but only 2 necessary. | 639 // Enough time for 3 updates but only 2 necessary. |
| 628 controller->performMoreUpdates(0.31); | 640 controller->performMoreUpdates(0.31); |
| 629 runPendingTask(&thread, controller.get()); | 641 runPendingTask(&thread, controller.get()); |
| 630 runPendingTask(&thread, controller.get()); | 642 runPendingTask(&thread, controller.get()); |
| 631 EXPECT_FALSE(thread.hasPendingTask()); | 643 EXPECT_FALSE(thread.hasPendingTask()); |
| 632 EXPECT_TRUE(client.readyToFinalizeCalled()); | 644 EXPECT_TRUE(client.readyToFinalizeCalled()); |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 651 TEST_F(CCTextureUpdateControllerTest, UpdatesCompleteInFiniteTime) | 663 TEST_F(CCTextureUpdateControllerTest, UpdatesCompleteInFiniteTime) |
| 652 { | 664 { |
| 653 FakeCCTextureUpdateControllerClient client; | 665 FakeCCTextureUpdateControllerClient client; |
| 654 FakeCCThread thread; | 666 FakeCCThread thread; |
| 655 | 667 |
| 656 setMaxUploadCountPerUpdate(1); | 668 setMaxUploadCountPerUpdate(1); |
| 657 appendFullUploadsToUpdateQueue(2); | 669 appendFullUploadsToUpdateQueue(2); |
| 658 appendPartialUploadsToUpdateQueue(0); | 670 appendPartialUploadsToUpdateQueue(0); |
| 659 | 671 |
| 660 DebugScopedSetImplThread implThread; | 672 DebugScopedSetImplThread implThread; |
| 661 OwnPtr<FakeCCTextureUpdateController> controller(FakeCCTextureUpdateControll er::create(&client, &thread, m_queue.release(), m_resourceProvider.get(), &m_cop ier, &m_uploader)); | 673 OwnPtr<FakeCCTextureUpdateController> controller(FakeCCTextureUpdateControll er::create(&client, &thread, m_queue.release(), m_resourceProvider.get(), &m_cop ier, &m_uploader, 0)); |
| 662 | 674 |
| 663 controller->setMonotonicTimeNow(0); | 675 controller->setMonotonicTimeNow(0); |
| 664 controller->setUpdateMoreTexturesTime(0.5); | 676 controller->setUpdateMoreTexturesTime(0.5); |
| 665 controller->setUpdateMoreTexturesSize(1); | 677 controller->setUpdateMoreTexturesSize(1); |
| 666 | 678 |
| 667 for (int i = 0; i < 100; i++) { | 679 for (int i = 0; i < 100; i++) { |
| 668 if (client.readyToFinalizeCalled()) | 680 if (client.readyToFinalizeCalled()) |
| 669 break; | 681 break; |
| 670 | 682 |
| 671 // Not enough time for any updates. | 683 // Not enough time for any updates. |
| 672 controller->performMoreUpdates(0.4); | 684 controller->performMoreUpdates(0.4); |
| 673 | 685 |
| 674 if (thread.hasPendingTask()) | 686 if (thread.hasPendingTask()) |
| 675 runPendingTask(&thread, controller.get()); | 687 runPendingTask(&thread, controller.get()); |
| 676 } | 688 } |
| 677 | 689 |
| 678 EXPECT_FALSE(thread.hasPendingTask()); | 690 EXPECT_FALSE(thread.hasPendingTask()); |
| 679 EXPECT_TRUE(client.readyToFinalizeCalled()); | 691 EXPECT_TRUE(client.readyToFinalizeCalled()); |
| 680 EXPECT_EQ(2, m_numBeginUploads); | 692 EXPECT_EQ(2, m_numBeginUploads); |
| 681 EXPECT_EQ(2, m_numEndUploads); | 693 EXPECT_EQ(2, m_numEndUploads); |
| 682 EXPECT_EQ(2, m_numTotalUploads); | 694 EXPECT_EQ(2, m_numTotalUploads); |
| 683 } | 695 } |
| 684 | 696 |
| 685 } // namespace | 697 } // namespace |
| OLD | NEW |