1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/kernelhwsrv/kerneltest/e32test/dmav2/test_cases.cpp Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,1352 @@
1.4 +/*
1.5 +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
1.6 +* All rights reserved.
1.7 +* This component and the accompanying materials are made available
1.8 +* under the terms of "Eclipse Public License v1.0"
1.9 +* which accompanies this distribution, and is available
1.10 +* at the URL "http://www.eclipse.org/legal/epl-v10.html".
1.11 +*
1.12 +* Initial Contributors:
1.13 +* Nokia Corporation - initial contribution.
1.14 +*
1.15 +* Contributors:
1.16 +*
1.17 +* Description:
1.18 +* This file contains statically defined test cases, a pointer to each
1.19 +* new test case should be entered in StaticTestArray
1.20 +*
1.21 +*/
1.22 +
1.23 +#include "t_dma2.h"
1.24 +#include "cap_reqs.h"
1.25 +
1.26 +const TCallbackRecord threadCallback(TCallbackRecord::EThread,1);
1.27 +const TCallbackRecord isrCallback(TCallbackRecord::EIsr,1);
1.28 +
1.29 +const TInt size = 128 * KKilo;
1.30 +//--------------------------------------------------------------------------------------------
1.31 +//! @SYMTestCaseID KBASE-DMA-2560
1.32 +//! @SYMTestType CIT
1.33 +//! @SYMPREQ REQ
1.34 +//! @SYMTestCaseDesc Simple DMA transfer test using CSingleTransferTest and New DMA APIs
1.35 +//!
1.36 +//! @SYMTestActions
1.37 +//! 1.
1.38 +//! 2.
1.39 +//!
1.40 +//!
1.41 +//! @SYMTestExpectedResults
1.42 +//! 1.
1.43 +//! 2.
1.44 +//!
1.45 +//!
1.46 +//! @SYMTestPriority High
1.47 +//! @SYMTestStatus Implemented
1.48 +//----------------------------------------------------------------------------------------------
1.49 +namespace Simple_1
1.50 + {
1.51 + TDmaTransferArgs transferArgs(0, size, size, KDmaMemAddr);
1.52 +
1.53 + const TResultSet expectedResults(threadCallback);
1.54 +
1.55 + CSingleTransferTest simpleTest(_L("Simple Test - New DMA APIs"), 1, transferArgs, expectedResults);
1.56 +
1.57 + TTestCase testCase(&simpleTest, EFalse, capAboveV1);
1.58 + TTestCase testCaseConcurrent(&simpleTest, ETrue, capAboveV1);
1.59 + }
1.60 +
1.61 +//----------------------------------------------------------------------------------------------
1.62 +//! @SYMTestCaseID KBASE-DMA-2561
1.63 +//! @SYMTestType CIT
1.64 +//! @SYMPREQ REQ
1.65 +//! @SYMTestCaseDesc Simple DMA transfer test using CSingleTransferTest and OLD DMA APIs
1.66 +//!
1.67 +//! @SYMTestActions
1.68 +//! 1.
1.69 +//! 2.
1.70 +//!
1.71 +//!
1.72 +//! @SYMTestExpectedResults
1.73 +//! 1.
1.74 +//! 2.
1.75 +//!
1.76 +//!
1.77 +//! @SYMTestPriority High
1.78 +//! @SYMTestStatus Implemented
1.79 +//----------------------------------------------------------------------------------------------
1.80 +namespace Simple_2
1.81 + {
1.82 + TDmaTransferArgs transferArgs(0, size, size, KDmaMemAddr);
1.83 +
1.84 + const TResultSet expectedResults(threadCallback);
1.85 +
1.86 + CSingleTransferTest simpleTest = CSingleTransferTest(_L("Simple Test - Old DMA APIs"), 1, transferArgs, expectedResults, 0).
1.87 + UseNewDmaApi(EFalse);
1.88 +
1.89 + TTestCase testCase(&simpleTest, EFalse);
1.90 + TTestCase testCaseConcurrent(&simpleTest, ETrue);
1.91 + }
1.92 +
1.93 +//----------------------------------------------------------------------------------------------
1.94 +//! @SYMTestCaseID KBASE-DMA-2573
1.95 +//! @SYMTestType CIT
1.96 +//! @SYMPREQ REQ
1.97 +//! @SYMTestCaseDesc DMA ISR Callback test (Isr Callback - use old request Ctor)
1.98 +//!
1.99 +//! @SYMTestActions
1.100 +//! 1.
1.101 +//! 2.
1.102 +//!
1.103 +//!
1.104 +//! @SYMTestExpectedResults
1.105 +//! 1.
1.106 +//! 2.
1.107 +//!
1.108 +//!
1.109 +//! @SYMTestPriority High
1.110 +//! @SYMTestStatus Implemented
1.111 +//----------------------------------------------------------------------------------------------
1.112 +namespace Callback
1.113 + {
1.114 + TDmaTransferArgs transferArgs(0, size, size, KDmaMemAddr, KDmaSyncAuto, KDmaRequestCallbackFromIsr);
1.115 +
1.116 + const TResultSet expectedResults(isrCallback);
1.117 +
1.118 + CSingleTransferTest isrTest(_L("Isr Callback"), 1, transferArgs, expectedResults);
1.119 + TTestCase testCase(&isrTest, EFalse, capAboveV1);
1.120 +
1.121 +
1.122 + const TRequestResults fragmentFails = TRequestResults().
1.123 + FragmentationResult(KErrArgument).
1.124 + QueueResult(KErrUnknown);
1.125 +
1.126 + const TResultSet expectedResultsFail = TResultSet(EFalse).
1.127 + ChannelOpenResult(KErrNone).
1.128 + RequestResult(fragmentFails).
1.129 + PostTransferResult(1); // PostTransferResult of 1 means buffers don't match
1.130 +
1.131 + CSingleTransferTest isrTestOldRequest = CSingleTransferTest(_L("Isr Callback - use old request Ctor"), 1, transferArgs, expectedResultsFail)
1.132 + .UseNewRequest(EFalse);
1.133 + TTestCase testCaseOldRequest(&isrTestOldRequest, EFalse, capAboveV1);
1.134 + }
1.135 +
1.136 +//----------------------------------------------------------------------------------------------
1.137 +//! @SYMTestCaseID KBASE-DMA-2574,KBASE-DMA-2575
1.138 +//! @SYMTestType CIT
1.139 +//! @SYMPREQ REQ
1.140 +//! @SYMTestCaseDesc DMA ISR Reque test
1.141 +//!
1.142 +//! @SYMTestActions
1.143 +//! 1.
1.144 +//! 2.
1.145 +//!
1.146 +//!
1.147 +//! @SYMTestExpectedResults
1.148 +//! 1.
1.149 +//! 2.
1.150 +//!
1.151 +//!
1.152 +//! @SYMTestPriority High
1.153 +//! @SYMTestStatus Implemented
1.154 +//----------------------------------------------------------------------------------------------
1.155 +namespace ISR_Reque
1.156 + {
1.157 + const TInt size = 4 * KKilo;
1.158 + TDmaTransferArgs tferArgs(0, 2*size, size, KDmaMemAddr, KDmaSyncAuto, KDmaRequestCallbackFromIsr);
1.159 +
1.160 + const TRequestResults requestResult(KErrNone, 1); // request must be in a single fragment
1.161 +
1.162 + namespace endOnIsrCb
1.163 + {
1.164 + TIsrRequeArgs requeArgs[] = {
1.165 + TIsrRequeArgs(),
1.166 + TIsrRequeArgs(size,3*size,size,0, ETrue),
1.167 + TIsrRequeArgs(size,4*size,size,0, ETrue),
1.168 + TIsrRequeArgs(0,5*size,size,0, ETrue),
1.169 + };
1.170 + const TInt count = ARRAY_LENGTH(requeArgs);
1.171 +
1.172 + // we expect a cb for each requeue + 1 for the original
1.173 + // transfer
1.174 + const TCallbackRecord callbackRecord = TCallbackRecord(TCallbackRecord::EIsr, count + 1).IsrRedoResult(KErrNone);
1.175 + const TResultSet expected(KErrNone, requestResult, KErrNone, callbackRecord);
1.176 +
1.177 + TTestCase testCase(new (ELeave) CIsrRequeTest(_L("4 Requeues - end on isr cb"), 1, tferArgs, requeArgs, count, expected, &KPreTransferIncrBytes, &KCompareSrcDst), ETrue, capAboveV1);
1.178 + }
1.179 +
1.180 + namespace endOnThreadCb
1.181 + {
1.182 + TIsrRequeArgs requeArgs[] = {
1.183 + TIsrRequeArgs(),
1.184 + TIsrRequeArgs(size,3*size,size,0, ETrue),
1.185 + TIsrRequeArgs(size,4*size,size,0, ETrue),
1.186 + TIsrRequeArgs(0,5*size,size,0, EFalse),
1.187 + };
1.188 + const TInt count = ARRAY_LENGTH(requeArgs);
1.189 +
1.190 + const TCallbackRecord callbackRecord = TCallbackRecord(TCallbackRecord::EThread, count + 1).IsrRedoResult(KErrNone);
1.191 + const TResultSet expected(KErrNone, requestResult, KErrNone, callbackRecord);
1.192 +
1.193 + TTestCase testCase(new (ELeave) CIsrRequeTest(_L("4 Requeues - end on thread cb"), 1, tferArgs, requeArgs, count, expected, &KPreTransferIncrBytes, &KCompareSrcDst), ETrue, capAboveV1);
1.194 + }
1.195 +
1.196 + namespace changeSize
1.197 + {
1.198 + TIsrRequeArgs requeArgs[] = {
1.199 + TIsrRequeArgs(3*size,5*size,2*size,0, EFalse),
1.200 + };
1.201 + const TInt count = ARRAY_LENGTH(requeArgs);
1.202 +
1.203 + const TCallbackRecord callbackRecord = TCallbackRecord(TCallbackRecord::EThread, count + 1).IsrRedoResult(KErrNone);
1.204 + const TResultSet expected(KErrNone, requestResult, KErrNone, callbackRecord);
1.205 +
1.206 + TTestCase testCase(new (ELeave) CIsrRequeTest(_L("1 Requeues - change transfer size"), 1, tferArgs, requeArgs, count, expected, &KPreTransferIncrBytes, &KCompareSrcDst), ETrue, capAboveV1);
1.207 + }
1.208 +
1.209 + namespace endOnRedo
1.210 + {
1.211 + // TODO have made this bigger than 4k so that we don't miss the second interrupt when tracing enabled
1.212 + // this indicates the PSL's interrupt handler misses an interrupt if it occurs during the interrupt.
1.213 + const TInt size = 0x10000;
1.214 + TDmaTransferArgs tferArgs(0, 2*size, size, KDmaMemAddr, KDmaSyncAuto, KDmaRequestCallbackFromIsr);
1.215 +
1.216 + TIsrRequeArgs requeArgs[] = {
1.217 + TIsrRequeArgs(3*size,5*size,2*size,0, ETrue),
1.218 + TIsrRequeArgs() //repeat the previous transfer
1.219 + };
1.220 + const TInt count = ARRAY_LENGTH(requeArgs);
1.221 +
1.222 + const TCallbackRecord callbackRecord = TCallbackRecord(TCallbackRecord::EIsr, count + 1).IsrRedoResult(KErrNone);
1.223 + const TResultSet expected(KErrNone, requestResult, KErrNone, callbackRecord);
1.224 +
1.225 + TTestCase testCase(new (ELeave) CIsrRequeTest(_L("2 Requeues - Isr redo request repeated"), 1, tferArgs, requeArgs, count, expected, &KPreTransferIncrBytes, &KCompareSrcDst), EFalse, capAboveV1);
1.226 + }
1.227 +
1.228 + namespace invalidAddresses
1.229 + {
1.230 + TIsrRequeArgs requeArgs[] = {
1.231 + TIsrRequeArgs(size, size)
1.232 + };
1.233 + const TInt count = ARRAY_LENGTH(requeArgs);
1.234 +
1.235 + const TCallbackRecord callbackRecord = TCallbackRecord(TCallbackRecord::EIsr, 1).IsrRedoResult(KErrArgument);
1.236 + const TResultSet expected(KErrNone, requestResult, KErrUnknown, callbackRecord);
1.237 +
1.238 + // pre and post test would fail because of bad requeue parameters
1.239 + TTestCase testCase(new (ELeave) CIsrRequeTest(_L("Requeue with matching addresses"), 1, tferArgs, requeArgs, count, expected, NULL, NULL), ETrue, capAboveV1);
1.240 + }
1.241 +
1.242 + namespace multipleFragments
1.243 + {
1.244 + TIsrRequeArgs requeArgs[] = {
1.245 + TIsrRequeArgs()
1.246 + };
1.247 + const TInt count = ARRAY_LENGTH(requeArgs);
1.248 +
1.249 + const TCallbackRecord callbackRecord = TCallbackRecord(TCallbackRecord::EThread, count + 1).IsrRedoResult(KErrNone);
1.250 +
1.251 + TRequestResults results2Fragments = TRequestResults(requestResult).FragmentCount(2);
1.252 + const TResultSet expected(KErrNone, results2Fragments, KErrNone, callbackRecord);
1.253 +
1.254 + TTestCase testCase(new (ELeave) CIsrRequeTest(_L("Attempt to Requeue 2 fragment request"), 1, tferArgs, requeArgs, count, expected, &KPreTransferIncrBytes, &KCompareSrcDst, size/2), ETrue, capAboveV1);
1.255 +
1.256 + }
1.257 + }
1.258 +
1.259 +//----------------------------------------------------------------------------------------------
1.260 +//! @SYMTestCaseID PBASE-DMA-FUNC-xxx
1.261 +//! @SYMTestType CIT
1.262 +//! @SYMPREQ REQ
1.263 +//! @SYMTestCaseDesc DMA Multiple transfer test
1.264 +//! @SYMTestActions
1.265 +//! 1.
1.266 +//! 2.
1.267 +//!
1.268 +//!
1.269 +//! @SYMTestExpectedResults
1.270 +//! 1.
1.271 +//! 2.
1.272 +//!
1.273 +//!
1.274 +//! @SYMTestPriority High
1.275 +//! @SYMTestStatus Implemented
1.276 +//----------------------------------------------------------------------------------------------
1.277 +namespace Multipart
1.278 + {
1.279 + // need long transfer, to try and force adjacent
1.280 + // requests to be concatinated
1.281 + const TInt size = 2 * KMega;
1.282 + const TDmaTransferArgs transferArgArray[] = {
1.283 + TDmaTransferArgs(0, size, size, KDmaMemAddr),
1.284 + TDmaTransferArgs(size, 2 * size, size, KDmaMemAddr)
1.285 + };
1.286 +
1.287 + const TResultSet expected[] =
1.288 + {
1.289 + TResultSet(),
1.290 + TResultSet()
1.291 + };
1.292 + const TResultSet expectedResults(isrCallback);
1.293 +
1.294 + CMultiTransferTest multipart =
1.295 + CMultiTransferTest(_L("Sg request concatination"), 1, transferArgArray, expected, ARRAY_LENGTH(transferArgArray))
1.296 + .SetPreTransferTest(&KPreTransferIncrBytes)
1.297 + .SetPostTransferTest(&KCompareSrcDst);
1.298 +
1.299 + TTestCase testCase(&multipart, EFalse, hwDesWanted_skip);
1.300 + }
1.301 +
1.302 +//----------------------------------------------------------------------------------------------
1.303 +//! @SYMTestCaseID KBASE-DMA-2580
1.304 +//! @SYMTestType CIT
1.305 +//! @SYMPREQ REQ
1.306 +//! @SYMTestCaseDesc These tests attempt to queue ISR cb requests while the queue is not
1.307 +//! empty and queing normal requests when an ISR cb is pending
1.308 +//! @SYMTestActions
1.309 +//! 1.
1.310 +//! 2.
1.311 +//!
1.312 +//!
1.313 +//! @SYMTestExpectedResults
1.314 +//! 1.
1.315 +//! 2.
1.316 +//!
1.317 +//!
1.318 +//! @SYMTestPriority High
1.319 +//! @SYMTestStatus Implemented
1.320 +//----------------------------------------------------------------------------------------------
1.321 +namespace IsrAndDfc
1.322 + {
1.323 + // need long transfer, so that 1st request is still queued
1.324 + // when the second one is queued
1.325 + // TODO pause is the better way to ensure this
1.326 + //const TInt size = 2 * KMega;
1.327 + //TODO have changed size to ensure that the first isr callback request in IsrBeforeDfc
1.328 + //will only have one fragment
1.329 + const TInt size = 0x40000;
1.330 + TDmaTransferArgs dfcTransfer(0, size, size, KDmaMemAddr);
1.331 + TDmaTransferArgs isrTransfer(size, 2 * size, size, KDmaMemAddr, KDmaSyncAuto, KDmaRequestCallbackFromIsr);
1.332 +
1.333 + const TResultSet success = TResultSet();
1.334 + TResultSet queueFailure = TResultSet().
1.335 + RequestResult(TRequestResults().QueueResult(KErrGeneral)).
1.336 + CallbackRecord(TCallbackRecord::Empty()).
1.337 + PostTransferResult(1);
1.338 +
1.339 + namespace DfcBeforeIsr
1.340 + {
1.341 + const TDmaTransferArgs transferArgArray[] = {
1.342 + dfcTransfer,
1.343 + isrTransfer
1.344 + };
1.345 +
1.346 + const TResultSet expected[] =
1.347 + {
1.348 + success,
1.349 + queueFailure
1.350 + };
1.351 + CMultiTransferTest dfcBeforeIsr =
1.352 + CMultiTransferTest(_L("DFC cb req before ISR cb req "), 1, transferArgArray, expected, ARRAY_LENGTH(transferArgArray))
1.353 + .SetPreTransferTest(&KPreTransferIncrBytes)
1.354 + .SetPostTransferTest(&KCompareSrcDst);
1.355 + TTestCase testCase(&dfcBeforeIsr, EFalse, hwDesWanted_skip);
1.356 + }
1.357 +
1.358 + namespace IsrBeforeDfc
1.359 + {
1.360 + const TDmaTransferArgs transferArgArray[] = {
1.361 + isrTransfer,
1.362 + dfcTransfer
1.363 + };
1.364 +
1.365 + TResultSet isrSuccess = TResultSet(success).CallbackRecord(isrCallback);
1.366 + const TResultSet expected[] =
1.367 + {
1.368 + isrSuccess,
1.369 + queueFailure
1.370 + };
1.371 + CMultiTransferTest dfcBeforeIsr =
1.372 + CMultiTransferTest(_L("ISR cb req before DFC cb req "), 1, transferArgArray, expected, ARRAY_LENGTH(transferArgArray))
1.373 + .SetPreTransferTest(&KPreTransferIncrBytes)
1.374 + .SetPostTransferTest(&KCompareSrcDst);
1.375 + TTestCase testCase(&dfcBeforeIsr, EFalse, hwDesWanted_skip);
1.376 + }
1.377 +
1.378 + }
1.379 +
1.380 +//----------------------------------------------------------------------------------------------
1.381 +//! @SYMTestCaseID PBASE-DMA-FUNC-xxx
1.382 +//! @SYMTestType CIT
1.383 +//! @SYMPREQ REQ
1.384 +//! @SYMTestCaseDesc DMA 2D transfer test
1.385 +//!
1.386 +//! @SYMTestActions
1.387 +//! 1.
1.388 +//! 2.
1.389 +//!
1.390 +//!
1.391 +//! @SYMTestExpectedResults
1.392 +//! 1.
1.393 +//! 2.
1.394 +//!
1.395 +//!
1.396 +//! @SYMTestPriority High
1.397 +//! @SYMTestStatus Implemented
1.398 +//----------------------------------------------------------------------------------------------
1.399 +namespace _2D_Test
1.400 + {
1.401 + // Image @ 0x0 with 640x480 pixels and 24 bits/pixel.
1.402 +
1.403 + TDmaTransferConfig src(
1.404 + 0, /*iAddr*/
1.405 + 3, /*iElementSize*/
1.406 + 6, /*iElementsPerFrame*/
1.407 + 4, /*iFramesPerTransfer*/
1.408 + 0, /*iElementSkip*/
1.409 + 0, /*iFrameSkip*/
1.410 + KDmaMemAddr /*iFlags*/
1.411 + );
1.412 +
1.413 + TDmaTransferConfig dst(
1.414 + 0x708000, /*iAddr*/
1.415 + 3, /*iElementSize*/
1.416 + 640, /*iElementsPerFrame*/
1.417 + 480, /*iFramesPerTransfer*/
1.418 + 1437, /*iElementSkip*/
1.419 + -920166, /*iFrameSkip*/
1.420 + KDmaMemAddr /*iFlags*/
1.421 + );
1.422 +
1.423 + TDmaTransferArgs transferArgs2D(src, dst);
1.424 +
1.425 + TResultSet expectedResults; //all KErrNone
1.426 +
1.427 + //source buffer is currently filled with increasing values
1.428 + //instead of an image, but the test is still valid
1.429 + CSingleTransferTest transfer2d(_L("2D Transfer"), 1, transferArgs2D, expectedResults, 0, &KCompare2D);
1.430 +
1.431 + TTestCase testCase2d(&transfer2d, EFalse, cap_2DRequired, capAboveV1);
1.432 + }
1.433 +
1.434 +//----------------------------------------------------------------------------------------------
1.435 +//! @SYMTestCaseID KBASE-DMA-2565
1.436 +//! @SYMTestType CIT
1.437 +//! @SYMPREQ REQ
1.438 +//! @SYMTestCaseDesc DMA Fragmentation count test
1.439 +//!
1.440 +//! @SYMTestActions
1.441 +//! 1.
1.442 +//! 2.
1.443 +//!
1.444 +//!
1.445 +//! @SYMTestExpectedResults
1.446 +//! 1.
1.447 +//! 2.
1.448 +//!
1.449 +//!
1.450 +//! @SYMTestPriority High
1.451 +//! @SYMTestStatus Implemented
1.452 +//----------------------------------------------------------------------------------------------
1.453 +namespace FragmentationCount
1.454 + {
1.455 + TDmaTransferArgs transferArgs(0, size, size, KDmaMemAddr);
1.456 +
1.457 + const TRequestResults requestResult(KErrNone, 128);
1.458 + const TResultSet expectedResults(KErrNone, requestResult, KErrNone, threadCallback);
1.459 + CSingleTransferTest test1(_L("Fragmentation Count - 128 fragments"), 1, transferArgs, expectedResults, KKilo);
1.460 + TTestCase testCase(&test1, EFalse);
1.461 +
1.462 + const TRequestResults requestResult2(KErrNone, 4);
1.463 + const TResultSet expectedResults2(KErrNone, requestResult2, KErrNone, threadCallback);
1.464 + CSingleTransferTest test2(_L("Fragmentation Count - 4 fragments"), 1, transferArgs, expectedResults2, 32*KKilo);
1.465 + TTestCase testCase2(&test2, EFalse);
1.466 + }
1.467 +
1.468 +//----------------------------------------------------------------------------------------------
1.469 +//! @SYMTestCaseID KBASE-DMA-2584,KBASE-DMA-2585
1.470 +//! @SYMTestType CIT
1.471 +//! @SYMPREQ REQ
1.472 +//! @SYMTestCaseDesc DMA Benchmark tests
1.473 +//!
1.474 +//! @SYMTestActions
1.475 +//! 1.
1.476 +//! 2.
1.477 +//!
1.478 +//!
1.479 +//! @SYMTestExpectedResults
1.480 +//! 1.
1.481 +//! 2.
1.482 +//!
1.483 +//!
1.484 +//! @SYMTestPriority High
1.485 +//! @SYMTestStatus Implemented
1.486 +//-----------------------------------------------------------------------------------------------
1.487 +namespace Benchmark
1.488 + {
1.489 + const TInt bmIters = 10;
1.490 + namespace Frag
1.491 + {
1.492 + const TInt size = 1 * KMega;
1.493 + TDmaTransferArgs transferArgs(0, size, size, KDmaMemAddr);
1.494 +
1.495 + TTestCase testCase_256k(new (ELeave) CDmaBmFragmentation(_L("1 Mb transfer - 256k frag size"), bmIters, transferArgs, 256 * KKilo), EFalse);
1.496 + TTestCase testCase_8k(new (ELeave) CDmaBmFragmentation(_L("1 Mb transfer - 8k frag size"), bmIters, transferArgs, 8 * KKilo), EFalse);
1.497 + }
1.498 +
1.499 + namespace Transfer
1.500 + {
1.501 + namespace _4Bytes
1.502 + {
1.503 + const TInt size = 4;
1.504 + TDmaTransferArgs transferArgs(0, size, size, KDmaMemAddr);
1.505 +
1.506 + CDmaBmTransfer bmTest(_L("4 bytes"), bmIters, transferArgs, 0);
1.507 + TTestCase testCase(&bmTest, EFalse);
1.508 + }
1.509 + namespace _128K
1.510 + {
1.511 + const TInt size = 128 * KKilo;
1.512 + TDmaTransferArgs transferArgs(0, size, size, KDmaMemAddr);
1.513 +
1.514 + TTestCase testCase_128(new (ELeave) CDmaBmTransfer(_L("128 K - 128K frag size"), bmIters, transferArgs, 128 * KKilo), EFalse);
1.515 + TTestCase testCase_16(new (ELeave) CDmaBmTransfer(_L("128 K - 16k frag size"), bmIters, transferArgs, 16 * KKilo), EFalse);
1.516 + TTestCase testCase_4(new (ELeave) CDmaBmTransfer(_L("128 K - 4k frag size"), bmIters, transferArgs, 4 * KKilo), EFalse);
1.517 + TTestCase testCase_1(new (ELeave) CDmaBmTransfer(_L("128 K - 1k frag size"), bmIters, transferArgs, 1 * KKilo), EFalse);
1.518 + }
1.519 + namespace _4Mb
1.520 + {
1.521 + const TInt size = 4 * KMega;
1.522 + TDmaTransferArgs transferArgs(0, size, size, KDmaMemAddr);
1.523 +
1.524 + CDmaBmTransfer bmTest(_L("4 Mb"), bmIters, transferArgs, 0);
1.525 + TTestCase testCase(&bmTest, EFalse);
1.526 + }
1.527 + }
1.528 +
1.529 + /**
1.530 + Compare time taken between queing and callback of 4 byte
1.531 + request with both DFC and ISR callback
1.532 + The new API calls are used
1.533 + */
1.534 + namespace CompareIsrDfcCb
1.535 + {
1.536 + const TInt iterations = 50;
1.537 +
1.538 + namespace Dfc
1.539 + {
1.540 + TResultSet expected = TResultSet(threadCallback).
1.541 + PostTransferResult(KErrUnknown);
1.542 +
1.543 + namespace _4Bytes
1.544 + {
1.545 + const TInt size = 4;
1.546 + TDmaTransferArgs transferArgs(0, size, size, KDmaMemAddr);
1.547 + CDmaBmTransfer bmTest = CDmaBmTransfer(_L("4 bytes DFC cb"), iterations, transferArgs, 0).
1.548 + UseNewDmaApi(ETrue).
1.549 + ExpectedResults(expected);
1.550 + TTestCase testCase(&bmTest, EFalse);
1.551 + }
1.552 + namespace _4K
1.553 + {
1.554 + const TInt size = 4 * KKilo;
1.555 + TDmaTransferArgs transferArgs(0, size, size, KDmaMemAddr);
1.556 + CDmaBmTransfer bmTest = CDmaBmTransfer(_L("4K DFC cb"), iterations, transferArgs, 0).
1.557 + UseNewDmaApi(ETrue).
1.558 + ExpectedResults(expected);
1.559 + TTestCase testCase(&bmTest, EFalse);
1.560 + }
1.561 + }
1.562 +
1.563 + namespace Isr
1.564 + {
1.565 + TResultSet expected = TResultSet(isrCallback).
1.566 + PostTransferResult(KErrUnknown);
1.567 +
1.568 + namespace _4Bytes
1.569 + {
1.570 + const TInt size = 4;
1.571 + TDmaTransferArgs transferArgs(0, size, size, KDmaMemAddr, KDmaSyncAuto, KDmaRequestCallbackFromIsr);
1.572 + CDmaBmTransfer bmTest = CDmaBmTransfer(_L("4 bytes Isr cb"), iterations, transferArgs, 0).
1.573 + UseNewDmaApi(ETrue).
1.574 + ExpectedResults(expected);
1.575 + TTestCase testCase(&bmTest, EFalse);
1.576 + }
1.577 + namespace _4K
1.578 + {
1.579 + const TInt size = 4 * KKilo;
1.580 + TDmaTransferArgs transferArgs(0, size, size, KDmaMemAddr, KDmaSyncAuto, KDmaRequestCallbackFromIsr);
1.581 + CDmaBmTransfer bmTest = CDmaBmTransfer(_L("4K Isr cb"), iterations, transferArgs, 0).
1.582 + UseNewDmaApi(ETrue).
1.583 + ExpectedResults(expected);
1.584 + TTestCase testCase(&bmTest, EFalse);
1.585 + }
1.586 + }
1.587 + }
1.588 + }
1.589 +
1.590 +//----------------------------------------------------------------------------------------------
1.591 +//! @SYMTestCaseID KBASE-DMA-2560
1.592 +//! @SYMTestType CIT
1.593 +//! @SYMPREQ REQ
1.594 +//! @SYMTestCaseDesc TestNewStyleFragment using CSingleTransferTest
1.595 +//! Test Scenario 1 - DstAddr > SrcAddr & TransferSize=32K & Location is
1.596 +//! address of a memory buffer
1.597 +//! @SYMTestActions
1.598 +//! 1. Set up the arguments for aTransfeArgs using the settings below.
1.599 +//!
1.600 +//! SrcAddr = 4 * KKilo;
1.601 +//! desAddr = 64 * KKilo;
1.602 +//! transferSize = 32 * KKilo;
1.603 +//! iFlags = KDmaMemAddr;
1.604 +//!
1.605 +//! 2. Setup expected result.
1.606 +//! 3. Create single transfer test and run test
1.607 +//!
1.608 +//! @SYMTestExpectedResults
1.609 +//! 1. TransfeArgs set up in DMA framework
1.610 +//! 2. Expected results set up in DMA framework
1.611 +//! 3. Fragment request completes and KErrNone returned
1.612 +//!
1.613 +//! @SYMTestPriority High
1.614 +//! @SYMTestStatus Implemented
1.615 +//----------------------------------------------------------------------------------------------
1.616 +namespace TestNewStyleFragment_1
1.617 + {
1.618 + const TInt srcAddr = 4 * KKilo;
1.619 + const TInt desAddr = 64 * KKilo;
1.620 +
1.621 + const TInt transferSize = 32 * KKilo;
1.622 +
1.623 + TDmaTransferArgs transferArgs( srcAddr, desAddr, transferSize, KDmaMemAddr);
1.624 +
1.625 + const TRequestResults requestResult(KErrNone, 32);
1.626 + const TResultSet expectedResults(KErrNone, requestResult, KErrNone, threadCallback);
1.627 +
1.628 + CSingleTransferTest testscenario_1(_L("TestNewStyleFragment - Test Scenario 1"), 1, transferArgs, expectedResults,KKilo);
1.629 +
1.630 + TTestCase testCase(&testscenario_1, EFalse, capAboveV1);
1.631 + TTestCase testCaseConcurrent(&testscenario_1, ETrue, capAboveV1);
1.632 + }
1.633 +
1.634 +//----------------------------------------------------------------------------------------------
1.635 +//! @SYMTestCaseID KBASE-DMA-2560
1.636 +//! @SYMTestType CIT
1.637 +//! @SYMPREQ REQ
1.638 +//! @SYMTestCaseDesc TestNewStyleFragment using CSingleTransferTest
1.639 +//! Test Scenario 2 - SrcAddr == DstAddr
1.640 +//!
1.641 +//! 1. Set up the arguments for aTransfeArgs using the settings below.
1.642 +//!
1.643 +//! SrcAddr = 4 * KKilo;
1.644 +//! desAddr = 4 * KKilo;
1.645 +//! transferSize = 32 * KKilo;
1.646 +//! iFlags = KDmaMemAddr;
1.647 +//!
1.648 +//! 2. Setup expected result.
1.649 +//! 3. Create single transfer test and run test
1.650 +//!
1.651 +//! @SYMTestExpectedResults
1.652 +//!
1.653 +//! 1. TransfeArgs set up in DMA framework
1.654 +//! 2. Expected results set up in DMA framework
1.655 +//! 3. Fragment passes and KErrNone returned
1.656 +//!
1.657 +//! @SYMTestPriority High
1.658 +//! @SYMTestStatus Implemented
1.659 +//----------------------------------------------------------------------------------------------
1.660 +namespace TestNewStyleFragment_2
1.661 + {
1.662 + const TInt srcAddr = 4 * KKilo;
1.663 + const TInt desAddr = 4 * KKilo;
1.664 + const TInt transferSize = 32 * KKilo;
1.665 +
1.666 + TDmaTransferArgs transferArgs(srcAddr,desAddr, transferSize, KDmaMemAddr);
1.667 + const TRequestResults requestResult(KErrNone, 32);
1.668 + const TResultSet expectedResults(KErrNone, requestResult, KErrNone, threadCallback);
1.669 +
1.670 + CSingleTransferTest testscenario_2(_L("TestNewStyleFragment - Test Scenario 2"), 1, transferArgs, expectedResults,KKilo);
1.671 +
1.672 + TTestCase testCase(&testscenario_2, EFalse, capAboveV1);
1.673 + TTestCase testCaseConcurrent(&testscenario_2, ETrue, capAboveV1);
1.674 + }
1.675 +
1.676 +//----------------------------------------------------------------------------------------------
1.677 +//! @SYMTestCaseID KBASE-DMA-2560
1.678 +//! @SYMTestType CIT
1.679 +//! @SYMPREQ REQ
1.680 +//! @SYMTestCaseDesc TestNewStyleFragment using CSingleTransferTest
1.681 +//! Test Scenario 3 - TransferSize=0
1.682 +//!
1.683 +//! 1. Set up the arguments for aTransfeArgs using the settings below.
1.684 +//!
1.685 +//! SrcAddr = 32 * KKilo;
1.686 +//! desAddr = 64 * KKilo;
1.687 +//! transferSize = 0
1.688 +//! iFlags = KDmaMemAddr;
1.689 +//!
1.690 +//! 2. Setup expected result.
1.691 +//! 3. Create single transfer test and run test
1.692 +//!
1.693 +//!
1.694 +//! @SYMTestExpectedResults
1.695 +//!
1.696 +//! 1. TransfeArgs set up in DMA framework
1.697 +//! 2. Expected results set up in DMA framework
1.698 +//! 3. Fragment request fails and KErrArgument returned
1.699 +//!
1.700 +//! @SYMTestPriority High
1.701 +//! @SYMTestStatus Implemented
1.702 +//----------------------------------------------------------------------------------------------
1.703 +namespace TestNewStyleFragment_3
1.704 + {
1.705 + const TInt srcAddr = 32 * KKilo;
1.706 + const TInt desAddr = 64 * KKilo;
1.707 + const TInt transferSize = 0;
1.708 +
1.709 + TDmaTransferArgs transferArgs( srcAddr, desAddr, transferSize,KDmaMemAddr);
1.710 + const TRequestResults requestResult(KErrArgument, 0);
1.711 + const TResultSet expectedResults(KErrNone, requestResult, KErrNone, threadCallback);
1.712 +
1.713 + CSingleTransferTest testscenario_3(_L("TestNewStyleFragment - Test Scenario 3"), 1, transferArgs, expectedResults);
1.714 +
1.715 + TTestCase testCase(&testscenario_3, EFalse, capAboveV1);
1.716 + TTestCase testCaseConcurrent(&testscenario_3, ETrue, capAboveV1);
1.717 + }
1.718 +
1.719 +//----------------------------------------------------------------------------------------------
1.720 +//! @SYMTestCaseID KBASE-DMA-2560
1.721 +//! @SYMTestType CIT
1.722 +//! @SYMPREQ REQ
1.723 +//! @SYMTestCaseDesc TestNewStyleFragment using CSingleTransferTest
1.724 +//! Test Scenario 4 - TransferSize=1Byte
1.725 +//!
1.726 +//! 1. Set up the arguments for aTransfeArgs using the settings below.
1.727 +//!
1.728 +//! SrcAddr = 32K;
1.729 +//! desAddr = 64K;
1.730 +//! transferSize = 1 byte
1.731 +//! iFlags = KDmaMemAddr;
1.732 +//!
1.733 +//! 2. Setup expected result.
1.734 +//! 3. Create single transfer test and run test
1.735 +//!
1.736 +//! @SYMTestExpectedResults
1.737 +//!
1.738 +//! 1. TransfeArgs set up in DMA framework
1.739 +//! 2. Expected results set up in DMA framework
1.740 +//! 3. Fragment request completes and KErrNone returned
1.741 +//!
1.742 +//! @SYMTestPriority High
1.743 +//! @SYMTestStatus Implemented
1.744 +//----------------------------------------------------------------------------------------------
1.745 +namespace TestNewStyleFragment_4
1.746 + {
1.747 + const TInt srcAddr = 32 * KKilo;
1.748 + const TInt desAddr = 64 * KKilo;
1.749 + const TInt transferSize = 1;
1.750 +
1.751 + TDmaTransferArgs transferArgs(srcAddr, desAddr, transferSize, KDmaMemAddr);
1.752 + const TRequestResults requestResult(KErrNone, 1);
1.753 + const TResultSet expectedResults(KErrNone, requestResult, KErrNone, threadCallback);
1.754 +
1.755 + CSingleTransferTest testscenario_4(_L("TestNewStyleFragment - Test Scenario 4"), 1, transferArgs, expectedResults);
1.756 +
1.757 + TTestCase testCase(&testscenario_4, EFalse, capAboveV1);
1.758 + TTestCase testCaseConcurrent(&testscenario_4, ETrue, capAboveV1);
1.759 + }
1.760 +
1.761 +//----------------------------------------------------------------------------------------------
1.762 +//! @SYMTestCaseID KBASE-DMA-2560
1.763 +//! @SYMTestType CIT
1.764 +//! @SYMPREQ REQ
1.765 +//! @SYMTestCaseDesc TestNewStyleFragment using CSingleTransferTest
1.766 +//! Test Scenario 5 - TransferSize=128KB
1.767 +//!
1.768 +//! 1. Set up the arguments for aTransfeArgs using the settings below.
1.769 +//!
1.770 +//! SrcAddr = 16K;
1.771 +//! desAddr = 2MB;
1.772 +//! transferSize = 1MB;
1.773 +//! iFlags = KDmaMemAddr;
1.774 +//!
1.775 +//! 2. Setup expected result.
1.776 +//! 3. Create single transfer test and run test
1.777 +//!
1.778 +//! @SYMTestExpectedResults
1.779 +//!
1.780 +//! 1. TransfeArgs set up in DMA framework
1.781 +//! 2. Expected results set up in DMA framework
1.782 +//! 3. Fragment request completes and KErrNone returned
1.783 +//!
1.784 +//! @SYMTestPriority High
1.785 +//! @SYMTestStatus Implemented
1.786 +//----------------------------------------------------------------------------------------------
1.787 +namespace TestNewStyleFragment_5
1.788 + {
1.789 +
1.790 + const TInt srcAddr = 16 * KKilo;
1.791 + const TInt desAddr = 2 * KMega;
1.792 + const TInt transferSize = 1 * KMega;
1.793 +
1.794 + TDmaTransferArgs transferArgs(srcAddr, desAddr, transferSize, KDmaMemAddr);
1.795 + const TRequestResults requestResult(KErrNone);
1.796 + const TResultSet expectedResults(KErrNone, requestResult, KErrNone, threadCallback);
1.797 +
1.798 + CSingleTransferTest testscenario_5(_L("TestNewStyleFragment - Test Scenario 5"), 1, transferArgs, expectedResults);
1.799 +
1.800 + TTestCase testCase(&testscenario_5, EFalse, capAboveV1);
1.801 + TTestCase testCaseConcurrent(&testscenario_5, ETrue, capAboveV1);
1.802 + }
1.803 +
1.804 +//----------------------------------------------------------------------------------------------
1.805 +//! @SYMTestCaseID KBASE-DMA-2560
1.806 +//! @SYMTestType CIT
1.807 +//! @SYMPREQ REQ
1.808 +//! @SYMTestCaseDesc TestNewStyleFragment using CSingleTransferTest
1.809 +//! Test Scenario 6 - TransferSize=3MB
1.810 +//!
1.811 +//! 1. Set up the arguments for aTransfeArgs using the settings below.
1.812 +//!
1.813 +//! SrcAddr = 16K;
1.814 +//! desAddr = 4MB;
1.815 +//! transferSize = 3MB
1.816 +//! iFlags = KDmaMemAddr;
1.817 +//!
1.818 +//! 2. Setup expected result.
1.819 +//! 3. Create single transfer test and run test
1.820 +//!
1.821 +//! @SYMTestExpectedResults
1.822 +//!
1.823 +//! 1. TransfeArgs set up in DMA framework
1.824 +//! 2. Expected results set up in DMA framework
1.825 +//! 3. Fragment request completes and KErrNone returned
1.826 +//!
1.827 +//! @SYMTestPriority High
1.828 +//! @SYMTestStatus Implemented
1.829 +//----------------------------------------------------------------------------------------------
1.830 +namespace TestNewStyleFragment_6
1.831 + {
1.832 + const TInt srcAddr = 16 * KKilo;
1.833 + const TInt desAddr = 4 * KMega;
1.834 + const TInt transferSize = 3 * KMega;
1.835 +
1.836 + TDmaTransferArgs transferArgs(srcAddr, desAddr, transferSize, KDmaMemAddr);
1.837 + const TRequestResults requestResult(KErrNone);
1.838 + const TResultSet expectedResults(KErrNone, requestResult, KErrNone, threadCallback);
1.839 +
1.840 + CSingleTransferTest testscenario_6(_L("TestNewStyleFragment - Test Scenario 6"), 1, transferArgs, expectedResults);
1.841 +
1.842 + TTestCase testCase(&testscenario_6, EFalse, capAboveV1);
1.843 + TTestCase testCaseConcurrent(&testscenario_6, ETrue, capAboveV1);
1.844 + }
1.845 +
1.846 +//----------------------------------------------------------------------------------------------
1.847 +//! @SYMTestCaseID KBASE-DMA-2561
1.848 +//! @SYMTestType CIT
1.849 +//! @SYMPREQ REQ
1.850 +//! @SYMTestCaseDesc TestOldstyleFragment using CSingleTransferTest
1.851 +//! Test Scenario 1 - DstAddr > SrcAddr & TransferSize=32K & Location is
1.852 +//! address of a memory buffer
1.853 +//!
1.854 +//! 1. Set up the arguments for aTransfeArgs using the settings below.
1.855 +//!
1.856 +//! SrcAddr = 4 * KKilo;
1.857 +//! desAddr = 64 * KKilo;
1.858 +//! transferSize = 32 * KKilo;
1.859 +//! iFlags = KDmaMemAddr;
1.860 +
1.861 +//! 2. Setup expected result.
1.862 +//! 3. Create single transfer test and run test
1.863 +//!
1.864 +//! @SYMTestExpectedResults
1.865 +//!
1.866 +//! 1. TransfeArgs set up in DMA framework
1.867 +//! 2. Expected results set up in DMA framework
1.868 +//! 3. Fragment request completes and KErrNone returned
1.869 +//!
1.870 +//! @SYMTestPriority High
1.871 +//! @SYMTestStatus Implemented
1.872 +//----------------------------------------------------------------------------------------------
1.873 +namespace TestOldStyleFragment_1
1.874 + {
1.875 + const TInt srcAddr = 4 * KKilo;
1.876 + const TInt desAddr = 64 * KKilo;
1.877 + const TInt transferSize = 32 * KKilo;
1.878 +
1.879 + TDmaTransferArgs transferArgs( srcAddr, desAddr, transferSize, KDmaMemAddr);
1.880 +
1.881 + const TRequestResults requestResult(KErrNone,32);
1.882 + const TResultSet expectedResults(KErrNone, requestResult, KErrNone, threadCallback);
1.883 +
1.884 + CSingleTransferTest testscenario_1 = CSingleTransferTest(_L("TestOldStyleFragment - Test Scenario 1"), 1, transferArgs, expectedResults,KKilo).
1.885 + UseNewDmaApi(EFalse);
1.886 +
1.887 + TTestCase testCase(&testscenario_1, EFalse, capAboveV1);
1.888 + TTestCase testCaseConcurrent(&testscenario_1, ETrue, capAboveV1);
1.889 + }
1.890 +
1.891 +//----------------------------------------------------------------------------------------------
1.892 +//! @SYMTestCaseID KBASE-DMA-2561
1.893 +//! @SYMTestType CIT
1.894 +//! @SYMPREQ REQ
1.895 +//! @SYMTestCaseDesc TestOldstyleFragment using CSingleTransferTest
1.896 +//! Test Scenario 2 - DstAddr == SrcAddr
1.897 +//!
1.898 +//! 1. Set up the arguments for aTransfeArgs using the settings below.
1.899 +//!
1.900 +//! SrcAddr = 4 * KKilo;
1.901 +//! desAddr = 4 * KKilo;
1.902 +//! transferSize = 4 * KKilo
1.903 +//! iFlags = KDmaMemAddr;
1.904 +//!
1.905 +//! 2. Setup expected result.
1.906 +//! 3. Create single transfer test and run test
1.907 +//!
1.908 +//! @SYMTestExpectedResults
1.909 +//!
1.910 +//! 1. TransfeArgs set up in DMA framework
1.911 +//! 2. Expected results set up in DMA framework
1.912 +//! 3. Fragment passes and KErrNone returned
1.913 +//!
1.914 +//! @SYMTestPriority High
1.915 +//! @SYMTestStatus Implemented
1.916 +//----------------------------------------------------------------------------------------------
1.917 +namespace TestOldStyleFragment_2
1.918 + {
1.919 + const TInt srcAddr = 4 * KKilo;
1.920 + const TInt desAddr = 4 * KKilo;
1.921 + const TInt transferSize = 4 * KKilo;
1.922 +
1.923 + TDmaTransferArgs transferArgs(srcAddr,desAddr, transferSize, KDmaMemAddr);
1.924 + const TRequestResults requestResult(KErrNone, 4);
1.925 + const TResultSet expectedResults(KErrNone, requestResult, KErrNone, threadCallback);
1.926 +
1.927 + CSingleTransferTest testscenario_2 = CSingleTransferTest(_L("TestOldStyleFragment - Test Scenario 2"), 1, transferArgs, expectedResults,KKilo)
1.928 + .UseNewDmaApi(EFalse);
1.929 +
1.930 + TTestCase testCase(&testscenario_2, EFalse, capAboveV1);
1.931 + TTestCase testCaseConcurrent(&testscenario_2, ETrue, capAboveV1);
1.932 + }
1.933 +
1.934 +//----------------------------------------------------------------------------------------------
1.935 +//! @SYMTestCaseID KBASE-DMA-2561
1.936 +//! @SYMTestType CIT
1.937 +//! @SYMPREQ REQ
1.938 +//! @SYMTestCaseDesc TestOldstyleFragment using CSingleTransferTest
1.939 +//! Test Scenario 3 - TransferSize=0
1.940 +//!
1.941 +//! 1. Set up the arguments for aTransfeArgs using the settings below.
1.942 +//!
1.943 +//! SrcAddr = 32K
1.944 +//! desAddr = 64K;
1.945 +//! transferSize = 0
1.946 +//! iFlags = KDmaMemAddr;
1.947 +//!
1.948 +//! 2. Setup expected result.
1.949 +//! 3. Create single transfer test and run test
1.950 +//!
1.951 +//! @SYMTestExpectedResults
1.952 +//!
1.953 +//! 1. TransfeArgs set up in DMA framework
1.954 +//! 2. Expected results set up in DMA framework
1.955 +//! 3. Fragment request Fails and KErrArgument returned
1.956 +//!
1.957 +//! @SYMTestPriority High
1.958 +//! @SYMTestStatus Implemented
1.959 +//----------------------------------------------------------------------------------------------
1.960 +namespace TestOldStyleFragment_3
1.961 + {
1.962 +
1.963 + const TInt srcAddr = 32 * KKilo;
1.964 + const TInt desAddr = 64 * KKilo;
1.965 + const TInt transferSize = 0;
1.966 +
1.967 + TDmaTransferArgs transferArgs(srcAddr, desAddr, transferSize,KDmaMemAddr);
1.968 + const TRequestResults requestResult(KErrArgument, 0);
1.969 + const TResultSet expectedResults(KErrNone, requestResult, KErrNone, threadCallback);
1.970 +
1.971 + CSingleTransferTest testscenario_3 = CSingleTransferTest(_L("TestOldStyleFragment - Test Scenario 3"), 1, transferArgs, expectedResults).
1.972 + UseNewDmaApi(EFalse);
1.973 +
1.974 + TTestCase testCase(&testscenario_3, EFalse, capAboveV1);
1.975 + TTestCase testCaseConcurrent(&testscenario_3, ETrue, capAboveV1);
1.976 + }
1.977 +
1.978 +//----------------------------------------------------------------------------------------------
1.979 +//! @SYMTestCaseID KBASE-DMA-2561
1.980 +//! @SYMTestType CIT
1.981 +//! @SYMPREQ REQ
1.982 +//! @SYMTestCaseDesc TestOldstyleFragment using CSingleTransferTest
1.983 +//! Test Scenario 4 - TransferSize=1Byte
1.984 +//!
1.985 +//! 1. Set up the arguments for aTransfeArgs using the settings below.
1.986 +//!
1.987 +//!
1.988 +//! SrcAddr = 32K;
1.989 +//! desAddr = 64K;
1.990 +//! transferSize = 1 byte
1.991 +//! iFlags = KDmaMemAddr;
1.992 +//!
1.993 +//! 2. Setup expected result.
1.994 +//! 3. Create single transfer test and run test
1.995 +//!
1.996 +//! @SYMTestExpectedResults
1.997 +//!
1.998 +//! 1. TransfeArgs set up in DMA framework
1.999 +//! 2. Expected results set up in DMA framework
1.1000 +//! 3. Fragment request completes and KErrNone returned
1.1001 +//!
1.1002 +//! @SYMTestPriority High
1.1003 +//! @SYMTestStatus Implemented
1.1004 +//------------------------------------------------------------------------------------------------
1.1005 +namespace TestOldStyleFragment_4
1.1006 + {
1.1007 + const TInt srcAddr = 32 * KKilo;
1.1008 + const TInt desAddr = 64 * KKilo;
1.1009 + const TInt transferSize = 1;
1.1010 +
1.1011 + TDmaTransferArgs transferArgs( srcAddr, desAddr, transferSize, KDmaMemAddr);
1.1012 + const TRequestResults requestResult(KErrNone, 1);
1.1013 + const TResultSet expectedResults(KErrNone, requestResult, KErrNone, threadCallback);
1.1014 +
1.1015 + CSingleTransferTest testscenario_4 = CSingleTransferTest(_L("TestOldStyleFragment - Test Scenario 4"), 1, transferArgs, expectedResults).
1.1016 + UseNewDmaApi(EFalse);
1.1017 +
1.1018 + TTestCase testCase(&testscenario_4, EFalse, capAboveV1);
1.1019 + TTestCase testCaseConcurrent(&testscenario_4, ETrue, capAboveV1);
1.1020 + }
1.1021 +
1.1022 +//----------------------------------------------------------------------------------------------
1.1023 +//! @SYMTestCaseID KBASE-DMA-2561
1.1024 +//! @SYMTestType CIT
1.1025 +//! @SYMPREQ REQ
1.1026 +//! @SYMTestCaseDesc TestOldstyleFragment using CSingleTransferTest
1.1027 +//! Test Scenario 5 - TransferSize=1MB
1.1028 +//!
1.1029 +//! 1. Set up the arguments for aTransfeArgs using the settings below.
1.1030 +//!
1.1031 +//! SrcAddr = 16K;
1.1032 +//! desAddr = 2MB;
1.1033 +//! transferSize = 1MB
1.1034 +//! iFlags = KDmaMemAddr;
1.1035 +//!
1.1036 +//! 2. Setup expected result.
1.1037 +//! 3. Create single transfer test and run test
1.1038 +//!
1.1039 +//! @SYMTestExpectedResults
1.1040 +//!
1.1041 +//! 1. TransfeArgs set up in DMA framework
1.1042 +//! 2. Expected results set up in DMA framework
1.1043 +//! 3. Fragment request completes and KErrNone returned
1.1044 +//!
1.1045 +//! @SYMTestPriority High
1.1046 +//! @SYMTestStatus Implemented
1.1047 +//----------------------------------------------------------------------------------------------
1.1048 +namespace TestOldStyleFragment_5
1.1049 + {
1.1050 + const TInt srcAddr = 16 * KKilo;
1.1051 + const TInt desAddr = 2 * KMega;
1.1052 + const TInt transferSize = 1 * KMega;
1.1053 +
1.1054 + TDmaTransferArgs transferArgs(srcAddr, desAddr, transferSize, KDmaMemAddr);
1.1055 +
1.1056 + const TRequestResults requestResult(KErrNone);
1.1057 + const TResultSet expectedResults(KErrNone, requestResult, KErrNone, threadCallback);
1.1058 +
1.1059 + CSingleTransferTest testscenario_5 = CSingleTransferTest(_L("TestOldStyleFragment - Test Scenario 5"), 1, transferArgs, expectedResults).
1.1060 + UseNewDmaApi(EFalse);
1.1061 +
1.1062 + TTestCase testCase(&testscenario_5, EFalse, capAboveV1);
1.1063 + TTestCase testCaseConcurrent(&testscenario_5, ETrue, capAboveV1);
1.1064 + }
1.1065 +
1.1066 +//----------------------------------------------------------------------------------------------
1.1067 +//! @SYMTestCaseID KBASE-DMA-2561
1.1068 +//! @SYMTestType CIT
1.1069 +//! @SYMPREQ REQ
1.1070 +//! @SYMTestCaseDesc TestOldstyleFragment using CSingleTransferTest
1.1071 +//! Test Scenario 6 - TransferSize=3MB
1.1072 +//!
1.1073 +//! 1. Set up the arguments for aTransfeArgs using the settings below.
1.1074 +//!
1.1075 +//! SrcAddr = 16K
1.1076 +//! desAddr = 4MB;
1.1077 +//! transferSize = 3MB
1.1078 +//! iFlags = KDmaMemAddr;
1.1079 +//!
1.1080 +//! 2. Setup expected result.
1.1081 +//! 3. Create single transfer test and run test
1.1082 +//!
1.1083 +//! @SYMTestExpectedResults
1.1084 +//!
1.1085 +//! 1. TransfeArgs set up in DMA framework
1.1086 +//! 2. Expected results set up in DMA framework
1.1087 +//! 3. Fragment request completes and KErrNone returned
1.1088 +//!
1.1089 +//! @SYMTestPriority High
1.1090 +//! @SYMTestStatus Implemented
1.1091 +//----------------------------------------------------------------------------------------------
1.1092 +namespace TestOldStyleFragment_6
1.1093 + {
1.1094 + const TInt srcAddr = 16 * KKilo;
1.1095 + const TInt desAddr = 4 * KMega;
1.1096 + const TInt transferSize = 3 * KMega;
1.1097 + TDmaTransferArgs transferArgs(srcAddr, desAddr, transferSize, KDmaMemAddr);
1.1098 +
1.1099 + const TRequestResults requestResult(KErrNone);
1.1100 + const TResultSet expectedResults(KErrNone, requestResult, KErrNone, threadCallback);
1.1101 +
1.1102 + CSingleTransferTest testscenario_6 = CSingleTransferTest(_L("TestOldStyleFragment - Test Scenario 6"), 1, transferArgs, expectedResults).
1.1103 + UseNewDmaApi(EFalse);
1.1104 +
1.1105 + TTestCase testCase(&testscenario_6, EFalse, capAboveV1);
1.1106 + TTestCase testCaseConcurrent(&testscenario_6, ETrue, capAboveV1);
1.1107 + }
1.1108 +
1.1109 +//----------------------------------------------------------------------------------------------
1.1110 +//! @SYMTestCaseID KBASE-DMA-2562
1.1111 +//! @SYMTestType CIT
1.1112 +//! @SYMPREQ REQ
1.1113 +//! @SYMTestCaseDesc TestOldStyleDDmaRequest using CSingleTransferTest
1.1114 +//! Test Scenario 1 - aMaxTransferSize=0
1.1115 +//!
1.1116 +//! 1. Set up the DDmaRequest using aMaxTransferSize set to 0.
1.1117 +//! 2. Setup expected result.
1.1118 +//! 3. Create single transfer test and run test
1.1119 +//!
1.1120 +//! @SYMTestExpectedResults
1.1121 +//!
1.1122 +//! 1. TransfeArgs set up in DMA framework
1.1123 +//! 2. Expected results set up in DMA framework
1.1124 +//! 3. DDmaRequest constructor behaves as expected and KErrArgument returned
1.1125 +//!
1.1126 +//! @SYMTestPriority High
1.1127 +//! @SYMTestStatus Implemented
1.1128 +//------------------------------------------------------------------------------------------------
1.1129 +namespace TestOldStyleDDmaRequest_1
1.1130 + {
1.1131 + const TInt desAddr = 4 * KKilo;
1.1132 + const TInt transferSize = 4 * KKilo;
1.1133 + TDmaTransferArgs transferArgs(0, desAddr, transferSize, KDmaMemAddr);
1.1134 +
1.1135 + const TRequestResults requestResult(KErrNone, 0);
1.1136 + const TResultSet expectedResults(KErrNone, requestResult, KErrNone, threadCallback);
1.1137 +
1.1138 + CSingleTransferTest testscenario_1 = CSingleTransferTest(_L("TestOldStyleDDmaRequest - Test Scenario 1"), 1, transferArgs, expectedResults,0).
1.1139 + UseNewDmaApi(EFalse);
1.1140 +
1.1141 + TTestCase testCase(&testscenario_1, EFalse, capAboveV1);
1.1142 + TTestCase testCaseConcurrent(&testscenario_1, ETrue, capAboveV1);
1.1143 + }
1.1144 +
1.1145 +//!-------------------------------------------------------------------------------------------------
1.1146 +//! @SYMTestCaseID KBASE-DMA-2562
1.1147 +//! @SYMTestType CIT
1.1148 +//! @SYMPREQ REQ
1.1149 +//! @SYMTestCaseDesc TestOldStyleDDmaRequest using CSingleTransferTest
1.1150 +//! Test Scenario 2 - aMaxTransferSize= 65535
1.1151 +//!
1.1152 +//! 1. Set up the arguments for DDmaRequest using aMaxTransferSize set to 65535.
1.1153 +//! 2. Setup expected result.
1.1154 +//! 3. Create single transfer test and run test
1.1155 +//!
1.1156 +//! @SYMTestExpectedResults
1.1157 +//!
1.1158 +//! 1. TransfeArgs set up in DMA framework
1.1159 +//! 2. Expected results set up in DMA framework
1.1160 +//! 3. DDmaRequest constructor behaves as expected and KErrArgument returned
1.1161 +//!
1.1162 +//! @SYMTestPriority High
1.1163 +//! @SYMTestStatus Implemented
1.1164 +//---------------------------------------------------------------------------------------------------
1.1165 +namespace TestOldStyleDDmaRequest_2
1.1166 + {
1.1167 + const TInt desAddr = 4 * KKilo;
1.1168 + const TInt transferSize = 4 * KKilo;
1.1169 + TDmaTransferArgs transferArgs(0, desAddr, transferSize, KDmaMemAddr);
1.1170 +
1.1171 + const TRequestResults requestResult(KErrNone, 1);
1.1172 + const TResultSet expectedResults(KErrNone, requestResult, KErrNone, threadCallback);
1.1173 +
1.1174 + CSingleTransferTest testscenario_2 = CSingleTransferTest(_L("TestOldStyleDDmaRequest - Test Scenario 2"), 1, transferArgs, expectedResults, 65535).
1.1175 + UseNewDmaApi(EFalse);
1.1176 +
1.1177 + TTestCase testCase(&testscenario_2, EFalse, capAboveV1);
1.1178 + TTestCase testCaseConcurrent(&testscenario_2, ETrue, capAboveV1);
1.1179 + }
1.1180 +
1.1181 +//----------------------------------------------------------------------------------------------
1.1182 +//! @SYMTestCaseID KBASE-DMA-2563
1.1183 +//! @SYMTestType CIT
1.1184 +//! @SYMPREQ REQ
1.1185 +//! @SYMTestCaseDesc TestNewStyleDDmaRequest using CSingleTransferTest
1.1186 +//! Test Scenario 1 - aMaxTransferSize=0
1.1187 +//!
1.1188 +//! 1. Set up the DDmaRequest using aMaxTransferSize set to 0.
1.1189 +//! 2. Setup expected result.
1.1190 +//! 3. Create single transfer test and run test
1.1191 +//!
1.1192 +//! @SYMTestExpectedResults
1.1193 +//!
1.1194 +//! 1. TransfeArgs set up in DMA framework
1.1195 +//! 2. Expected results set up in DMA framework
1.1196 +//! 3. DDmaRequest constructor behaves as expected and KErrArgument returned
1.1197 +//!
1.1198 +//! @SYMTestPriority High
1.1199 +//! @SYMTestStatus Implemented
1.1200 +//----------------------------------------------------------------------------------------------
1.1201 +namespace TestNewStyleDDmaRequest_1
1.1202 + {
1.1203 + const TInt desAddr = 4 * KKilo;
1.1204 + const TInt transferSize = 4 * KKilo;
1.1205 + TDmaTransferArgs transferArgs(0, desAddr, transferSize, KDmaMemAddr);
1.1206 +
1.1207 + const TRequestResults requestResult(KErrNone, 0);
1.1208 + const TResultSet expectedResults(KErrNone, requestResult, KErrNone, threadCallback);
1.1209 +
1.1210 + CSingleTransferTest testscenario_1(_L("TestNewStyleDDmaRequest - Test Scenario 1"), 1, transferArgs, expectedResults,0);
1.1211 +
1.1212 + TTestCase testCase(&testscenario_1, EFalse, capAboveV1);
1.1213 + TTestCase testCaseConcurrent(&testscenario_1, ETrue, capAboveV1);
1.1214 + }
1.1215 +
1.1216 +//!-------------------------------------------------------------------------------------------------
1.1217 +//! @SYMTestCaseID KBASE-DMA-2563
1.1218 +//! @SYMTestType CIT
1.1219 +//! @SYMPREQ REQ
1.1220 +//! @SYMTestCaseDesc TestNewStyleDDmaRequest using CSingleTransferTest
1.1221 +//! Test Scenario 2 - aMaxTransferSize= 65535
1.1222 +//!
1.1223 +//! 1. Set up the arguments for DDmaRequest using aMaxTransferSize set to 65535.
1.1224 +//! 2. Setup expected result.
1.1225 +//! 3. Create single transfer test and run test
1.1226 +//!
1.1227 +//! @SYMTestExpectedResults
1.1228 +//!
1.1229 +//! 1. TransfeArgs set up in DMA framework
1.1230 +//! 2. Expected results set up in DMA framework
1.1231 +//! 3. DDmaRequest constructor behaves as expected and KErrArgument returned
1.1232 +//!
1.1233 +//! @SYMTestPriority High
1.1234 +//! @SYMTestStatus Implemented
1.1235 +//---------------------------------------------------------------------------------------------------
1.1236 +namespace TestNewStyleDDmaRequest_2
1.1237 + {
1.1238 + const TInt desAddr = 4 * KKilo;
1.1239 + const TInt transferSize = 4 * KKilo;
1.1240 + TDmaTransferArgs transferArgs(0, desAddr, transferSize, KDmaMemAddr);
1.1241 +
1.1242 + const TRequestResults requestResult(KErrNone, 1);
1.1243 + const TResultSet expectedResults(KErrNone, requestResult, KErrNone, threadCallback);
1.1244 +
1.1245 + CSingleTransferTest testscenario_2(_L("TestNewStyleDDmaRequest - Test Scenario 2"), 1, transferArgs, expectedResults, 65535);
1.1246 +
1.1247 + TTestCase testCase(&testscenario_2, EFalse, capAboveV1);
1.1248 + TTestCase testCaseConcurrent(&testscenario_2, ETrue, capAboveV1);
1.1249 + }
1.1250 +
1.1251 +//----------------------------------------------------------------------------------------------
1.1252 +//! @SYMTestCaseID PBASE-DMA-FUNC-xxx
1.1253 +//! @SYMTestType CIT
1.1254 +//! @SYMPREQ REQ
1.1255 +//! @SYMTestCaseDesc SmallFrags: This test provokes the failure seen in DEF140598
1.1256 +//! The test checks that requests with small fragments
1.1257 +//! do not trigger a spurious missed interrupt clean up
1.1258 +//!
1.1259 +//! @SYMTestExpectedResults
1.1260 +//!
1.1261 +//! 1.
1.1262 +//! 2.
1.1263 +//!
1.1264 +//! @SYMTestPriority High
1.1265 +//! @SYMTestStatus Implemented
1.1266 +//----------------------------------------------------------------------------------------------
1.1267 +namespace SmallFrags
1.1268 + {
1.1269 + const TInt size = 32;
1.1270 + TDmaTransferArgs transferArgs(0, size, size, KDmaMemAddr);
1.1271 +
1.1272 + const TResultSet expectedResults(threadCallback);
1.1273 +
1.1274 + TTestCase testCase(
1.1275 + new (ELeave) CSingleTransferTest(_L("8 * 4byte frags"), 10, transferArgs, expectedResults, 4),
1.1276 + EFalse, capAboveV1);
1.1277 + }
1.1278 +
1.1279 +
1.1280 +//TODO TTestCase could automatically be added to aray by ctor
1.1281 +//
1.1282 +//Append new test cases here
1.1283 +static TTestCase* StaticTestArray[] = {
1.1284 + &Simple_1::testCase,
1.1285 + &Simple_1::testCaseConcurrent,
1.1286 + &Simple_2::testCase,
1.1287 + &Simple_2::testCaseConcurrent,
1.1288 + &Callback::testCase,
1.1289 + &Callback::testCaseOldRequest,
1.1290 + &ISR_Reque::endOnRedo::testCase,
1.1291 + &ISR_Reque::endOnIsrCb::testCase,
1.1292 + &ISR_Reque::endOnThreadCb::testCase,
1.1293 + &ISR_Reque::changeSize::testCase,
1.1294 +#ifdef _DEBUG
1.1295 + &ISR_Reque::invalidAddresses::testCase, // addresses only checked in UDEB
1.1296 +#endif
1.1297 + //&ISR_Reque::multipleFragments::testCase, // This error condition is currently caught by a FAULT instead of a return code
1.1298 + &Multipart::testCase,
1.1299 + &IsrAndDfc::DfcBeforeIsr::testCase,
1.1300 + &IsrAndDfc::IsrBeforeDfc::testCase,
1.1301 + &_2D_Test::testCase2d,
1.1302 + &FragmentationCount::testCase,
1.1303 + &FragmentationCount::testCase2,
1.1304 + &SmallFrags::testCase,
1.1305 +#ifndef _DEBUG
1.1306 + // Benchmarks are only really meaningful
1.1307 + // on UREL builds
1.1308 + &Benchmark::Frag::testCase_256k,
1.1309 + &Benchmark::Frag::testCase_8k,
1.1310 + &Benchmark::Transfer::_128K::testCase_128,
1.1311 + &Benchmark::Transfer::_128K::testCase_16,
1.1312 + &Benchmark::Transfer::_128K::testCase_4,
1.1313 + &Benchmark::Transfer::_128K::testCase_1,
1.1314 + &Benchmark::Transfer::_4Bytes::testCase,
1.1315 + &Benchmark::Transfer::_4Mb::testCase,
1.1316 + &Benchmark::CompareIsrDfcCb::Dfc::_4Bytes::testCase,
1.1317 + &Benchmark::CompareIsrDfcCb::Isr::_4Bytes::testCase,
1.1318 + &Benchmark::CompareIsrDfcCb::Dfc::_4K::testCase,
1.1319 + &Benchmark::CompareIsrDfcCb::Isr::_4K::testCase,
1.1320 +#endif
1.1321 + &TestNewStyleFragment_1::testCase,
1.1322 + &TestNewStyleFragment_1::testCaseConcurrent,
1.1323 + &TestNewStyleFragment_2::testCase,
1.1324 + &TestNewStyleFragment_2::testCaseConcurrent,
1.1325 + //&TestNewStyleFragment_3::testCase,
1.1326 + //&TestNewStyleFragment_3::testCaseConcurrent,
1.1327 + &TestNewStyleFragment_4::testCase,
1.1328 + &TestNewStyleFragment_4::testCaseConcurrent,
1.1329 + &TestNewStyleFragment_5::testCase,
1.1330 + &TestNewStyleFragment_5::testCaseConcurrent,
1.1331 + &TestNewStyleFragment_6::testCase,
1.1332 + &TestNewStyleFragment_6::testCaseConcurrent,
1.1333 + &TestOldStyleFragment_1::testCase,
1.1334 + &TestOldStyleFragment_1::testCaseConcurrent,
1.1335 + &TestOldStyleFragment_2::testCase,
1.1336 + &TestOldStyleFragment_2::testCaseConcurrent,
1.1337 + //&TestOldStyleFragment_3::testCase,
1.1338 + //&TestOldStyleFragment_3::testCaseConcurrent,
1.1339 + &TestOldStyleFragment_4::testCase,
1.1340 + &TestOldStyleFragment_4::testCaseConcurrent,
1.1341 + &TestOldStyleFragment_5::testCase,
1.1342 + &TestOldStyleFragment_5::testCaseConcurrent,
1.1343 + &TestOldStyleFragment_6::testCase,
1.1344 + &TestOldStyleFragment_6::testCaseConcurrent,
1.1345 + &TestOldStyleDDmaRequest_1::testCase,
1.1346 + &TestOldStyleDDmaRequest_1::testCaseConcurrent,
1.1347 + &TestOldStyleDDmaRequest_2::testCase,
1.1348 + &TestOldStyleDDmaRequest_2::testCaseConcurrent,
1.1349 + &TestNewStyleDDmaRequest_1::testCase,
1.1350 + &TestNewStyleDDmaRequest_1::testCaseConcurrent,
1.1351 + &TestNewStyleDDmaRequest_2::testCase,
1.1352 + &TestNewStyleDDmaRequest_2::testCaseConcurrent,
1.1353 +};
1.1354 +
1.1355 +RPointerArray<TTestCase> TestArray(StaticTestArray, ARRAY_LENGTH(StaticTestArray));