use of com.att.aro.core.packetanalysis.pojo.Session in project VideoOptimzer by attdevsupport.
the class UnsecureSSLVersionImplTest method getPacketAnalyzerResult.
private PacketAnalyzerResult getPacketAnalyzerResult(Set<String> unsecureSSLVersions) {
Session session = mock(Session.class);
PacketInfo info = mock(PacketInfo.class);
TCPPacket tcpPacket = mock(TCPPacket.class);
InetAddress address = mock(InetAddress.class);
String ipAddress = "127.0.0.1";
int port = 8080;
List<Session> sessions = new ArrayList<>();
sessions.add(session);
List<PacketInfo> packetInfos = new LinkedList<>();
packetInfos.add(info);
packetAnalyzerResult.setSessionlist(sessions);
when(session.getTcpPackets()).thenReturn(packetInfos);
when(info.getPacket()).thenReturn(tcpPacket);
when(tcpPacket.getUnsecureSSLVersions()).thenReturn(unsecureSSLVersions);
when(address.getHostAddress()).thenReturn(ipAddress);
when(session.getRemoteIP()).thenReturn(address);
when(session.getRemotePort()).thenReturn(port);
return packetAnalyzerResult;
}
use of com.att.aro.core.packetanalysis.pojo.Session in project VideoOptimzer by attdevsupport.
the class AROController method initializeFilter.
/**
* <pre>
* Create an AnalysisFilter
* Creates default maps of domainNames and applications
* Combined with the supplied TimeRange or a default TimeRange to create the AnalysisFilter
*
* This filter will be stored in the current PacketAnalyzerResult
*
* @param timeRangeParam is optional
*/
private void initializeFilter(TimeRange... timeRangeParam) {
Collection<String> appNames = theModel.getAnalyzerResult().getTraceresult().getAllAppNames();
Map<String, Set<InetAddress>> map = theModel.getAnalyzerResult().getTraceresult().getAppIps();
Map<InetAddress, String> domainNames = new HashMap<InetAddress, String>();
for (Session tcpSession : theModel.getAnalyzerResult().getSessionlist()) {
if (!domainNames.containsKey(tcpSession.getRemoteIP())) {
domainNames.put(tcpSession.getRemoteIP(), tcpSession.getDomainName());
}
}
HashMap<String, ApplicationSelection> applications = new HashMap<String, ApplicationSelection>(appNames.size());
ApplicationSelection appSelection;
for (String app : appNames) {
appSelection = new ApplicationSelection(app, map.get(app));
appSelection.setDomainNames(domainNames);
for (IPAddressSelection ipAddressSelection : appSelection.getIPAddressSelections()) {
ipAddressSelection.setDomainName(domainNames.get(ipAddressSelection.getIpAddress()));
}
applications.put(app, appSelection);
}
TimeRange timeRange = timeRangeParam != null && timeRangeParam.length == 1 && timeRangeParam[0] != null ? timeRangeParam[0] : null;
if (timeRange == null) {
timeRange = new TimeRange(0.0, theModel.getAnalyzerResult().getTraceresult().getTraceDuration());
}
AnalysisFilter initFilter = new AnalysisFilter(applications, timeRange, domainNames);
currentTraceInitialAnalyzerResult = theModel.getAnalyzerResult();
currentTraceInitialAnalyzerResult.setFilter(initFilter);
}
use of com.att.aro.core.packetanalysis.pojo.Session in project VideoOptimzer by attdevsupport.
the class DuplicateContentTablePanel method getViewBtn.
/**
* Returns the view button.
*/
private JButton getViewBtn() {
if (viewBtn == null) {
viewBtn = new JButton(ResourceBundleHelper.getMessageString("button.View"));
viewBtn.setEnabled(false);
viewBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
try {
CacheEntry cEntry = duplicateContentTable.getSelectedItem();
if (cEntry != null) {
if (!cEntry.getResponse().getContentType().contains("video")) {
if (cEntry.getResponse().getRawSize() < 5242880) {
ContentViewer.getInstance().viewContent(getSession(cEntry), cEntry.getResponse());
} else {
MessageDialogFactory.getInstance().showErrorDialog(new Window(new Frame()), ResourceBundleHelper.getMessageString("Error.fileSize"));
}
}
}
} catch (Exception ioExp) {
MessageDialogFactory.showMessageDialog(DuplicateContentTablePanel.this.getTopLevelAncestor(), ioExp);
}
}
private Session getSession(CacheEntry cEntry) {
Session session = cEntry.getRequest().getSession();
if (session == null) {
session = cEntry.getSession();
}
return session;
}
});
}
return viewBtn;
}
use of com.att.aro.core.packetanalysis.pojo.Session in project VideoOptimzer by attdevsupport.
the class OverviewTabTableSplitPane method getExpandedDomainContentTable.
/**
* Initializes and returns the RequestResponseTable.
*/
public JTable getExpandedDomainContentTable() {
if (expandedDataTable == null) {
expandedDataTable = new DataTable<Session>(expandedDomainModel);
expandedDataTable.setName(ResourceBundleHelper.getMessageString("overview.domain.tcp.sessions.tableName"));
expandedDataTable.setAutoCreateRowSorter(true);
expandedDataTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
expandedDataTable.setGridColor(Color.LIGHT_GRAY);
expandedDataTable.addMouseListener(this);
TableRowSorter<TableModel> sorter = new TableRowSorter<>(expandedDomainModel);
expandedDataTable.setRowSorter(sorter);
sorter.setComparator(1, Util.getDomainSorter());
DataTablePopupMenu popupMenu = (DataTablePopupMenu) expandedDataTable.getPopup();
popupMenu.initialize();
}
return expandedDataTable;
}
use of com.att.aro.core.packetanalysis.pojo.Session in project VideoOptimzer by attdevsupport.
the class VideoTrafficInferencer method inferVideoData.
public StreamingVideoData inferVideoData(AbstractTraceResult result, List<Session> sessionlist, String manifestFilePath) {
videoRequestMap = new HashSet<>();
nonSegmentRequestMap = new HashMap<>();
possibleAudioRequestMap = new TreeMap<>();
streamingVideoData = new StreamingVideoData(result.getTraceDirectory());
boolean flag = false;
File manifestFile;
if (result.getTraceDirectory().equals(manifestFilePath)) {
CSIManifestAndState csiState = csiDataHelper.readData(manifestFilePath + System.getProperty("file.separator") + "CSI");
if (csiState.getAnalysisState().equals("Fail")) {
return streamingVideoData;
}
manifestFile = csiDataHelper.generateManifestPath(manifestFilePath, csiState.getManifestFileName());
} else {
flag = true;
manifestFile = new File(manifestFilePath);
}
byte[] fileContent;
VideoManifest videoManifest = new VideoManifest();
List<Track> tracks = new ArrayList<>();
String fileExtName = FilenameUtils.getExtension(manifestFile.getPath());
requestMap = generateRequestMap(sessionlist);
if (manifestFile.exists() && fileExtName != null) {
switch(fileExtName) {
case "json":
ObjectMapper mapper = new ObjectMapper();
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
try {
videoManifest = mapper.readValue(manifestFile, VideoManifest.class);
} catch (IOException ioe) {
LOGGER.error("Exception while parsing Manifest JSON for CSI", ioe);
}
break;
case "mpd":
try {
fileContent = Files.readAllBytes(manifestFile.toPath());
ManifestBuilderDASH manifestBuilderDASH = new ManifestBuilderDASH();
manifestBuilderDASH.create(requestMap.values().iterator().next(), fileContent, "blank");
for (ChildManifest cManifest : manifestBuilderDASH.getManifestCollection().getSegmentChildManifestListInOrder()) {
Track sTrack = new Track();
List<Integer> segmentSizes = new ArrayList<Integer>();
List<Double> segmentDurations = new ArrayList<Double>();
sTrack.setMediaType(cManifest.isVideo() ? MediaType.VIDEO : MediaType.AUDIO);
sTrack.setMediaBandwidth((float) cManifest.getBandwidth());
cManifest.getSegmentInfoTrie().values().forEach((segment) -> segmentSizes.add(segment.getSize()));
cManifest.getSegmentInfoTrie().values().forEach((segment) -> segmentDurations.add(segment.getDuration()));
sTrack.setSegmentSizes(segmentSizes);
sTrack.setSegmentDurations(segmentDurations);
tracks.add(sTrack);
}
} catch (IOException ioe) {
LOGGER.error("Exception while parsing MPD for CSI", ioe);
}
videoManifest.setTracks(tracks);
case "m3u8":
try {
videoManifest = hlsManifestParseImpl.getManifest(videoManifest, manifestFile);
} catch (Exception e) {
LOGGER.error(e.getMessage());
}
break;
default:
break;
}
}
List<Segment> candidateList = prepareCandidates(requestMap, videoManifest);
Map<Integer, List<Segment>> edgeDistanceMap = calculateDistancesAndPopulateAdjacencyList(candidateList, requestMap);
TreeMap<Integer, List<Integer>> lastNodes = findShortestPath(candidateList, edgeDistanceMap);
if (!lastNodes.isEmpty()) {
VideoStream videoStream = new VideoStream();
videoStream.setManifest(createManifest(FilenameUtils.getBaseName(manifestFile.getPath()), ManifestType.MASTER, ContentType.MUXED));
streamingVideoData.addVideoStream(firstRequestTimeStamp, videoStream);
List<Segment> solution = getLikelySequences(candidateList, edgeDistanceMap, lastNodes);
Manifest manifest;
if (!solution.isEmpty()) {
for (Segment segment : solution) {
manifest = createManifest(FilenameUtils.getBaseName(manifestFile.getPath()), ManifestType.CHILD, ContentType.VIDEO);
ChildManifest childManifest = new ChildManifest();
childManifest.setManifest(manifest);
VideoEvent videoEvent = new VideoEvent(getDefaultThumbnail(), manifest, segment, requestMap.get(segment.getRequestKey()));
videoRequestMap.add(requestMap.get(segment.getRequestKey()));
videoEvent.setChildManifest(childManifest);
videoStream.addVideoEvent(videoEvent);
}
int segmentIndex = 0;
Track audioTrack;
if ((audioTrack = videoManifest.getTracks().stream().filter(track -> (track.getMediaType()).equals(MediaType.AUDIO)).findFirst().get()) != null) {
for (HttpRequestResponseInfo rrInfo : possibleAudioRequestMap.values()) {
if (!videoRequestMap.contains(rrInfo) && rrInfo.getTime() > videoStream.getFirstSegment().getDLTime()) {
Segment audioSegment = new Segment(videoManifest, videoManifest.getAudioTrack(), ++segmentIndex, audioTrack.getSegmentSizes().get(segmentIndex - 1), rrInfo.getKey(), rrInfo.getRequestCounterCSI(), -1);
manifest = createManifest(FilenameUtils.getBaseName(manifestFile.getPath()), ManifestType.CHILD, ContentType.AUDIO);
ChildManifest childManifest = new ChildManifest();
childManifest.setManifest(manifest);
VideoEvent videoEvent = new VideoEvent(getDefaultThumbnail(), manifest, audioSegment, rrInfo);
videoEvent.setChildManifest(childManifest);
videoStream.addVideoEvent(videoEvent);
}
}
}
}
}
if (flag) {
saveCSIManifestAndState(manifestFile.toString());
}
videoSegmentAnalyzer.process(result, streamingVideoData);
return streamingVideoData;
}
Aggregations