use of com.att.aro.core.peripheral.pojo.UserEvent in project VideoOptimzer by attdevsupport.
the class UserEventReaderImpl method readGetEventsFile.
/**
* It is method for read VPN collector user event (screen and physical button
* press) file
*
* @param directory
* @param eventTime0 the time stamp from VPN collector
* SystemClock.uptimeMillis() when VO launched
* @return
*/
private List<UserEvent> readGetEventsFile(String filePath, double eventTime0) {
List<UserEvent> userEvents = new ArrayList<UserEvent>();
String[] lines = null;
try {
lines = filereader.readAllLine(filePath);
} catch (IOException e) {
LOGGER.error("failed to read user event file: " + filePath);
}
if (lines != null && lines.length > 0) {
for (String lineBuf : lines) {
// Ignore empty line getevent file ouput devices and their names to be neglected
if (lineBuf.trim().isEmpty() || lineBuf.contains("add device") || lineBuf.contains("name:") || lineBuf.contains("now")) {
continue;
}
// Parse Get event type entry
UserEvent.UserEventType actionType = UserEvent.UserEventType.EVENT_UNKNOWN;
if (lineBuf.contains(TraceDataConst.GetEvent.SCREEN)) {
actionType = UserEventType.SCREEN_TOUCH;
} else if (lineBuf.contains(TraceDataConst.GetEvent.KEY)) {
if (lineBuf.contains(TraceDataConst.GetEvent.KEY_POWER)) {
actionType = UserEventType.KEY_POWER;
} else if (lineBuf.contains(TraceDataConst.GetEvent.KEY_VOLUP)) {
actionType = UserEventType.KEY_VOLUP;
} else if (lineBuf.contains(TraceDataConst.GetEvent.KEY_VOLDOWN)) {
actionType = UserEventType.KEY_VOLDOWN;
} else if (lineBuf.contains(TraceDataConst.GetEvent.KEY_HOME)) {
actionType = UserEventType.KEY_HOME;
} else if (lineBuf.contains(TraceDataConst.GetEvent.KEY_MENU)) {
actionType = UserEventType.KEY_MENU;
} else if (lineBuf.contains(TraceDataConst.GetEvent.KEY_BACK)) {
actionType = UserEventType.KEY_BACK;
} else if (lineBuf.contains(TraceDataConst.GetEvent.KEY_SEARCH)) {
actionType = UserEventType.KEY_SEARCH;
} else {
actionType = UserEventType.KEY_KEY;
}
} else {
// TODO: Review User Events and Add More Handling.
LOGGER.debug("Invalid user event type in trace: " + lineBuf);
continue;
}
String[] strFields = lineBuf.split("]");
if (strFields[0].indexOf('[') != -1) {
strFields[0] = strFields[0].substring(strFields[0].indexOf('[') + 1, strFields[0].length());
}
String[] timeArray = strFields[0].split(" ");
Double currentTime = Double.parseDouble(timeArray[timeArray.length - 1]);
double dTimeStamp = currentTime - eventTime0;
userEvents.add(new UserEvent(actionType, dTimeStamp, dTimeStamp));
}
}
return userEvents;
}
use of com.att.aro.core.peripheral.pojo.UserEvent in project VideoOptimzer by attdevsupport.
the class ScreenRotationReaderImpl method readData.
@Override
public List<UserEvent> readData(String directory, double startTime) {
List<UserEvent> userEvents = new ArrayList<UserEvent>();
String filepath = directory + Util.FILE_SEPARATOR + TraceDataConst.FileName.SCREEN_ROTATIONS_FILE;
if (!filereader.fileExist(filepath)) {
return userEvents;
}
String[] lines = null;
try {
lines = filereader.readAllLine(filepath);
} catch (IOException e) {
LOGGER.error("failed to read screen rotation file: " + filepath);
}
if (lines != null) {
for (String line : lines) {
String[] strFields = line.split(" ");
// Get timestamp
double dTimeStamp = Util.normalizeTime(Double.parseDouble(strFields[0]), startTime);
if (strFields[1].contains(TraceDataConst.UserEvent.KEY_LANDSCAPE)) {
eventType = UserEventType.SCREEN_LANDSCAPE;
} else if (strFields[1].contains(TraceDataConst.UserEvent.KEY_PORTRAIT)) {
eventType = UserEventType.SCREEN_PORTRAIT;
}
userEvents.add(new UserEvent(eventType, dTimeStamp, dTimeStamp + 0.5));
}
Collections.sort(userEvents, new UserEventSorting());
}
return userEvents;
}
use of com.att.aro.core.peripheral.pojo.UserEvent in project VideoOptimzer by attdevsupport.
the class VideoSegmentAnalyzer method locateStartupDelay.
/**
* <pre>
* Loads, and or creates estimated, startup data for a stream Populates
* VideoStreamStartup from first segment and manifest data. Populates
* VideoStream so that graphs can be displayed. Attaches to VideoStream to aid
* SegmentTablePanel
*
* @param result
* @param videoStream
* @return existing or estimated VideoStreamStartup
*/
public VideoStreamStartup locateStartupDelay(AbstractTraceResult result, VideoStream videoStream) {
if (result instanceof TraceDirectoryResult) {
if ((videoStreamStartupData = ((TraceDirectoryResult) result).getVideoStartupData()) != null) {
if ((videoStreamStartup = findStartupFromName(videoStreamStartupData, videoStream)) != null) {
if (videoStreamStartup.getValidationStartup().equals(ValidationStartup.NA)) {
videoStreamStartup.setValidationStartup(ValidationStartup.USER);
}
}
} else {
videoStreamStartupData = new VideoStreamStartupData();
}
if (videoStreamStartup == null) {
VideoEvent firstEvent = null;
videoStreamStartup = new VideoStreamStartup(videoStream.getManifest().getVideoName());
videoStreamStartup.setValidationStartup(ValidationStartup.ESTIMATED);
videoStreamStartupData.getStreams().add(videoStreamStartup);
if (!CollectionUtils.isEmpty(videoStream.getVideoActiveMap())) {
firstEvent = videoStream.getFirstActiveSegment();
} else {
firstEvent = videoStream.getFirstSegment();
if (firstEvent == null) {
// invalid stream, no first segment that is a normal segment
return null;
}
if (videoStream.getManifest().getRequestTime() == 0.0) {
// CSI there is no requestTime so make an estimate
videoStream.getManifest().setRequestTime(firstEvent.getRequest().getTimeStamp() - videoPrefs.getStallRecovery());
}
}
if (firstEvent.getPlayRequestedTime() == 0) {
firstEvent.setPlayRequestedTime(videoStream.getManifest().getRequestTime());
}
firstEvent.setStartupOffset(firstEvent.getDLLastTimestamp() + videoPrefs.getStallRecovery());
videoStreamStartup.setFirstSegID(firstEvent.getSegmentID());
videoStreamStartup.setManifestReqTime(firstEvent.getManifest().getRequestTime());
videoStreamStartup.setStartupTime(firstEvent.getStartupOffset());
if (videoStreamStartup.getUserEvent() == null) {
UserEvent userEvent = new UserEvent();
double pressTime = videoStream.getManifest().getRequestTime();
userEvent.setPressTime(pressTime);
userEvent.setReleaseTime(pressTime);
userEvent.setEventType(UserEventType.EVENT_UNKNOWN);
videoStreamStartup.setUserEvent(userEvent);
}
}
videoStream.getManifest().setDelay(videoStreamStartup.getStartupTime() - videoStreamStartup.getManifestReqTime());
videoStream.setVideoPlayBackTime(videoStreamStartup.getStartupTime());
videoStream.setVideoStreamStartup(videoStreamStartup);
((TraceDirectoryResult) result).setVideoStartupData(videoStreamStartupData);
}
return videoStreamStartup;
}
use of com.att.aro.core.peripheral.pojo.UserEvent in project VideoOptimzer by attdevsupport.
the class BurstCollectionAnalysisImplTest method analyzeTest.
@Test
public void analyzeTest() {
// Date date = new Date();
InetAddress iAdr = Mockito.mock(InetAddress.class);
InetAddress iAdr1 = Mockito.mock(InetAddress.class);
Mockito.when(iAdr.getAddress()).thenReturn(new byte[] { 89, 10, 1, 1 });
Mockito.when(iAdr1.getAddress()).thenReturn(new byte[] { 72, 12, 13, 1 });
Set<InetAddress> inetSet = new HashSet<InetAddress>();
inetSet.add(iAdr);
inetSet.add(iAdr1);
DomainNameSystem dns = Mockito.mock(DomainNameSystem.class);
Mockito.when(dns.getIpAddresses()).thenReturn(inetSet);
Mockito.when(dns.getDomainName()).thenReturn("www.att.com");
// UDP Packet Mock
UDPPacket udpPacket = Mockito.mock(UDPPacket.class);
Mockito.when(udpPacket.isDNSPacket()).thenReturn(true);
Mockito.when(udpPacket.getDns()).thenReturn(dns);
Mockito.when(udpPacket.getSourcePort()).thenReturn(83);
Mockito.when(udpPacket.getDestinationPort()).thenReturn(84);
Mockito.when(udpPacket.getDestinationIPAddress()).thenReturn(iAdr);
PacketInfo packetInfo1 = Mockito.mock(PacketInfo.class);
Mockito.when(packetInfo1.getPacket()).thenReturn(udpPacket);
Mockito.when(packetInfo1.getDir()).thenReturn(PacketDirection.UPLINK);
Mockito.when(packetInfo1.getPayloadLen()).thenReturn(30);
Mockito.when(packetInfo1.getLen()).thenReturn(10);
Mockito.when(packetInfo1.getAppName()).thenReturn("Test1");
Mockito.when(packetInfo1.getTcpFlagString()).thenReturn("TestString");
Mockito.when(packetInfo1.getTimeStamp()).thenReturn(500d);
InetAddress iAdr2 = Mockito.mock(InetAddress.class);
Mockito.when(iAdr2.getAddress()).thenReturn(new byte[] { 95, 10, 1, 1 });
TCPPacket tcpPacket = Mockito.mock(TCPPacket.class);
Mockito.when(tcpPacket.getSourcePort()).thenReturn(81);
Mockito.when(tcpPacket.getDestinationPort()).thenReturn(82);
Mockito.when(tcpPacket.getDestinationIPAddress()).thenReturn(iAdr2);
Mockito.when(tcpPacket.isSYN()).thenReturn(true);
Mockito.when(tcpPacket.isFIN()).thenReturn(true);
Mockito.when(tcpPacket.isRST()).thenReturn(true);
Mockito.when(tcpPacket.getTimeStamp()).thenReturn(1000d);
// Mockito.when(tcpPacket.getTimeStamp()).thenReturn((double)date.getTime()-10000);
PacketInfo packetInfo2 = Mockito.mock(PacketInfo.class);
Mockito.when(packetInfo2.getPacket()).thenReturn(tcpPacket);
Mockito.when(packetInfo2.getDir()).thenReturn(PacketDirection.UPLINK);
Mockito.when(packetInfo2.getTcpInfo()).thenReturn(TcpInfo.TCP_ESTABLISH);
Mockito.when(packetInfo2.getPayloadLen()).thenReturn(25);
Mockito.when(packetInfo2.getLen()).thenReturn(15);
Mockito.when(packetInfo2.getAppName()).thenReturn("Test2");
Mockito.when(packetInfo2.getTcpFlagString()).thenReturn("Test2String");
Mockito.when(packetInfo2.getTimeStamp()).thenReturn(10d);
TCPPacket tcpPacket2 = Mockito.mock(TCPPacket.class);
Mockito.when(tcpPacket2.getSourcePort()).thenReturn(95);
Mockito.when(tcpPacket2.getDestinationPort()).thenReturn(99);
Mockito.when(tcpPacket2.getDestinationIPAddress()).thenReturn(iAdr2);
Mockito.when(tcpPacket2.isSYN()).thenReturn(true);
Mockito.when(tcpPacket2.isFIN()).thenReturn(true);
Mockito.when(tcpPacket2.isRST()).thenReturn(false);
Mockito.when(tcpPacket2.getTimeStamp()).thenReturn(50d);
PacketInfo packetInfo3 = Mockito.mock(PacketInfo.class);
Mockito.when(packetInfo3.getPacket()).thenReturn(tcpPacket2);
Mockito.when(packetInfo3.getDir()).thenReturn(PacketDirection.DOWNLINK);
Mockito.when(packetInfo3.getTcpInfo()).thenReturn(TcpInfo.TCP_ACK_RECOVER);
Mockito.when(packetInfo3.getPayloadLen()).thenReturn(15);
Mockito.when(packetInfo3.getLen()).thenReturn(20);
Mockito.when(packetInfo3.getAppName()).thenReturn("Test3");
Mockito.when(packetInfo3.getTcpFlagString()).thenReturn("Test3String");
Mockito.when(packetInfo3.getTimeStamp()).thenReturn(700d);
PacketInfo packetInfo4 = Mockito.mock(PacketInfo.class);
Mockito.when(packetInfo4.getPacket()).thenReturn(tcpPacket2);
Mockito.when(packetInfo4.getDir()).thenReturn(PacketDirection.DOWNLINK);
Mockito.when(packetInfo4.getTcpInfo()).thenReturn(TcpInfo.TCP_ACK);
Mockito.when(packetInfo4.getTimeStamp()).thenReturn(90d);
Mockito.when(packetInfo4.getPayloadLen()).thenReturn(10);
PacketInfo packetInfo5 = Mockito.mock(PacketInfo.class);
Mockito.when(packetInfo5.getPacket()).thenReturn(tcpPacket2);
Mockito.when(packetInfo5.getDir()).thenReturn(PacketDirection.DOWNLINK);
Mockito.when(packetInfo5.getTcpInfo()).thenReturn(TcpInfo.TCP_DATA_RECOVER);
Mockito.when(packetInfo5.getTimeStamp()).thenReturn(750d);
Mockito.when(packetInfo5.getPayloadLen()).thenReturn(5);
List<PacketInfo> packetsList = new ArrayList<PacketInfo>();
// Adding UDP Packet to the list
packetsList.add(packetInfo1);
// Adding TCP Packet to the list
packetsList.add(packetInfo2);
packetsList.add(packetInfo3);
packetsList.add(packetInfo4);
packetsList.add(packetInfo5);
ProfileWiFi profile = Mockito.mock(ProfileWiFi.class);
Mockito.when(profile.getBurstTh()).thenReturn(50d);
Mockito.when(profile.getLongBurstTh()).thenReturn(40.0d);
Mockito.when(profile.getLargeBurstDuration()).thenReturn(150d);
Mockito.when(profile.getLargeBurstSize()).thenReturn(50);
Mockito.when(profile.getProfileType()).thenReturn(ProfileType.WIFI);
Mockito.when(profile.getWifiTailTime()).thenReturn(25.0d);
Mockito.when(profile.getWifiIdlePower()).thenReturn(50.0d);
Mockito.when(profile.getWifiTailTime()).thenReturn(75.0d);
Map<Integer, Integer> packetSizeToCountMap = new HashMap<Integer, Integer>();
packetSizeToCountMap.put(1001, 10);
packetSizeToCountMap.put(2002, 20);
packetSizeToCountMap.put(3003, 30);
RrcStateRange rrcStateRange1 = Mockito.mock(RrcStateRange.class);
Mockito.when(rrcStateRange1.getBeginTime()).thenReturn(500d);
Mockito.when(rrcStateRange1.getEndTime()).thenReturn(490d);
Mockito.when(rrcStateRange1.getState()).thenReturn(RRCState.TAIL_DCH);
RrcStateRange rrcStateRange2 = Mockito.mock(RrcStateRange.class);
Mockito.when(rrcStateRange2.getBeginTime()).thenReturn(8.30d);
Mockito.when(rrcStateRange2.getEndTime()).thenReturn(12.30d);
Mockito.when(rrcStateRange2.getState()).thenReturn(RRCState.PROMO_FACH_DCH);
RrcStateRange rrcStateRange3 = Mockito.mock(RrcStateRange.class);
Mockito.when(rrcStateRange3.getBeginTime()).thenReturn(0.0d);
Mockito.when(rrcStateRange3.getEndTime()).thenReturn(-2.0d);
Mockito.when(rrcStateRange3.getState()).thenReturn(RRCState.TAIL_DCH);
RrcStateRange rrcStateRange4 = Mockito.mock(RrcStateRange.class);
Mockito.when(rrcStateRange4.getBeginTime()).thenReturn(25d);
Mockito.when(rrcStateRange4.getEndTime()).thenReturn(75d);
Mockito.when(rrcStateRange4.getState()).thenReturn(RRCState.WIFI_TAIL);
RrcStateRange rrcStateRange5 = Mockito.mock(RrcStateRange.class);
Mockito.when(rrcStateRange5.getBeginTime()).thenReturn(55d);
Mockito.when(rrcStateRange5.getEndTime()).thenReturn(95d);
Mockito.when(rrcStateRange5.getState()).thenReturn(RRCState.PROMO_IDLE_DCH);
List<RrcStateRange> rrcstaterangelist = new ArrayList<RrcStateRange>();
rrcstaterangelist.add(rrcStateRange1);
rrcstaterangelist.add(rrcStateRange2);
rrcstaterangelist.add(rrcStateRange3);
rrcstaterangelist.add(rrcStateRange4);
rrcstaterangelist.add(rrcStateRange5);
UserEvent uEvent1 = Mockito.mock(UserEvent.class);
Mockito.when(uEvent1.getEventType()).thenReturn(UserEventType.SCREEN_LANDSCAPE);
Mockito.when(uEvent1.getPressTime()).thenReturn(503d);
Mockito.when(uEvent1.getReleaseTime()).thenReturn(6d);
UserEvent uEvent2 = Mockito.mock(UserEvent.class);
Mockito.when(uEvent2.getEventType()).thenReturn(UserEventType.SCREEN_PORTRAIT);
Mockito.when(uEvent2.getPressTime()).thenReturn(14d);
Mockito.when(uEvent2.getReleaseTime()).thenReturn(2000d);
UserEvent uEvent3 = Mockito.mock(UserEvent.class);
Mockito.when(uEvent3.getEventType()).thenReturn(UserEventType.KEY_RED);
Mockito.when(uEvent3.getPressTime()).thenReturn(497d);
Mockito.when(uEvent3.getReleaseTime()).thenReturn(499d);
UserEvent uEvent4 = Mockito.mock(UserEvent.class);
Mockito.when(uEvent4.getEventType()).thenReturn(UserEventType.EVENT_UNKNOWN);
Mockito.when(uEvent4.getPressTime()).thenReturn(25d);
Mockito.when(uEvent4.getReleaseTime()).thenReturn(4d);
UserEvent uEvent5 = Mockito.mock(UserEvent.class);
Mockito.when(uEvent5.getEventType()).thenReturn(UserEventType.KEY_SEARCH);
Mockito.when(uEvent5.getPressTime()).thenReturn(752d);
Mockito.when(uEvent5.getReleaseTime()).thenReturn(30000d);
List<UserEvent> uEventList = new ArrayList<UserEvent>();
uEventList.add(uEvent1);
uEventList.add(uEvent2);
uEventList.add(uEvent3);
uEventList.add(uEvent4);
uEventList.add(uEvent5);
CpuActivity cActivity1 = Mockito.mock(CpuActivity.class);
Mockito.when(cActivity1.getTimeStamp()).thenReturn(23000d);
Mockito.when(cActivity1.getTotalCpuUsage()).thenReturn(5000d);
CpuActivity cActivity2 = Mockito.mock(CpuActivity.class);
Mockito.when(cActivity2.getTimeStamp()).thenReturn(24000d);
Mockito.when(cActivity2.getTotalCpuUsage()).thenReturn(6000d);
CpuActivity cActivity3 = Mockito.mock(CpuActivity.class);
Mockito.when(cActivity3.getTimeStamp()).thenReturn(25000d);
Mockito.when(cActivity3.getTotalCpuUsage()).thenReturn(6000d);
List<CpuActivity> cpuActivityList = new ArrayList<CpuActivity>();
cpuActivityList.add(cActivity1);
cpuActivityList.add(cActivity2);
cpuActivityList.add(cActivity3);
Session aSession = Mockito.mock(Session.class);
List<Session> sessionList = new ArrayList<Session>();
sessionList.add(aSession);
BurstCollectionAnalysisData bcaData = aBurstCollectionAnalysis.analyze(packetsList, profile, packetSizeToCountMap, rrcstaterangelist, uEventList, cpuActivityList, sessionList);
assertEquals(2, bcaData.getBurstAnalysisInfo().size());
assertEquals(3, bcaData.getBurstCollection().size());
assertEquals(0, bcaData.getLongBurstCount());
assertEquals(0, (int) bcaData.getTotalEnergy());
}
use of com.att.aro.core.peripheral.pojo.UserEvent in project VideoOptimzer by attdevsupport.
the class UserEventSortingTest method compare.
@Test
public void compare() throws IOException {
List<UserEvent> userEvents = new ArrayList<UserEvent>();
userEvents.add(new UserEvent(UserEventType.SCREEN_PORTRAIT, 1.1, 1.6));
userEvents.add(new UserEvent(UserEventType.SCREEN_LANDSCAPE, 1.2, 1.7));
userEvents.add(new UserEvent(UserEventType.SCREEN_LANDSCAPE, 1.0, 1.5));
userEvents.add(new UserEvent(UserEventType.KEY_POWER, 0.0, 1.5));
userEvents.add(new UserEvent(UserEventType.KEY_RED, 1.411421287928E2, 1.5));
userEvents.add(new UserEvent(UserEventType.KEY_RED, 1.411421287928E9, 1.5));
userEvents.add(new UserEvent(UserEventType.SCREEN_TOUCH, 1.41142128792812E12, 1.5));
Collections.sort(userEvents, new UserEventSorting());
assertEquals(1.0, userEvents.get(1).getPressTime(), 0);
assertEquals(1.1, userEvents.get(2).getPressTime(), 0);
assertEquals(1.2, userEvents.get(3).getPressTime(), 0);
}
Aggregations