You are viewing a plain text version of this content. The canonical link for it is here.
Posted to olio-commits@incubator.apache.org by sh...@apache.org on 2009/06/12 18:20:52 UTC
svn commit: r784223 -
/incubator/olio/workload/php/trunk/src/org/apache/olio/workload/driver/UIDriver.java
Author: shanti
Date: Fri Jun 12 18:20:52 2009
New Revision: 784223
URL: http://svn.apache.org/viewvc?rev=784223&view=rev
Log:
Fix for OLIO-90. We retrieve statics with an 'if-modified-since' header when
simulating browser caching behaviour.
Modified:
incubator/olio/workload/php/trunk/src/org/apache/olio/workload/driver/UIDriver.java
Modified: incubator/olio/workload/php/trunk/src/org/apache/olio/workload/driver/UIDriver.java
URL: http://svn.apache.org/viewvc/incubator/olio/workload/php/trunk/src/org/apache/olio/workload/driver/UIDriver.java?rev=784223&r1=784222&r2=784223&view=diff
==============================================================================
--- incubator/olio/workload/php/trunk/src/org/apache/olio/workload/driver/UIDriver.java (original)
+++ incubator/olio/workload/php/trunk/src/org/apache/olio/workload/driver/UIDriver.java Fri Jun 12 18:20:52 2009
@@ -232,6 +232,7 @@
private HashSet<String> cachedURLs = new HashSet<String>();
private LinkedHashMap<String, String> loginHeaders =
new LinkedHashMap<String, String>();
+ private LinkedHashMap<String, String> cachedHeaders;
private UIDriverMetrics driverMetrics;
private long imgBytes = 0;
private int imagesLoaded = 0;
@@ -317,6 +318,10 @@
loginHeaders.put("Accept", "text/xml.application/xml,application/" +
"xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;" +
"q=0.5");
+
+ // We don't want the rest of the loginheaders in cachedHeaders
+ cachedHeaders = (LinkedHashMap)(loginHeaders.clone());
+
loginHeaders.put("Accept-Language", "en-us,en;q=0.5");
loginHeaders.put("Accept-Encoding", "gzip,deflate");
loginHeaders.put("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
@@ -325,7 +330,11 @@
loginHeaders.put("Referer", homepageURL);
isLoggedOn = false;
- isCached = cached();
+
+ // Create headers for if-modified-since
+ String ifmod = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z").format(BASE_DATE);
+ cachedHeaders.put("If-Modified-Since", ifmod);
+ isCached= cached();
}
@BenchmarkOperation (
@@ -345,12 +354,15 @@
throw new IOException("Received empty response");
Set<String> images = parseImages(responseBuffer);
+ /*****
if (!isCached) {
-
+ ****/
// Fetch the CSS/JS files
loadStatics(homepageStatics);
+ /****
}
+ ***/
loadImages(images);
selectedEvent = RandomUtil.randomEvent(random, responseBuffer);
logger.finer("Images loaded: " + imagesLoaded);
@@ -655,6 +667,11 @@
return urlSet;
}
+ /*
+ * We assume that the application has set an expiry far into the future.
+ * As such the browser would not re-fetch these images within the same
+ * session.
+ */
private void loadImages(Set<String> images) throws IOException {
if (images != null)
for (String image : images)
@@ -686,15 +703,22 @@
}
private void loadStatics(String[] urls) throws IOException {
-
+ /**
if (!isCached)
- for (String url : urls)
- if (cachedURLs.add(url)) {
- logger.finer("Loading URL " + url);
- http.readURL(url);
- } else {
+ **/
+ for (String url : urls) {
+ // If we are simulating browser caching, send if-modified-since header
+ // Don't bother checking return code as we really don't want to fetch page
+ if (isCached)
+ http.readURL(url, cachedHeaders);
+ else {
+ if (cachedURLs.add(url)) {
+ logger.finer("Loading URL " + url);
+ http.readURL(url);
+ } else
logger.finer("URL already cached: Not loading " + url);
- }
+ }
+ }
}
public DateFormat getDateFormat() {