/**
* CopyRight by Chinamobile
*/
package com.chinamobile.bcbsp.test.comm;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean;
import java.lang.management.MemoryUsage;
import java.util.Random;
import org.apache.hadoop.hbase.util.Bytes;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.chinamobile.bcbsp.comm.BSPMessage;
import com.chinamobile.bcbsp.comm.MessageQueuesForDisk;
import com.chinamobile.bcbsp.comm.MessageQueuesInterface;
import com.chinamobile.bcbsp.util.BSPJob;
import com.chinamobile.bcbsp.util.BSPJobID;
public class MessageQueuesInterfaceOutMemTest {
private static BSPJob job;
private static int partitionId = 0;
private long maxHeapSize;
MessageQueuesInterface msgQueues;
BSPMessage msg1 ,msg2, msg3;
@Before
public void setUp(){
job = mock(BSPJob.class);
when(job.getMemoryDataPercent()).thenReturn(0.8f);
when(job.getBeta()).thenReturn(0.5f);
when(job.getHashBucketNumber()).thenReturn(32);
when(job.getJobID()).thenReturn(new BSPJobID("jtIdentifier",2));
job.getBeta();
// Get the memory mxBean.
MemoryMXBean memoryMXBean = ManagementFactory.getMemoryMXBean();
// Get the heap memory usage.
MemoryUsage memoryUsage = memoryMXBean.getHeapMemoryUsage();
maxHeapSize = memoryUsage.getMax();
}
@After
public void tearDown() throws Exception {
msgQueues.clearAllQueues();
}
@SuppressWarnings("static-access")
@Test
public void testDisk(){
msgQueues = new MessageQueuesForDisk(this.job, this.partitionId);
Random rd = new Random();
int v;
byte [] data = new byte[1024];//each message's size is 1k
for(int i = 0; i <maxHeapSize*1.5/1024; i ++){
v = rd.nextInt(1024*800);
BSPMessage msg = new BSPMessage(v%20, String.valueOf(v), Bytes.toBytes("tags1"),data);
msgQueues.incomeAMessage(msg.getDstVertexID(), msg);
}
}
}