| 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 | |
| 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 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 254 // ONE UPLOAD TESTS | 254 // ONE UPLOAD TESTS |
| 255 TEST_F(CCTextureUpdateControllerTest, OneFullUpload) | 255 TEST_F(CCTextureUpdateControllerTest, OneFullUpload) |
| 256 { | 256 { |
| 257 appendFullUploadsToUpdateQueue(1); | 257 appendFullUploadsToUpdateQueue(1); |
| 258 appendPartialUploadsToUpdateQueue(0); | 258 appendPartialUploadsToUpdateQueue(0); |
| 259 DebugScopedSetImplThread implThread; | 259 DebugScopedSetImplThread implThread; |
| 260 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa
der, m_queue.get()); | 260 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa
der, m_queue.get()); |
| 261 | 261 |
| 262 EXPECT_EQ(1, m_numPreviousFlushes); | 262 EXPECT_EQ(1, m_numPreviousFlushes); |
| 263 EXPECT_EQ(1, m_numPreviousUploads); | 263 EXPECT_EQ(1, m_numPreviousUploads); |
| 264 EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flus
h."; |
| 264 } | 265 } |
| 265 | 266 |
| 266 TEST_F(CCTextureUpdateControllerTest, OnePartialUpload) | 267 TEST_F(CCTextureUpdateControllerTest, OnePartialUpload) |
| 267 { | 268 { |
| 268 appendFullUploadsToUpdateQueue(0); | 269 appendFullUploadsToUpdateQueue(0); |
| 269 appendPartialUploadsToUpdateQueue(1); | 270 appendPartialUploadsToUpdateQueue(1); |
| 270 DebugScopedSetImplThread implThread; | 271 DebugScopedSetImplThread implThread; |
| 271 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa
der, m_queue.get()); | 272 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa
der, m_queue.get()); |
| 272 | 273 |
| 273 EXPECT_EQ(1, m_numPreviousFlushes); | 274 EXPECT_EQ(1, m_numPreviousFlushes); |
| 274 EXPECT_EQ(1, m_numPreviousUploads); | 275 EXPECT_EQ(1, m_numPreviousUploads); |
| 276 EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flus
h."; |
| 275 } | 277 } |
| 276 | 278 |
| 277 TEST_F(CCTextureUpdateControllerTest, OneFullOnePartialUpload) | 279 TEST_F(CCTextureUpdateControllerTest, OneFullOnePartialUpload) |
| 278 { | 280 { |
| 279 appendFullUploadsToUpdateQueue(1); | 281 appendFullUploadsToUpdateQueue(1); |
| 280 appendPartialUploadsToUpdateQueue(1); | 282 appendPartialUploadsToUpdateQueue(1); |
| 281 DebugScopedSetImplThread implThread; | 283 DebugScopedSetImplThread implThread; |
| 282 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa
der, m_queue.get()); | 284 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa
der, m_queue.get()); |
| 283 | 285 |
| 284 EXPECT_EQ(1, m_numPreviousFlushes); | 286 EXPECT_EQ(1, m_numPreviousFlushes); |
| 285 EXPECT_EQ(2, m_numPreviousUploads); | 287 EXPECT_EQ(2, m_numPreviousUploads); |
| 288 EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flus
h."; |
| 286 } | 289 } |
| 287 | 290 |
| 288 | 291 |
| 289 // This class of tests upload a number of textures that is a multiple of the flu
sh period. | 292 // This class of tests upload a number of textures that is a multiple of the flu
sh period. |
| 290 const int fullUploadFlushMultipler = 7; | 293 const int fullUploadFlushMultipler = 7; |
| 291 const int fullCount = fullUploadFlushMultipler * kFlushPeriodFull; | 294 const int fullCount = fullUploadFlushMultipler * kFlushPeriodFull; |
| 292 | 295 |
| 293 const int partialUploadFlushMultipler = 11; | 296 const int partialUploadFlushMultipler = 11; |
| 294 const int partialCount = partialUploadFlushMultipler * kFlushPeriodPartial; | 297 const int partialCount = partialUploadFlushMultipler * kFlushPeriodPartial; |
| 295 | 298 |
| 296 TEST_F(CCTextureUpdateControllerTest, ManyFullUploads) | 299 TEST_F(CCTextureUpdateControllerTest, ManyFullUploads) |
| 297 { | 300 { |
| 298 appendFullUploadsToUpdateQueue(fullCount); | 301 appendFullUploadsToUpdateQueue(fullCount); |
| 299 appendPartialUploadsToUpdateQueue(0); | 302 appendPartialUploadsToUpdateQueue(0); |
| 300 DebugScopedSetImplThread implThread; | 303 DebugScopedSetImplThread implThread; |
| 301 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa
der, m_queue.get()); | 304 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa
der, m_queue.get()); |
| 302 | 305 |
| 303 EXPECT_EQ(fullUploadFlushMultipler, m_numPreviousFlushes); | 306 EXPECT_EQ(fullUploadFlushMultipler, m_numPreviousFlushes); |
| 304 EXPECT_EQ(fullCount, m_numPreviousUploads); | 307 EXPECT_EQ(fullCount, m_numPreviousUploads); |
| 308 EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flus
h."; |
| 305 } | 309 } |
| 306 | 310 |
| 307 TEST_F(CCTextureUpdateControllerTest, ManyPartialUploads) | 311 TEST_F(CCTextureUpdateControllerTest, ManyPartialUploads) |
| 308 { | 312 { |
| 309 appendFullUploadsToUpdateQueue(0); | 313 appendFullUploadsToUpdateQueue(0); |
| 310 appendPartialUploadsToUpdateQueue(partialCount); | 314 appendPartialUploadsToUpdateQueue(partialCount); |
| 311 DebugScopedSetImplThread implThread; | 315 DebugScopedSetImplThread implThread; |
| 312 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa
der, m_queue.get()); | 316 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa
der, m_queue.get()); |
| 313 | 317 |
| 314 EXPECT_EQ(partialUploadFlushMultipler, m_numPreviousFlushes); | 318 EXPECT_EQ(partialUploadFlushMultipler, m_numPreviousFlushes); |
| 315 EXPECT_EQ(partialCount, m_numPreviousUploads); | 319 EXPECT_EQ(partialCount, m_numPreviousUploads); |
| 320 EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flus
h."; |
| 316 } | 321 } |
| 317 | 322 |
| 318 TEST_F(CCTextureUpdateControllerTest, ManyFullManyPartialUploads) | 323 TEST_F(CCTextureUpdateControllerTest, ManyFullManyPartialUploads) |
| 319 { | 324 { |
| 320 appendFullUploadsToUpdateQueue(fullCount); | 325 appendFullUploadsToUpdateQueue(fullCount); |
| 321 appendPartialUploadsToUpdateQueue(partialCount); | 326 appendPartialUploadsToUpdateQueue(partialCount); |
| 322 DebugScopedSetImplThread implThread; | 327 DebugScopedSetImplThread implThread; |
| 323 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa
der, m_queue.get()); | 328 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa
der, m_queue.get()); |
| 324 | 329 |
| 325 EXPECT_EQ(fullUploadFlushMultipler + partialUploadFlushMultipler, m_numPrevi
ousFlushes); | 330 EXPECT_EQ(fullUploadFlushMultipler + partialUploadFlushMultipler, m_numPrevi
ousFlushes); |
| 326 EXPECT_EQ(fullCount + partialCount, m_numPreviousUploads); | 331 EXPECT_EQ(fullCount + partialCount, m_numPreviousUploads); |
| 332 EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flus
h."; |
| 327 } | 333 } |
| 328 | 334 |
| 329 class FakeCCTextureUpdateControllerClient : public cc::CCTextureUpdateController
Client { | 335 class FakeCCTextureUpdateControllerClient : public cc::CCTextureUpdateController
Client { |
| 330 public: | 336 public: |
| 331 FakeCCTextureUpdateControllerClient() { reset(); } | 337 FakeCCTextureUpdateControllerClient() { reset(); } |
| 332 void reset() { m_readyToFinalizeCalled = false; } | 338 void reset() { m_readyToFinalizeCalled = false; } |
| 333 bool readyToFinalizeCalled() const { return m_readyToFinalizeCalled; } | 339 bool readyToFinalizeCalled() const { return m_readyToFinalizeCalled; } |
| 334 | 340 |
| 335 virtual void readyToFinalizeTextureUpdates() OVERRIDE { m_readyToFinalizeCal
led = true; } | 341 virtual void readyToFinalizeTextureUpdates() OVERRIDE { m_readyToFinalizeCal
led = true; } |
| 336 | 342 |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 484 } | 490 } |
| 485 | 491 |
| 486 EXPECT_FALSE(thread.hasPendingTask()); | 492 EXPECT_FALSE(thread.hasPendingTask()); |
| 487 EXPECT_TRUE(client.readyToFinalizeCalled()); | 493 EXPECT_TRUE(client.readyToFinalizeCalled()); |
| 488 EXPECT_EQ(2, m_numBeginUploads); | 494 EXPECT_EQ(2, m_numBeginUploads); |
| 489 EXPECT_EQ(2, m_numEndUploads); | 495 EXPECT_EQ(2, m_numEndUploads); |
| 490 EXPECT_EQ(2, m_numTotalUploads); | 496 EXPECT_EQ(2, m_numTotalUploads); |
| 491 } | 497 } |
| 492 | 498 |
| 493 } // namespace | 499 } // namespace |
| OLD | NEW |