GP-0: Fix tests.

This commit is contained in:
Dan 2023-11-14 09:36:30 -05:00
parent ba30f4b0bb
commit 5654daa89d
7 changed files with 30 additions and 18 deletions

View file

@ -150,7 +150,7 @@ public class DBTraceObject extends DBAnnotatedObject implements TraceObject {
}
};
private CachedLifespanValues cachedLifespanValues = null;
private MutableLifeSet cachedLife = null;
private volatile MutableLifeSet cachedLife = null;
public DBTraceObject(DBTraceObjectManager manager, DBCachedObjectStore<?> store,
DBRecord record) {
@ -223,11 +223,11 @@ public class DBTraceObject extends DBAnnotatedObject implements TraceObject {
}
}
MutableLifeSet result = new DefaultLifeSet();
// NOTE: connected ranges should already be coalesced
// No need to apply discreet domain
getCanonicalParents(Lifespan.ALL).forEach(v -> result.add(v.getLifespan()));
cachedLife = result;
return result;
synchronized (result) {
return DefaultLifeSet.copyOf(result);
}
}
}

View file

@ -23,6 +23,8 @@ import java.util.function.Predicate;
import db.DBRecord;
import ghidra.program.model.address.AddressFactory;
import ghidra.program.model.address.AddressSetView;
import ghidra.trace.database.target.ValueSpace.AddressDimension;
import ghidra.trace.database.target.ValueSpace.EntryKeyDimension;
import ghidra.trace.model.Lifespan;
import ghidra.util.database.*;
import ghidra.util.database.spatial.AbstractConstraintsTree;
@ -58,7 +60,14 @@ public class DBTraceObjectValueRStarTree extends AbstractHyperRStarTree< //
public AddressSetView getAddressSetView(Lifespan at,
Predicate<? super InternalTraceObjectValue> predicate) {
return new DBTraceObjectValueMapAddressSetView(factory, lock, this, predicate);
return new DBTraceObjectValueMapAddressSetView(factory, lock,
this.reduce(TraceObjectValueQuery.intersecting(
EntryKeyDimension.INSTANCE.absoluteMin(),
EntryKeyDimension.INSTANCE.absoluteMax(),
at,
AddressDimension.INSTANCE.absoluteMin(),
AddressDimension.INSTANCE.absoluteMax())),
predicate);
}
}

View file

@ -15,7 +15,8 @@
*/
package ghidra.trace.database.memory;
import static org.junit.Assert.*;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import java.io.IOException;
import java.util.Set;
@ -23,6 +24,7 @@ import java.util.Set;
import org.junit.*;
import db.Transaction;
import ghidra.program.model.address.AddressSet;
import ghidra.program.model.lang.LanguageID;
import ghidra.test.AbstractGhidraHeadlessIntegrationTest;
import ghidra.trace.database.ToyDBTraceBuilder;
@ -151,8 +153,9 @@ public abstract class AbstractDBTraceMemoryManagerRegionsTest
Set.of(TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE));
}
assertEquals(b.set(b.range(0x1000, 0x1fff)), memory.getRegionsAddressSet(0));
assertEquals(b.set(), memory.getRegionsAddressSet(-1));
assertEquals(b.set(b.range(0x1000, 0x1fff)),
new AddressSet(memory.getRegionsAddressSet(0)));
assertEquals(b.set(), new AddressSet(memory.getRegionsAddressSet(-1)));
}
@Test
@ -164,8 +167,9 @@ public abstract class AbstractDBTraceMemoryManagerRegionsTest
Set.of(TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE));
}
assertEquals(b.set(b.range(0x1000, 0x1fff)), memory.getRegionsAddressSetWith(0, r -> true));
assertEquals(b.set(), memory.getRegionsAddressSetWith(-1, r -> true));
assertEquals(b.set(), memory.getRegionsAddressSetWith(0, r -> false));
assertEquals(b.set(b.range(0x1000, 0x1fff)),
new AddressSet(memory.getRegionsAddressSetWith(0, r -> true)));
assertEquals(b.set(), new AddressSet(memory.getRegionsAddressSetWith(-1, r -> true)));
assertEquals(b.set(), new AddressSet(memory.getRegionsAddressSetWith(0, r -> false)));
}
}