Skip to content

Commit

Permalink
MONDRIAN
Browse files Browse the repository at this point in the history
   Added new Tests to Main.
   In RolapAxis, after materialization set iter variable to null
   so that it could be gc-ed. 

[git-p4: depot-paths = "//open/mondrian/": change = 8530]
  • Loading branch information
Richard Emberson committed Jan 16, 2007
1 parent 44dfb07 commit d35ae67
Show file tree
Hide file tree
Showing 3 changed files with 110 additions and 2 deletions.
10 changes: 8 additions & 2 deletions src/main/mondrian/rolap/RolapAxis.java
Expand Up @@ -111,7 +111,7 @@ public Member get(int index) {
* a List is materialized from the Iterable.
*/
public static class MemberIterable extends RolapAxis {
private final Iterable<Member> iter;
private Iterable<Member> iter;
private List<Member> list;
public MemberIterable(Iterable<Member> iter) {
this.iter = iter;
Expand All @@ -129,6 +129,9 @@ protected synchronized void materialize() {
while (it.hasNext()) {
list.add(it.next());
}
// allow gc of iter
iter = null;

list = list;
}
}
Expand Down Expand Up @@ -306,7 +309,7 @@ public Member get(int index) {
* a List is materialized from the Iterable.
*/
public static class MemberArrayIterable extends RolapAxis {
private final Iterable<Member[]> iter;
private Iterable<Member[]> iter;
private List<Member[]> list;
private int len;
public MemberArrayIterable(Iterable<Member[]> iter) {
Expand All @@ -326,6 +329,9 @@ protected synchronized void materialize() {
while (it.hasNext()) {
list.add(it.next());
}
// allow gc of iter
iter = null;

list = list;
len = list.get(0).length;
}
Expand Down
95 changes: 95 additions & 0 deletions testsrc/main/mondrian/rolap/RolapAxisTest.java
Expand Up @@ -24,6 +24,101 @@ public RolapAxisTest() {
public RolapAxisTest(String name) {
super(name);
}
public void testMemberList() {
List<Member> list = new ArrayList<Member>();
list.add(new TestMember("a"));
list.add(new TestMember("b"));
list.add(new TestMember("c"));
list.add(new TestMember("d"));

StringBuffer buf = new StringBuffer(100);

RolapAxis axis = new RolapAxis.MemberList(list);
List<Position> positions = axis.getPositions();
boolean firstTimeInner = true;
for (Position position: positions) {
if (! firstTimeInner) {
buf.append(',');
}
buf.append(toString(position));
firstTimeInner = false;
}
String s = buf.toString();
String e = "{a},{b},{c},{d}";
//System.out.println("s=" +s);
Assert.assertEquals(s, e);

positions = axis.getPositions();
int size = positions.size();
//System.out.println("size=" +size);
Assert.assertEquals(size, 4);

buf.setLength(0);
for (int i = 0; i < size; i++) {
Position position = positions.get(i);
if (i > 0) {
buf.append(',');
}
buf.append(toString(position));
}
s = buf.toString();
e = "{a},{b},{c},{d}";
//System.out.println("s=" +s);
Assert.assertEquals(s, e);
}
public void testMemberArrayList() {
List<Member[]> list = new ArrayList<Member[]>();
list.add(new Member[] {
new TestMember("a"),
new TestMember("b"),
new TestMember("c")
});
list.add(new Member[] {
new TestMember("d"),
new TestMember("e"),
new TestMember("f")
});
list.add(new Member[] {
new TestMember("g"),
new TestMember("h"),
new TestMember("i")
});

StringBuffer buf = new StringBuffer(100);

RolapAxis axis = new RolapAxis.MemberArrayList(list);
List<Position> positions = axis.getPositions();
boolean firstTimeInner = true;
for (Position position: positions) {
if (! firstTimeInner) {
buf.append(',');
}
buf.append(toString(position));
firstTimeInner = false;
}
String s = buf.toString();
String e = "{a,b,c},{d,e,f},{g,h,i}";
//System.out.println("s=" +s);
Assert.assertEquals(s, e);

positions = axis.getPositions();
int size = positions.size();
//System.out.println("size=" +size);
Assert.assertEquals(size, 3);

buf.setLength(0);
for (int i = 0; i < size; i++) {
Position position = positions.get(i);
if (i > 0) {
buf.append(',');
}
buf.append(toString(position));
}
s = buf.toString();
e = "{a,b,c},{d,e,f},{g,h,i}";
//System.out.println("s=" +s);
Assert.assertEquals(s, e);
}

public void testMemberIterable() {
List<Member> list = new ArrayList<Member>();
Expand Down
7 changes: 7 additions & 0 deletions testsrc/main/mondrian/test/Main.java
Expand Up @@ -28,6 +28,8 @@
import mondrian.olap.UtilTestCase;
import mondrian.olap.fun.FunctionTest;
import mondrian.olap.fun.SortTest;
import mondrian.olap.fun.CrossJoinTest;
import mondrian.olap.fun.MemberHelperTest;
import mondrian.olap.HierarchyBugTest;
import mondrian.rolap.*;
import mondrian.rolap.aggmatcher.*;
Expand Down Expand Up @@ -187,6 +189,11 @@ public static Test suite() throws Exception {
suite.addTestSuite(BUG_1541077.class);
suite.addTestSuite(JolapTest.class);
suite.addTestSuite(DataSourceChangeListenerTest.class);
suite.addTestSuite(ModulosTest.class);
suite.addTestSuite(CellKeyTest.class);
suite.addTestSuite(RolapAxisTest.class);
suite.addTestSuite(MemberHelperTest.class);
suite.addTestSuite(CrossJoinTest.class);

boolean testNonEmpty = isRunOnce();
if (!MondrianProperties.instance().EnableNativeNonEmpty.get())
Expand Down

0 comments on commit d35ae67

Please sign in to comment.