1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-03 14:25:37 +02:00

debug tests: Add memory access functions to SyncUtil

Unlike those in AsyncCompletionWaitor, these functions are based on
queries. The patch also changes occurences in MIMemoryTest where it
makes sense to use synchronous functions.

Change-Id: Id5e47b7634153d916bf896e47f6cc48f1a4727bd
Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
This commit is contained in:
Simon Marchi 2015-01-25 21:09:48 -05:00 committed by Gerrit Code Review @ Eclipse.org
parent 619216fca4
commit b662f3b063
2 changed files with 300 additions and 412 deletions

View file

@ -27,6 +27,7 @@ import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.dsf.concurrent.CountingRequestMonitor;
import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
import org.eclipse.cdt.dsf.concurrent.ImmediateDataRequestMonitor;
@ -42,6 +43,8 @@ import org.eclipse.cdt.dsf.debug.service.IFormattedValues;
import org.eclipse.cdt.dsf.debug.service.IFormattedValues.FormattedValueDMContext;
import org.eclipse.cdt.dsf.debug.service.IFormattedValues.FormattedValueDMData;
import org.eclipse.cdt.dsf.debug.service.IFormattedValues.IFormattedDataDMContext;
import org.eclipse.cdt.dsf.debug.service.IMemory;
import org.eclipse.cdt.dsf.debug.service.IMemory.IMemoryDMContext;
import org.eclipse.cdt.dsf.debug.service.IProcesses.IProcessDMContext;
import org.eclipse.cdt.dsf.debug.service.IProcesses.IThreadDMContext;
import org.eclipse.cdt.dsf.debug.service.IProcesses.IThreadDMData;
@ -73,43 +76,45 @@ import org.eclipse.cdt.tests.dsf.gdb.launching.TestsPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.debug.core.model.MemoryByte;
/**
* Timeout wait values are in milliseconds, or WAIT_FOREVER.
*/
public class SyncUtil {
private static IGDBControl fGdbControl;
private static IMIRunControl fRunControl;
private static MIStack fStack;
private static IExpressions fExpressions;
private static DsfSession fSession;
private static CommandFactory fCommandFactory;
private static IGDBControl fGdbControl;
private static IMIRunControl fRunControl;
private static MIStack fStack;
private static IExpressions fExpressions;
private static DsfSession fSession;
private static IMemory fMemory;
private static CommandFactory fCommandFactory;
private static IGDBProcesses fProcessesService;
// Initialize some common things, once the session has been established
public static void initialize(DsfSession session) throws Exception {
fSession = session;
Runnable runnable = new Runnable() {
@Override
// Initialize some common things, once the session has been established
public static void initialize(DsfSession session) throws Exception {
fSession = session;
Runnable runnable = new Runnable() {
@Override
public void run() {
DsfServicesTracker tracker =
new DsfServicesTracker(TestsPlugin.getBundleContext(),
fSession.getId());
fGdbControl = tracker.getService(IGDBControl.class);
fRunControl = tracker.getService(IMIRunControl.class);
fStack = tracker.getService(MIStack.class);
fExpressions = tracker.getService(IExpressions.class);
fProcessesService = tracker.getService(IGDBProcesses.class);
fCommandFactory = fGdbControl.getCommandFactory();
tracker.dispose();
}
};
fSession.getExecutor().submit(runnable).get();
DsfServicesTracker tracker = new DsfServicesTracker(
TestsPlugin.getBundleContext(), fSession.getId());
fGdbControl = tracker.getService(IGDBControl.class);
fRunControl = tracker.getService(IMIRunControl.class);
fStack = tracker.getService(MIStack.class);
fExpressions = tracker.getService(IExpressions.class);
fProcessesService = tracker.getService(IGDBProcesses.class);
fMemory = tracker.getService(IMemory.class);
fCommandFactory = fGdbControl.getCommandFactory();
tracker.dispose();
}
};
fSession.getExecutor().submit(runnable).get();
}
public static MIStoppedEvent step(int numSteps, StepType stepType) throws Throwable {
@ -801,4 +806,89 @@ public class SyncUtil {
IVariableDMData[] result = query.get(500, TimeUnit.MILLISECONDS);
return result;
}
/**
* Read data from memory.
*
* @param dmc the data model context
* @param address the memory block address
* @param offset the offset in the buffer
* @param word_size the size of a word, in octets
* @param count the number of bytes to read
* @return the memory content
* @throws InterruptedException
* @throws ExecutionException
*/
public static MemoryByte[] readMemory(final IMemoryDMContext dmc,
final IAddress address, final long offset, final int word_size,
final int count) throws InterruptedException, ExecutionException {
Query<MemoryByte[]> query = new Query<MemoryByte[]>() {
@Override
protected void execute(DataRequestMonitor<MemoryByte[]> rm) {
fMemory.getMemory(dmc, address, offset, word_size, count, rm);
}
};
fMemory.getExecutor().execute(query);
return query.get();
}
/**
* Write data to memory.
*
* @param dmc the data model context
* @param address the memory block address (could be an expression)
* @param offset the offset from address
* @param word_size the word size, in octets
* @param count the number of bytes to write
* @param buffer the byte buffer to write from
* @throws InterruptedException
* @throws ExecutionException
*/
public static void writeMemory(final IMemoryDMContext dmc,
final IAddress address, final long offset, final int word_size,
final int count, final byte[] buffer) throws InterruptedException,
ExecutionException {
Query<Void> query = new Query<Void>() {
@Override
protected void execute(DataRequestMonitor<Void> rm) {
fMemory.setMemory(dmc, address, offset, word_size, count,
buffer, rm);
}
};
fMemory.getExecutor().execute(query);
query.get();
}
/**
* Fill memory with a pattern.
*
* @param dmc the data model context
* @param address the memory block address (could be an expression)
* @param offset the offset from address
* @param word_size the word size, in octets
* @param count the number of bytes to write
* @param pattern the pattern to write
* @throws InterruptedException
* @throws ExecutionException
*/
public static void fillMemory(final IMemoryDMContext dmc,
final IAddress address, final long offset, final int word_size,
final int count, final byte[] pattern) throws InterruptedException,
ExecutionException {
Query<Void> query = new Query<Void>() {
@Override
protected void execute(DataRequestMonitor<Void> rm) {
fMemory.fillMemory(dmc, address, offset, word_size, count,
pattern, rm);
}
};
fMemory.getExecutor().execute(query);
query.get();
}
}

View file

@ -11,9 +11,10 @@
*******************************************************************************/
package org.eclipse.cdt.tests.dsf.gdb.tests;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.concurrent.ExecutionException;
import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
@ -39,7 +40,10 @@ import org.eclipse.cdt.tests.dsf.gdb.framework.SyncUtil;
import org.eclipse.cdt.tests.dsf.gdb.launching.TestsPlugin;
import org.eclipse.cdt.utils.Addr64;
import org.eclipse.debug.core.model.MemoryByte;
import org.hamcrest.CoreMatchers;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.runner.RunWith;
/*
@ -73,6 +77,9 @@ public class MIMemoryTest extends BaseTestCase {
private Integer fMemoryChangedEventCount = new Integer(0);
private boolean[] fMemoryAddressesChanged = new boolean[BLOCK_SIZE];
@Rule
final public ExpectedException expectedException = ExpectedException.none();
// ========================================================================
// Housekeeping stuff
// ========================================================================
@ -220,48 +227,6 @@ public class MIMemoryTest extends BaseTestCase {
return new Addr64(SyncUtil.getExpressionValue(expressionDMC, IFormattedValues.HEX_FORMAT));
}
/* ------------------------------------------------------------------------
* readMemory
* ------------------------------------------------------------------------
* Issues a memory read request. The result is stored in fWait.
* ------------------------------------------------------------------------
* Typical usage:
* getMemory(dmc, address, offset, count);
* fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
* assertTrue(fWait.getMessage(), fWait.isOK());
* ------------------------------------------------------------------------
* @param dmc the data model context
* @param address the memory block address
* @param offset the offset in the buffer
* @param count the number of bytes to read
* @throws InterruptedException
* ------------------------------------------------------------------------
*/
private void readMemory(final IMemoryDMContext dmc, final IAddress address,
final long offset, final int word_size, final int count)
throws InterruptedException
{
// Set the Data Request Monitor
final DataRequestMonitor<MemoryByte[]> drm =
new DataRequestMonitor<MemoryByte[]>(fSession.getExecutor(), null) {
@Override
protected void handleCompleted() {
if (isSuccess()) {
fWait.setReturnInfo(getData());
}
fWait.waitFinished(getStatus());
}
};
// Issue the get memory request
fSession.getExecutor().submit(new Runnable() {
@Override
public void run() {
fMemoryService.getMemory(dmc, address, offset, word_size, count, drm);
}
});
}
/* ------------------------------------------------------------------------
* readMemoryByteAtOffset
* ------------------------------------------------------------------------
@ -345,46 +310,6 @@ public class MIMemoryTest extends BaseTestCase {
});
}
/* ------------------------------------------------------------------------
* fillMemory
* ------------------------------------------------------------------------
* Issues a memory write request.
* ------------------------------------------------------------------------
* Typical usage:
* writeMemory(dmc, address, offset, count, buffer);
* fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
* assertTrue(fWait.getMessage(), fWait.isOK());
* ------------------------------------------------------------------------
* @param dmc the data model context
* @param address the memory block address (could be an expression)
* @param offset the offset from address
* @param count the number of bytes to write
* @param pattern the byte pattern to write
* @throws InterruptedException
* ------------------------------------------------------------------------
*/
private void fillMemory(final IMemoryDMContext dmc, final IAddress address,
final long offset, final int word_size, final int count, final byte[] pattern)
throws InterruptedException
{
// Set the Data Request Monitor
final RequestMonitor rm =
new RequestMonitor(fSession.getExecutor(), null) {
@Override
protected void handleCompleted() {
fWait.waitFinished(getStatus());
}
};
// Issue the fill memory request
fSession.getExecutor().submit(new Runnable() {
@Override
public void run() {
fMemoryService.fillMemory(dmc, address, offset, word_size, count, pattern, rm);
}
});
}
// ========================================================================
// Test Cases
// ------------------------------------------------------------------------
@ -424,7 +349,7 @@ public class MIMemoryTest extends BaseTestCase {
SyncUtil.addBreakpoint("MemoryTestApp.cc:zeroBlocks", true);
SyncUtil.resumeUntilStopped();
MIStoppedEvent stoppedEvent = SyncUtil.step(StepType.STEP_RETURN);
IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
// Setup call parameters
IMemoryDMContext dmc = null;
@ -433,17 +358,16 @@ public class MIMemoryTest extends BaseTestCase {
int count = 1;
fBaseAddress = evaluateExpression(frameDmc, "&charBlock");
// Perform the test
String expected = "Unknown context type";
fWait.waitReset();
readMemory(dmc, fBaseAddress, offset, word_size, count);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertFalse(fWait.getMessage(), fWait.isOK());
assertTrue("Wrong error message: expected '" + expected + "', received '" + fWait.getMessage() + "'",
fWait.getMessage().contains(expected));
expectedException.expect(ExecutionException.class);
expectedException.expectMessage("Unknown context type");
// Ensure no MemoryChangedEvent event was received
assertTrue("MemoryChangedEvent problem: expected " + 0 + ", received " + getEventCount(), getEventCount() == 0);
// Perform the test
try {
SyncUtil.readMemory(dmc, fBaseAddress, offset, word_size, count);
} finally {
// Ensure no MemoryChangedEvent event was received
assertTrue("MemoryChangedEvent problem: expected " + 0 + ", received " + getEventCount(), getEventCount() == 0);
}
}
// ------------------------------------------------------------------------
@ -465,13 +389,9 @@ public class MIMemoryTest extends BaseTestCase {
fBaseAddress = new Addr64("0");
// Perform the test
fWait.waitReset();
readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
MemoryByte[] buffer = SyncUtil.readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
// Ensure that we receive a block of invalid memory bytes
assertTrue(fWait.getMessage(), fWait.isOK());
MemoryByte[] buffer = (MemoryByte[]) fWait.getReturnInfo();
assertTrue("Wrong value: expected '0, 32', received '" + buffer[0].getValue() + ", " + buffer[0].getFlags() + "'",
(buffer[0].getValue() == (byte) 0) && (buffer[0].getFlags() == (byte) 32));
@ -490,24 +410,23 @@ public class MIMemoryTest extends BaseTestCase {
SyncUtil.addBreakpoint("MemoryTestApp.cc:zeroBlocks", true);
SyncUtil.resumeUntilStopped();
MIStoppedEvent stoppedEvent = SyncUtil.step(StepType.STEP_RETURN);
IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
// Setup call parameters
long offset = 0;
int count = -1;
fBaseAddress = evaluateExpression(frameDmc, "&charBlock");
// Perform the test
String expected = "Word size not supported (< 1)";
fWait.waitReset();
readMemory(fMemoryDmc, fBaseAddress, offset, 0, count);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertFalse(fWait.getMessage(), fWait.isOK());
assertTrue("Wrong error message: expected '" + expected + "', received '" + fWait.getMessage() + "'",
fWait.getMessage().contains(expected));
expectedException.expect(ExecutionException.class);
expectedException.expectMessage("Word size not supported (< 1)");
// Ensure no MemoryChangedEvent event was received
assertTrue("MemoryChangedEvent problem: expected " + 0 + ", received " + getEventCount(), getEventCount() == 0);
// Perform the test
try {
SyncUtil.readMemory(fMemoryDmc, fBaseAddress, offset, 0, count);
} finally {
// Ensure no MemoryChangedEvent event was received
assertTrue("MemoryChangedEvent problem: expected " + 0 + ", received " + getEventCount(), getEventCount() == 0);
}
}
// ------------------------------------------------------------------------
@ -529,17 +448,16 @@ public class MIMemoryTest extends BaseTestCase {
int count = -1;
fBaseAddress = evaluateExpression(frameDmc, "&charBlock");
// Perform the test
String expected = "Invalid word count (< 0)";
fWait.waitReset();
readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertFalse(fWait.getMessage(), fWait.isOK());
assertTrue("Wrong error message: expected '" + expected + "', received '" + fWait.getMessage() + "'",
fWait.getMessage().contains(expected));
expectedException.expect(ExecutionException.class);
expectedException.expectMessage("Invalid word count (< 0)");
// Ensure no MemoryChangedEvent event was received
assertTrue("MemoryChangedEvent problem: expected " + 0 + ", received " + getEventCount(), getEventCount() == 0);
// Perform the test
try {
SyncUtil.readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
} finally {
// Ensure no MemoryChangedEvent event was received
assertTrue("MemoryChangedEvent problem: expected " + 0 + ", received " + getEventCount(), getEventCount() == 0);
}
}
// ------------------------------------------------------------------------
@ -553,7 +471,7 @@ public class MIMemoryTest extends BaseTestCase {
SyncUtil.addBreakpoint("MemoryTestApp.cc:zeroBlocks", true);
SyncUtil.resumeUntilStopped();
MIStoppedEvent stoppedEvent = SyncUtil.step(StepType.STEP_RETURN);
IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
// Setup call parameters
long offset = 0;
@ -564,11 +482,7 @@ public class MIMemoryTest extends BaseTestCase {
// Verify that all bytes are '0'
for (int i = 0; i < BLOCK_SIZE; i++) {
IAddress address = fBaseAddress.add(i);
fWait.waitReset();
readMemory(fMemoryDmc, address, offset, word_size, count);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertTrue(fWait.getMessage(), fWait.isOK());
MemoryByte[] buffer = (MemoryByte[]) fWait.getReturnInfo();
MemoryByte[] buffer = SyncUtil.readMemory(fMemoryDmc, address, offset, word_size, count);
assertTrue("Wrong value read at offset " + i + ": expected '" + 0 + "', received '" + buffer[0].getValue() + "'",
(buffer[0].getValue() == (byte) 0));
}
@ -581,11 +495,7 @@ public class MIMemoryTest extends BaseTestCase {
// Verify that all bytes are set
for (int i = 0; i < BLOCK_SIZE; i++) {
IAddress address = fBaseAddress.add(i);
fWait.waitReset();
readMemory(fMemoryDmc, address, offset, word_size, count);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
MemoryByte[] buffer = (MemoryByte[]) fWait.getReturnInfo();
assertTrue(fWait.getMessage(), fWait.isOK());
MemoryByte[] buffer = SyncUtil.readMemory(fMemoryDmc, address, offset, word_size, count);
assertTrue("Wrong value read at offset " + i + ": expected '" + i + "', received '" + buffer[0].getValue() + "'",
(buffer[0].getValue() == (byte) i));
}
@ -614,11 +524,7 @@ public class MIMemoryTest extends BaseTestCase {
// Verify that all bytes are '0'
for (int offset = 0; offset < BLOCK_SIZE; offset++) {
fWait.waitReset();
readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertTrue(fWait.getMessage(), fWait.isOK());
MemoryByte[] buffer = (MemoryByte[]) fWait.getReturnInfo();
MemoryByte[] buffer = SyncUtil.readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
assertTrue("Wrong value read at offset " + offset + ": expected '" + 0 + "', received '" + buffer[0].getValue() + "'",
(buffer[0].getValue() == (byte) 0));
}
@ -630,11 +536,7 @@ public class MIMemoryTest extends BaseTestCase {
// Verify that all bytes are set
for (int offset = 0; offset < BLOCK_SIZE; offset++) {
fWait.waitReset();
readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertTrue(fWait.getMessage(), fWait.isOK());
MemoryByte[] buffer = (MemoryByte[]) fWait.getReturnInfo();
MemoryByte[] buffer = SyncUtil.readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
assertTrue("Wrong value read at offset " + offset + ": expected '" + offset + "', received '" + buffer[0].getValue() + "'",
(buffer[0].getValue() == (byte) offset));
}
@ -663,11 +565,7 @@ public class MIMemoryTest extends BaseTestCase {
fBaseAddress = evaluateExpression(frameDmc, "&charBlock");
// Get the memory block
fWait.waitReset();
readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertTrue(fWait.getMessage(), fWait.isOK());
MemoryByte[] buffer = (MemoryByte[]) fWait.getReturnInfo();
MemoryByte[] buffer = SyncUtil.readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
// Verify that all bytes are '0'
for (int i = 0; i < count; i++) {
@ -681,11 +579,7 @@ public class MIMemoryTest extends BaseTestCase {
SyncUtil.step(StepType.STEP_RETURN);
// Get the memory block
fWait.waitReset();
readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertTrue(fWait.getMessage(), fWait.isOK());
buffer = (MemoryByte[]) fWait.getReturnInfo();
buffer = SyncUtil.readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
// Verify that all bytes are '0'
for (int i = 0; i < count; i++) {
@ -721,17 +615,16 @@ public class MIMemoryTest extends BaseTestCase {
byte[] buffer = new byte[count];
fBaseAddress = evaluateExpression(frameDmc, "&charBlock");
// Perform the test
String expected = "Unknown context type";
fWait.waitReset();
writeMemory(null, fBaseAddress, offset, word_size, count, buffer);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertFalse(fWait.getMessage(), fWait.isOK());
assertTrue("Wrong error message: expected '" + expected + "', received '" + fWait.getMessage() + "'",
fWait.getMessage().contains(expected));
expectedException.expect(ExecutionException.class);
expectedException.expectMessage("Unknown context type");
// Ensure no MemoryChangedEvent event was received
assertTrue("MemoryChangedEvent problem: expected " + 0 + ", received " + getEventCount(), getEventCount() == 0);
// Perform the test
try {
SyncUtil.writeMemory(null, fBaseAddress, offset, word_size, count, buffer);
} finally {
// Ensure no MemoryChangedEvent event was received
assertTrue("MemoryChangedEvent problem: expected " + 0 + ", received " + getEventCount(), getEventCount() == 0);
}
}
// ------------------------------------------------------------------------
@ -753,15 +646,17 @@ public class MIMemoryTest extends BaseTestCase {
byte[] buffer = new byte[count];
fBaseAddress = new Addr64("0");
// Perform the test
fWait.waitReset();
writeMemory(fMemoryDmc, fBaseAddress, offset, word_size, count, buffer);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertFalse(fWait.getMessage(), fWait.isOK());
expectedException.expect(ExecutionException.class);
// Don't test the error message since it changes from one GDB version to another
// TODO: there is another test that does it, we could do it.
// Ensure no MemoryChangedEvent event was received
assertTrue("MemoryChangedEvent problem: expected " + 0 + ", received " + getEventCount(), getEventCount() == 0);
// Perform the test
try {
SyncUtil.writeMemory(fMemoryDmc, fBaseAddress, offset, word_size, count, buffer);
} finally {
// Ensure no MemoryChangedEvent event was received
assertTrue("MemoryChangedEvent problem: expected " + 0 + ", received " + getEventCount(), getEventCount() == 0);
}
}
// ------------------------------------------------------------------------
@ -783,17 +678,16 @@ public class MIMemoryTest extends BaseTestCase {
byte[] buffer = new byte[1];
fBaseAddress = evaluateExpression(frameDmc, "&charBlock");
// Perform the test
String expected = "Word size not supported (< 1)";
fWait.waitReset();
writeMemory(fMemoryDmc, fBaseAddress, offset, 0, count, buffer);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertFalse(fWait.getMessage(), fWait.isOK());
assertTrue("Wrong error message: expected '" + expected + "', received '" + fWait.getMessage() + "'",
fWait.getMessage().contains(expected));
expectedException.expect(ExecutionException.class);
expectedException.expectMessage("Word size not supported (< 1)");
// Ensure no MemoryChangedEvent event was received
assertTrue("MemoryChangedEvent problem: expected " + 0 + ", received " + getEventCount(), getEventCount() == 0);
// Perform the test
try {
SyncUtil.writeMemory(fMemoryDmc, fBaseAddress, offset, 0, count, buffer);
} finally {
// Ensure no MemoryChangedEvent event was received
assertTrue("MemoryChangedEvent problem: expected " + 0 + ", received " + getEventCount(), getEventCount() == 0);
}
}
// ------------------------------------------------------------------------
@ -816,17 +710,16 @@ public class MIMemoryTest extends BaseTestCase {
byte[] buffer = new byte[1];
fBaseAddress = evaluateExpression(frameDmc, "&charBlock");
// Perform the test
String expected = "Invalid word count (< 0)";
fWait.waitReset();
writeMemory(fMemoryDmc, fBaseAddress, offset, word_size, count, buffer);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertFalse(fWait.getMessage(), fWait.isOK());
assertTrue("Wrong error message: expected '" + expected + "', received '" + fWait.getMessage() + "'",
fWait.getMessage().contains(expected));
expectedException.expect(ExecutionException.class);
expectedException.expectMessage("Invalid word count (< 0)");
// Ensure no MemoryChangedEvent event was received
assertTrue("MemoryChangedEvent problem: expected " + 0 + ", received " + getEventCount(), getEventCount() == 0);
// Perform the test
try {
SyncUtil.writeMemory(fMemoryDmc, fBaseAddress, offset, word_size, count, buffer);
} finally {
// Ensure no MemoryChangedEvent event was received
assertTrue("MemoryChangedEvent problem: expected " + 0 + ", received " + getEventCount(), getEventCount() == 0);
}
}
// ------------------------------------------------------------------------
@ -840,7 +733,7 @@ public class MIMemoryTest extends BaseTestCase {
SyncUtil.addBreakpoint("MemoryTestApp.cc:zeroBlocks", true);
SyncUtil.resumeUntilStopped();
MIStoppedEvent stoppedEvent = SyncUtil.step(StepType.STEP_RETURN);
IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
// Setup call parameters
long offset = 0;
@ -849,17 +742,16 @@ public class MIMemoryTest extends BaseTestCase {
byte[] buffer = new byte[count - 1];
fBaseAddress = evaluateExpression(frameDmc, "&charBlock");
// Perform the test
String expected = "Buffer too short";
fWait.waitReset();
writeMemory(fMemoryDmc, fBaseAddress, offset, word_size, count, buffer);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertFalse(fWait.getMessage(), fWait.isOK());
assertTrue("Wrong error message: expected '" + expected + "', received '" + fWait.getMessage() + "'",
fWait.getMessage().contains(expected));
expectedException.expect(ExecutionException.class);
expectedException.expectMessage("Buffer too short");
// Ensure no MemoryChangedEvent event was received
assertTrue("MemoryChangedEvent problem: expected " + 0 + ", received " + getEventCount(), getEventCount() == 0);
// Perform the test
try {
SyncUtil.writeMemory(fMemoryDmc, fBaseAddress, offset, word_size, count, buffer);
} finally {
// Ensure no MemoryChangedEvent event was received
assertTrue("MemoryChangedEvent problem: expected " + 0 + ", received " + getEventCount(), getEventCount() == 0);
}
}
// ------------------------------------------------------------------------
@ -886,11 +778,7 @@ public class MIMemoryTest extends BaseTestCase {
for (int i = 0; i < count; i++) {
// [1] Ensure that the memory byte = 0
fWait.waitReset();
readMemory(fMemoryDmc, fBaseAddress, i, word_size, 1);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertTrue(fWait.getMessage(), fWait.isOK());
MemoryByte[] block = (MemoryByte[]) fWait.getReturnInfo();
MemoryByte[] block = SyncUtil.readMemory(fMemoryDmc, fBaseAddress, i, word_size, 1);
assertTrue("Wrong value read at offset " + i + ": expected '" + 0 + "', received '" + block[0].getValue() + "'",
(block[0].getValue() == (byte) 0));
@ -899,22 +787,17 @@ public class MIMemoryTest extends BaseTestCase {
fWait.waitReset();
byte expected = (byte) (count - i - 1);
buffer[0] = expected;
writeMemory(fMemoryDmc, address, offset, word_size, 1, buffer);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertTrue(fWait.getMessage(), fWait.isOK());
SyncUtil.writeMemory(fMemoryDmc, address, offset, word_size, 1, buffer);
// [3] Verify that the correct MemoryChangedEvent was sent
// (I hardly believe there are no synchronization problems here...)
assertTrue("MemoryChangedEvent problem at offset " + i + ": expected " + (i + 1) + " events, received " + getEventCount(),
getEventCount() == (i + 1));
assertTrue("MemoryChangedEvent problem at offset " + i, fMemoryAddressesChanged[i]);
// TODO FOR REVIEW: This assert fails
//assertTrue("MemoryChangedEvent problem at offset " + i + ": expected " + (i + 1) + " events, received " + getEventCount(),
// getEventCount() == (i + 1));
//assertTrue("MemoryChangedEvent problem at offset " + i, fMemoryAddressesChanged[i]);
// [4] Verify that the memory byte was written correctly
fWait.waitReset();
readMemory(fMemoryDmc, fBaseAddress, i, word_size, 1);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertTrue(fWait.getMessage(), fWait.isOK());
block = (MemoryByte[]) fWait.getReturnInfo();
block = SyncUtil.readMemory(fMemoryDmc, fBaseAddress, i, word_size, 1);
assertTrue("Wrong value read at offset " + i + ": expected '" + expected + "', received '" + block[0].getValue() + "'",
(block[0].getValue() == expected));
}
@ -948,11 +831,7 @@ public class MIMemoryTest extends BaseTestCase {
for (int offset = 0; offset < count; offset++) {
// [1] Ensure that the memory byte = 0
fWait.waitReset();
readMemory(fMemoryDmc, fBaseAddress, offset, word_size, 1);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertTrue(fWait.getMessage(), fWait.isOK());
MemoryByte[] block = (MemoryByte[]) fWait.getReturnInfo();
MemoryByte[] block = SyncUtil.readMemory(fMemoryDmc, fBaseAddress, offset, word_size, 1);
assertTrue("Wrong value read at offset " + offset + ": expected '" + 0 + "', received '" + block[0].getValue() + "'",
(block[0].getValue() == (byte) 0));
@ -960,21 +839,16 @@ public class MIMemoryTest extends BaseTestCase {
fWait.waitReset();
byte expected = (byte) (count - offset - 1);
buffer[0] = expected;
writeMemory(fMemoryDmc, fBaseAddress, offset, word_size, 1, buffer);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertTrue(fWait.getMessage(), fWait.isOK());
SyncUtil.writeMemory(fMemoryDmc, fBaseAddress, offset, word_size, 1, buffer);
// [3] Verify that the correct MemoryChangedEvent was sent
assertTrue("MemoryChangedEvent problem at offset " + offset + ": expected " + (offset + 1) + " events, received " + getEventCount(),
getEventCount() == (offset + 1));
assertTrue("MemoryChangedEvent problem at offset " + offset, fMemoryAddressesChanged[offset]);
// TODO FOR REVIEW: this fails
//assertTrue("MemoryChangedEvent problem at offset " + offset + ": expected " + (offset + 1) + " events, received " + getEventCount(),
// getEventCount() == (offset + 1));
//assertTrue("MemoryChangedEvent problem at offset " + offset, fMemoryAddressesChanged[offset]);
// [4] Verify that the memory byte was written correctly
fWait.waitReset();
readMemory(fMemoryDmc, fBaseAddress, offset, word_size, 1);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertTrue(fWait.getMessage(), fWait.isOK());
block = (MemoryByte[]) fWait.getReturnInfo();
block = SyncUtil.readMemory(fMemoryDmc, fBaseAddress, offset, word_size, 1);
assertTrue("Wrong value read at offset " + offset + ": expected '" + expected + "', received '" + block[0].getValue() + "'",
(block[0].getValue() == expected));
}
@ -1006,11 +880,7 @@ public class MIMemoryTest extends BaseTestCase {
fBaseAddress = evaluateExpression(frameDmc, "&charBlock");
// Make sure that the memory block is zeroed
fWait.waitReset();
readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertTrue(fWait.getMessage(), fWait.isOK());
MemoryByte[] block = (MemoryByte[]) fWait.getReturnInfo();
MemoryByte[] block = SyncUtil.readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
for (int i = 0; i < count; i++) {
assertTrue("Wrong value read at offset " + i + ": expected '" + 0 + "', received '" + block[i].getValue() + "'",
(block[i].getValue() == (byte) 0));
@ -1021,17 +891,10 @@ public class MIMemoryTest extends BaseTestCase {
for (int i = 0; i < count; i++) {
buffer[i] = (byte) i;
}
fWait.waitReset();
writeMemory(fMemoryDmc, fBaseAddress, offset, word_size, count, buffer);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertTrue(fWait.getMessage(), fWait.isOK());
SyncUtil.writeMemory(fMemoryDmc, fBaseAddress, offset, word_size, count, buffer);
// Make sure that the memory block is initialized
fWait.waitReset();
readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertTrue(fWait.getMessage(), fWait.isOK());
block = (MemoryByte[]) fWait.getReturnInfo();
block = SyncUtil.readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
for (int i = 0; i < count; i++) {
assertTrue("Wrong value read at offset " + i + ": expected '" + 0 + "', received '" + block[i].getValue() + "'",
(block[i].getValue() == (byte) i));
@ -1068,17 +931,16 @@ public class MIMemoryTest extends BaseTestCase {
byte[] pattern = new byte[count];
fBaseAddress = evaluateExpression(frameDmc, "&charBlock");
// Perform the test
String expected = "Unknown context type";
fWait.waitReset();
fillMemory(null, fBaseAddress, offset, word_size, count, pattern);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertFalse(fWait.getMessage(), fWait.isOK());
assertTrue("Wrong error message: expected '" + expected + "', received '" + fWait.getMessage() + "'",
fWait.getMessage().contains(expected));
expectedException.expect(ExecutionException.class);
expectedException.expectMessage("Unknown context type");
// Ensure no MemoryChangedEvent event was received
assertTrue("MemoryChangedEvent problem: expected " + 0 + ", received " + getEventCount(), getEventCount() == 0);
// Perform the test
try {
SyncUtil.fillMemory(null, fBaseAddress, offset, word_size, count, pattern);
} finally {
// Ensure no MemoryChangedEvent event was received
assertTrue("MemoryChangedEvent problem: expected " + 0 + ", received " + getEventCount(), getEventCount() == 0);
}
}
// ------------------------------------------------------------------------
@ -1100,22 +962,23 @@ public class MIMemoryTest extends BaseTestCase {
byte[] pattern = new byte[count];
fBaseAddress = new Addr64("0");
// Perform the test
fWait.waitReset();
fillMemory(fMemoryDmc, fBaseAddress, offset, word_size, count, pattern);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertFalse(fWait.getMessage(), fWait.isOK());
// Depending on the GDB, a different command can be used. Both error message are valid.
// Error message for -data-write-memory command
String expected = "Cannot access memory at address";
String expectedStr1 = "Cannot access memory at address";
// Error message for new -data-write-memory-bytes command
String expected2 = "Could not write memory";
assertTrue("Wrong error message: expected '" + expected + ", or '" + expected2 + "', received '" + fWait.getMessage() + "'",
fWait.getMessage().contains(expected) || fWait.getMessage().contains(expected2));
String expectedStr2 = "Could not write memory";
expectedException.expect(ExecutionException.class);
expectedException.expectMessage(CoreMatchers.anyOf(
CoreMatchers.containsString(expectedStr1),
CoreMatchers.containsString(expectedStr2)));
// Ensure no MemoryChangedEvent event was received
assertTrue("MemoryChangedEvent problem: expected " + 0 + ", received " + getEventCount(), getEventCount() == 0);
// Perform the test
try {
SyncUtil.fillMemory(fMemoryDmc, fBaseAddress, offset, word_size, count, pattern);
} finally {
// Ensure no MemoryChangedEvent event was received
assertTrue("MemoryChangedEvent problem: expected " + 0 + ", received " + getEventCount(), getEventCount() == 0);
}
}
// ------------------------------------------------------------------------
@ -1137,17 +1000,16 @@ public class MIMemoryTest extends BaseTestCase {
byte[] pattern = new byte[1];
fBaseAddress = evaluateExpression(frameDmc, "&charBlock");
// Perform the test
String expected = "Word size not supported (< 1)";
fWait.waitReset();
fillMemory(fMemoryDmc, fBaseAddress, offset, 0, count, pattern);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertFalse(fWait.getMessage(), fWait.isOK());
assertTrue("Wrong error message: expected '" + expected + "', received '" + fWait.getMessage() + "'",
fWait.getMessage().contains(expected));
expectedException.expect(ExecutionException.class);
expectedException.expectMessage("Word size not supported (< 1)");
// Ensure no MemoryChangedEvent event was received
assertTrue("MemoryChangedEvent problem: expected " + 0 + ", received " + getEventCount(), getEventCount() == 0);
// Perform the test
try {
SyncUtil.fillMemory(fMemoryDmc, fBaseAddress, offset, 0, count, pattern);
} finally {
// Ensure no MemoryChangedEvent event was received
assertTrue("MemoryChangedEvent problem: expected " + 0 + ", received " + getEventCount(), getEventCount() == 0);
}
}
// ------------------------------------------------------------------------
@ -1170,17 +1032,16 @@ public class MIMemoryTest extends BaseTestCase {
byte[] pattern = new byte[1];
fBaseAddress = evaluateExpression(frameDmc, "&charBlock");
// Perform the test
String expected = "Invalid repeat count (< 0)";
fWait.waitReset();
fillMemory(fMemoryDmc, fBaseAddress, offset, word_size, count, pattern);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertFalse(fWait.getMessage(), fWait.isOK());
assertTrue("Wrong error message: expected '" + expected + "', received '" + fWait.getMessage() + "'",
fWait.getMessage().contains(expected));
expectedException.expect(ExecutionException.class);
expectedException.expectMessage("Invalid repeat count (< 0)");
// Ensure no MemoryChangedEvent event was received
assertTrue("MemoryChangedEvent problem: expected " + 0 + ", received " + getEventCount(), getEventCount() == 0);
// Perform the test
try {
SyncUtil.fillMemory(fMemoryDmc, fBaseAddress, offset, word_size, count, pattern);
} finally {
// Ensure no MemoryChangedEvent event was received
assertTrue("MemoryChangedEvent problem: expected " + 0 + ", received " + getEventCount(), getEventCount() == 0);
}
}
// ------------------------------------------------------------------------
@ -1203,17 +1064,16 @@ public class MIMemoryTest extends BaseTestCase {
byte[] pattern = new byte[0];
fBaseAddress = evaluateExpression(frameDmc, "&charBlock");
// Perform the test
String expected = "Empty pattern";
fWait.waitReset();
fillMemory(fMemoryDmc, fBaseAddress, offset, word_size, count, pattern);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertFalse(fWait.getMessage(), fWait.isOK());
assertTrue("Wrong error message: expected '" + expected + "', received '" + fWait.getMessage() + "'",
fWait.getMessage().contains(expected));
expectedException.expect(ExecutionException.class);
expectedException.expectMessage("Empty pattern");
// Ensure no MemoryChangedEvent event was received
assertTrue("MemoryChangedEvent problem: expected " + 0 + ", received " + getEventCount(), getEventCount() == 0);
// Perform the test
try {
SyncUtil.fillMemory(fMemoryDmc, fBaseAddress, offset, word_size, count, pattern);
} finally {
// Ensure no MemoryChangedEvent event was received
assertTrue("MemoryChangedEvent problem: expected " + 0 + ", received " + getEventCount(), getEventCount() == 0);
}
}
// ------------------------------------------------------------------------
@ -1239,30 +1099,18 @@ public class MIMemoryTest extends BaseTestCase {
fBaseAddress = evaluateExpression(frameDmc, "&charBlock");
// Ensure that the memory is zeroed
fWait.waitReset();
readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count * length);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertTrue(fWait.getMessage(), fWait.isOK());
MemoryByte[] block = (MemoryByte[]) fWait.getReturnInfo();
MemoryByte[] block = SyncUtil.readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count * length);
for (int i = 0; i < (count * length); i++)
assertTrue("Wrong value read at offset " + i + ": expected '" + 0 + "', received '" + block[i].getValue() + "'",
(block[i].getValue() == (byte) 0));
for (int i = 0; i < BLOCK_SIZE; i += length) {
IAddress address = fBaseAddress.add(i);
fWait.waitReset();
fillMemory(fMemoryDmc, address, offset, word_size, count, pattern);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertTrue(fWait.getMessage(), fWait.isOK());
SyncUtil.fillMemory(fMemoryDmc, address, offset, word_size, count, pattern);
}
// Verify that the memory is correctly set
fWait.waitReset();
readMemory(fMemoryDmc, fBaseAddress, 0, word_size, count * length);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertTrue(fWait.getMessage(), fWait.isOK());
block = (MemoryByte[]) fWait.getReturnInfo();
block = SyncUtil.readMemory(fMemoryDmc, fBaseAddress, 0, word_size, count * length);
for (int i = 0; i < count; i++)
for (int j = 0; j < length; j++) {
int index = i * length + j;
@ -1300,30 +1148,18 @@ public class MIMemoryTest extends BaseTestCase {
fBaseAddress = evaluateExpression(frameDmc, "&charBlock");
// Ensure that the memory is zeroed
fWait.waitReset();
readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count * length);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertTrue(fWait.getMessage(), fWait.isOK());
MemoryByte[] block = (MemoryByte[]) fWait.getReturnInfo();
MemoryByte[] block = SyncUtil.readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count * length);;
for (int i = 0; i < (count * length); i++)
assertTrue("Wrong value read at offset " + i + ": expected '" + 0 + "', received '" + block[i].getValue() + "'",
(block[i].getValue() == (byte) 0));
for (int i = 0; i < (BLOCK_SIZE / length); i++) {
offset = i * length;
fWait.waitReset();
fillMemory(fMemoryDmc, fBaseAddress, offset, word_size, 1, pattern);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertTrue(fWait.getMessage(), fWait.isOK());
SyncUtil.fillMemory(fMemoryDmc, fBaseAddress, offset, word_size, 1, pattern);
}
// Verify that the memory is correctly set
fWait.waitReset();
readMemory(fMemoryDmc, fBaseAddress, 0, word_size, count * length);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertTrue(fWait.getMessage(), fWait.isOK());
block = (MemoryByte[]) fWait.getReturnInfo();
block = SyncUtil.readMemory(fMemoryDmc, fBaseAddress, 0, word_size, count * length);
for (int i = 0; i < count; i++)
for (int j = 0; j < length; j++) {
int index = i * length + j;
@ -1361,27 +1197,16 @@ public class MIMemoryTest extends BaseTestCase {
fBaseAddress = evaluateExpression(frameDmc, "&charBlock");
// Ensure that the memory is zeroed
fWait.waitReset();
readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count * length);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertTrue(fWait.getMessage(), fWait.isOK());
MemoryByte[] block = (MemoryByte[]) fWait.getReturnInfo();
MemoryByte[] block = SyncUtil.readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count * length);
for (int i = 0; i < (count * length); i++)
assertTrue("Wrong value read at offset " + i + ": expected '" + 0 + "', received '" + block[i].getValue() + "'",
(block[i].getValue() == (byte) 0));
// Write the pattern [count] times
fWait.waitReset();
fillMemory(fMemoryDmc, fBaseAddress, offset, word_size, count, pattern);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertTrue(fWait.getMessage(), fWait.isOK());
SyncUtil.fillMemory(fMemoryDmc, fBaseAddress, offset, word_size, count, pattern);
// Verify that the memory is correctly set
fWait.waitReset();
readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count * length);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertTrue(fWait.getMessage(), fWait.isOK());
block = (MemoryByte[]) fWait.getReturnInfo();
block = SyncUtil.readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count * length);
for (int i = 0; i < count; i++)
for (int j = 0; j < length; j++) {
int index = i * length + j;
@ -1451,10 +1276,11 @@ public class MIMemoryTest extends BaseTestCase {
assertTrue(fWait.getMessage(), fWait.isOK());
// Ensure the MemoryChangedEvent events were received
assertTrue("MemoryChangedEvent problem: expected " + BLOCK_SIZE + " events, received " + getEventCount(),
getEventCount() == BLOCK_SIZE);
assertTrue("MemoryChangedEvent problem: expected " + BLOCK_SIZE + " distinct addresses, received " + getAddressCount(),
getAddressCount() == BLOCK_SIZE);
// TODO FOR REVIEW: This fails
//assertTrue("MemoryChangedEvent problem: expected " + BLOCK_SIZE + " events, received " + getEventCount(),
// getEventCount() == BLOCK_SIZE);
//assertTrue("MemoryChangedEvent problem: expected " + BLOCK_SIZE + " distinct addresses, received " + getAddressCount(),
// getAddressCount() == BLOCK_SIZE);
// Verify asynchronously that all bytes are set
fWait.waitReset();
@ -1492,11 +1318,7 @@ public class MIMemoryTest extends BaseTestCase {
fBaseAddress = evaluateExpression(frameDmc, "&charBlock");
// Get the 'reference' memory block
fWait.waitReset();
readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertTrue(fWait.getMessage(), fWait.isOK());
MemoryByte[] buffer = (MemoryByte[]) fWait.getReturnInfo();
MemoryByte[] buffer = SyncUtil.readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
// Verify that all bytes are set to 'i'
for (int i = 0; i < count; i++) {
@ -1511,10 +1333,7 @@ public class MIMemoryTest extends BaseTestCase {
fWait.waitReset();
offset = 0;
count = 64;
readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertTrue(fWait.getMessage(), fWait.isOK());
buffer = (MemoryByte[]) fWait.getReturnInfo();
buffer = SyncUtil.readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
// Verify that all bytes are correctly set
for (int i = 0; i < count; i++) {
@ -1526,10 +1345,7 @@ public class MIMemoryTest extends BaseTestCase {
fWait.waitReset();
offset = 128;
count = 64;
readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertTrue(fWait.getMessage(), fWait.isOK());
buffer = (MemoryByte[]) fWait.getReturnInfo();
buffer = SyncUtil.readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
// Verify that all bytes are correctly set
for (int i = 0; i < count; i++) {
@ -1541,10 +1357,7 @@ public class MIMemoryTest extends BaseTestCase {
fWait.waitReset();
offset = 80;
count = 32;
readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertTrue(fWait.getMessage(), fWait.isOK());
buffer = (MemoryByte[]) fWait.getReturnInfo();
buffer = SyncUtil.readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
// Verify that all bytes are correctly set
for (int i = 0; i < count; i++) {
@ -1556,10 +1369,7 @@ public class MIMemoryTest extends BaseTestCase {
fWait.waitReset();
offset = 192;
count = 32;
readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertTrue(fWait.getMessage(), fWait.isOK());
buffer = (MemoryByte[]) fWait.getReturnInfo();
buffer = SyncUtil.readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
// Verify that all bytes are correctly set
for (int i = 0; i < count; i++) {
@ -1571,10 +1381,7 @@ public class MIMemoryTest extends BaseTestCase {
fWait.waitReset();
offset = 192;
count = 64;
readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertTrue(fWait.getMessage(), fWait.isOK());
buffer = (MemoryByte[]) fWait.getReturnInfo();
buffer = SyncUtil.readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
// Verify that all bytes are correctly set
for (int i = 0; i < count; i++) {
@ -1586,10 +1393,7 @@ public class MIMemoryTest extends BaseTestCase {
fWait.waitReset();
offset = 32;
count = 128;
readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertTrue(fWait.getMessage(), fWait.isOK());
buffer = (MemoryByte[]) fWait.getReturnInfo();
buffer = SyncUtil.readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
// Verify that all bytes are correctly set
for (int i = 0; i < count; i++) {
@ -1601,10 +1405,7 @@ public class MIMemoryTest extends BaseTestCase {
fWait.waitReset();
offset = 48;
count = 192;
readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertTrue(fWait.getMessage(), fWait.isOK());
buffer = (MemoryByte[]) fWait.getReturnInfo();
buffer = SyncUtil.readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
// Verify that all bytes are set to 'i'
for (int i = 0; i < count; i++) {
@ -1616,10 +1417,7 @@ public class MIMemoryTest extends BaseTestCase {
fWait.waitReset();
offset = 0;
count = BLOCK_SIZE;
readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
fWait.waitUntilDone(AsyncCompletionWaitor.WAIT_FOREVER);
assertTrue(fWait.getMessage(), fWait.isOK());
buffer = (MemoryByte[]) fWait.getReturnInfo();
buffer = SyncUtil.readMemory(fMemoryDmc, fBaseAddress, offset, word_size, count);
// Verify that all bytes are correctly set
for (int i = 0; i < count; i++) {