Changeset 554


Ignore:
Timestamp:
08/16/12 17:08:27 (12 years ago)
Author:
sherbold
Message:
  • adapted PHP plugin event structure to new event structure
Location:
trunk/quest-ui-core/src/main/java/de/ugoe/cs/quest/plugin/php
Files:
2 added
1 deleted
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/quest-ui-core/src/main/java/de/ugoe/cs/quest/plugin/php/WeblogParser.java

    r488 r554  
    1616import java.util.Set; 
    1717 
    18 import de.ugoe.cs.quest.plugin.php.eventcore.WebEvent; 
     18import de.ugoe.cs.quest.eventcore.Event; 
     19import de.ugoe.cs.quest.eventcore.IEventTarget; 
     20import de.ugoe.cs.quest.eventcore.IEventType; 
     21import de.ugoe.cs.quest.plugin.php.eventcore.PHPEventTarget; 
     22import de.ugoe.cs.quest.plugin.php.eventcore.PHPEventType; 
     23import de.ugoe.cs.quest.plugin.php.eventcore.WebRequest; 
    1924import de.ugoe.cs.util.FileTools; 
    2025import de.ugoe.cs.util.console.Console; 
     
    6772         * </p> 
    6873         */ 
    69         private List<List<WebEvent>> sequences; 
     74        private List<List<Event>> sequences; 
    7075 
    7176        /** 
     
    9095         * </p> 
    9196         */ 
    92         private List<Collection<List<WebEvent>>> sequencesFrequentUsers; 
     97        private List<Collection<List<Event>>> sequencesFrequentUsers; 
    9398 
    9499        /** 
     
    145150         * @return generated event sequences 
    146151         */ 
    147         public Collection<List<WebEvent>> getSequences() { 
     152        public Collection<List<Event>> getSequences() { 
    148153                return sequences; 
    149154        } 
     
    232237         * @return list of the sequences of all frequent users 
    233238         */ 
    234         public List<Collection<List<WebEvent>>> getFrequentUserSequences() { 
     239        public List<Collection<List<Event>>> getFrequentUserSequences() { 
    235240                return sequencesFrequentUsers; 
    236241        } 
     
    255260 
    256261                Map<String, List<Integer>> cookieSessionMap = new HashMap<String, List<Integer>>(); 
     262                Map<String, Long> cookieTimestampMap = new HashMap<String, Long>(); 
     263                 
    257264                int lastId = -1; 
    258265 
     
    261268                loadRobotRegex(); 
    262269 
    263                 sequences = new ArrayList<List<WebEvent>>(); 
     270                sequences = new ArrayList<List<Event>>(); 
    264271                users = new ArrayList<String>(); 
    265272 
     
    298305                                        List<String> getVars = extractGetVarsFromUri(uri); 
    299306                                         
    300                                         WebEvent event = new WebEvent(url, path, timestamp, 
    301                                                         postedVars, getVars); 
     307                                        IEventType type = new PHPEventType(path, postedVars, getVars); 
     308                                        IEventTarget target = new PHPEventTarget(path); 
     309                                        Event event = new Event(type, target); 
     310                                        event.addReplayable(new WebRequest(url, path, postedVars, getVars)); 
    302311 
    303312                                        // find session and add event 
     
    308317                                                sessionIds.add(++lastId); 
    309318                                                cookieSessionMap.put(cookie, sessionIds); 
    310                                                 sequences.add(new LinkedList<WebEvent>()); 
     319                                                sequences.add(new LinkedList<Event>()); 
    311320                                                users.add(cookie); 
    312321                                        } 
    313322                                        Integer lastSessionIndex = sessionIds 
    314323                                                        .get(sessionIds.size() - 1); 
    315                                         List<WebEvent> lastSession = sequences 
     324                                        List<Event> lastSession = sequences 
    316325                                                        .get(lastSessionIndex); 
    317326                                        long lastEventTime = timestamp; 
    318327                                        if (!lastSession.isEmpty()) { 
    319                                                 lastEventTime = lastSession.get(lastSession.size() - 1) 
    320                                                                 .getTimestamp(); 
     328                                                lastEventTime = cookieTimestampMap.get(cookie); 
    321329                                        } 
    322330                                        if (timestamp - lastEventTime > timeout) { 
    323331                                                sessionIds.add(++lastId); 
    324                                                 List<WebEvent> newSession = new LinkedList<WebEvent>(); 
     332                                                List<Event> newSession = new LinkedList<Event>(); 
    325333                                                newSession.add(event); 
    326334                                                sequences.add(newSession); 
     
    329337                                                lastSession.add(event); 
    330338                                        } 
     339                                        cookieTimestampMap.put(cookie, timestamp); 
    331340                                } catch (URISyntaxException e) { 
    332341                                        Console.traceln("Ignored line " + lineCounter + ": " 
     
    358367        private void generateFrequentUserSequences(Set<String> uniqueUsers) { 
    359368                frequentUsers = new ArrayList<String>(); 
    360                 sequencesFrequentUsers = new ArrayList<Collection<List<WebEvent>>>(); 
     369                sequencesFrequentUsers = new ArrayList<Collection<List<Event>>>(); 
    361370                for (String user : uniqueUsers) { 
    362371                        List<String> tmp = new ArrayList<String>(); 
     
    367376                        if (size >= frequentUsersThreshold) { 
    368377                                frequentUsers.add(user); 
    369                                 Collection<List<WebEvent>> sequencesUser = new ArrayList<List<WebEvent>>(); 
     378                                Collection<List<Event>> sequencesUser = new ArrayList<List<Event>>(); 
    370379                                for (int i = 0; i < sequences.size(); i++) { 
    371380                                        if (users.get(i).equals(user)) { 
  • trunk/quest-ui-core/src/main/java/de/ugoe/cs/quest/plugin/php/commands/CMDloadWebSequences.java

    r434 r554  
    99 
    1010import de.ugoe.cs.quest.CommandHelpers; 
     11import de.ugoe.cs.quest.eventcore.Event; 
    1112import de.ugoe.cs.quest.plugin.php.WeblogParser; 
    12 import de.ugoe.cs.quest.plugin.php.eventcore.WebEvent; 
    1313import de.ugoe.cs.quest.ui.GlobalDataContainer; 
    1414import de.ugoe.cs.util.console.Command; 
     
    9393                if (generateFrequentUsers) { 
    9494                        List<String> frequentUserIDs = parser.getFrequentUsers(); 
    95                         List<Collection<List<WebEvent>>> frequentUserSessions = parser 
     95                        List<Collection<List<Event>>> frequentUserSessions = parser 
    9696                                        .getFrequentUserSequences(); 
    9797                        for (int i = 0; i < frequentUserIDs.size(); i++) { 
  • trunk/quest-ui-core/src/main/java/de/ugoe/cs/quest/plugin/php/eventcore/WebRequest.java

    r434 r554  
     1 
    12package de.ugoe.cs.quest.plugin.php.eventcore; 
    23 
     
    89/** 
    910 * <p> 
    10  * Contains all information related to a web request, i.e., the path, the POST 
    11  * variables and the GET variables. The generated replay are for the command 
    12  * line tool {@code curl}. The requests do not contain correct values for the 
    13  * POST and GET request. Instead, only the parameters that are part of the 
    14  * requests are added and the values of the parameters are 
    15  * DATA_$PARAMNAME$_DATA, where $PARAMNAME$ is the upper case string of the 
    16  * parameter name. This allows test data generators to insert concrete values, 
    17  * as EventBench does not include a test data generator for web software. 
     11 * Contains all information related to a web request, i.e., the path, the POST variables and the GET 
     12 * variables. The generated replay are for the command line tool {@code curl}. The requests do not 
     13 * contain correct values for the POST and GET request. Instead, only the parameters that are part 
     14 * of the requests are added and the values of the parameters are DATA_$PARAMNAME$_DATA, where 
     15 * $PARAMNAME$ is the upper case string of the parameter name. This allows test data generators to 
     16 * insert concrete values, as EventBench does not include a test data generator for web software. 
    1817 * </p> 
    1918 *  
     
    2322public class WebRequest implements IReplayable { 
    2423 
    25         /** 
    26         * <p> 
    27         * Id for object serialization. 
    28         * </p> 
    29         */ 
    30         private static final long serialVersionUID = 1L; 
     24    /** 
     25    * <p> 
     26    * Id for object serialization. 
     27    * </p> 
     28    */ 
     29    private static final long serialVersionUID = 1L; 
    3130 
    32         /** 
    33         * <p> 
    34         * POST variables of the web request. 
    35         * </p> 
    36         */ 
    37         List<String> postVars; 
     31    /** 
     32    * <p> 
     33    * POST variables of the web request. 
     34    * </p> 
     35    */ 
     36    List<String> postVars; 
    3837 
    39         /** 
    40         * <p> 
    41         * GET variables of the web request. 
    42         * </p> 
    43         */ 
    44         List<String> getVars; 
     38    /** 
     39    * <p> 
     40    * GET variables of the web request. 
     41    * </p> 
     42    */ 
     43    List<String> getVars; 
    4544 
    46         /** 
    47         * <p> 
    48         * URI of the web request. 
    49         * </p> 
    50         */ 
    51         String targetUri; 
     45    /** 
     46    * <p> 
     47    * URI of the web request. 
     48    * </p> 
     49    */ 
     50    String targetUri; 
    5251 
    53         /** 
    54         * <p> 
    55         * URL of the server. 
    56         * </p> 
    57         */ 
    58         String serverUrl; 
     52    /** 
     53    * <p> 
     54    * URL of the server. 
     55    * </p> 
     56    */ 
     57    String serverUrl; 
    5958 
    60         /** 
    61          * <p> 
    62          * Constructor. Creates a new WebRequest. 
    63          * </p> 
    64          *  
    65          * @param uri 
    66          *            URI of the request 
    67          * @param postVars 
    68          *            POST variables of the request 
    69          * @param getVars 
    70          *            GET variables of the request 
    71          */ 
    72         public WebRequest(String url, String uri, List<String> postVars, 
    73                         List<String> getVars) { 
    74                 serverUrl = url; 
    75                 targetUri = uri; 
    76                 this.postVars = new ArrayList<String>(postVars); // defensive copy 
    77                 this.getVars = new ArrayList<String>(getVars); 
    78         } 
     59    /** 
     60     * <p> 
     61     * Constructor. Creates a new WebRequest. 
     62     * </p> 
     63     *  
     64     * @param uri 
     65     *            URI of the request 
     66     * @param postVars 
     67     *            POST variables of the request 
     68     * @param getVars 
     69     *            GET variables of the request 
     70     */ 
     71    public WebRequest(String url, String uri, List<String> postVars, List<String> getVars) { 
     72        serverUrl = url; 
     73        targetUri = uri; 
     74        this.postVars = new ArrayList<String>(postVars); // defensive copy 
     75        this.getVars = new ArrayList<String>(getVars); 
     76    } 
    7977 
    80         /* 
    81         * (non-Javadoc) 
    82         *  
    83         * @see de.ugoe.cs.quest.eventcore.IReplayable#getReplay() 
    84         */ 
    85         @Override 
    86         public String getReplay() { 
    87                 StringBuilder builder = new StringBuilder(); 
    88                 builder.append("curl"); 
    89                 if (!postVars.isEmpty()) { 
    90                         boolean isFirstPost = true; 
    91                         for (String postVar : postVars) { 
    92                                 if (isFirstPost) { 
    93                                         builder.append(" --data \""); 
    94                                         isFirstPost = false; 
    95                                 } else { 
    96                                         builder.append('&'); 
    97                                 } 
    98                                 builder.append(postVar + "=DATA_" + postVar.toUpperCase() 
    99                                                 + "_DATA"); 
    100                         } 
    101                         builder.append('\"'); 
    102                 } 
    103                 builder.append(' '); 
    104                 if (serverUrl != null) { 
    105                         builder.append(serverUrl); 
    106                 } 
    107                 builder.append(targetUri); 
    108                 if (!getVars.isEmpty()) { 
    109                         boolean isFirstGet = true; 
    110                         for (String getVar : getVars) { 
    111                                 if (isFirstGet) { 
    112                                         builder.append('?'); 
    113                                         isFirstGet = false; 
    114                                 } else { 
    115                                         builder.append('&'); 
    116                                 } 
    117                                 builder.append(getVar + "=DATA_" + getVar.toUpperCase() 
    118                                                 + "_DATA"); 
    119                         } 
    120                 } 
    121                 return builder.toString(); 
    122         } 
     78    /* 
     79    * (non-Javadoc) 
     80    *  
     81    * @see de.ugoe.cs.quest.eventcore.IReplayable#getReplay() 
     82    */ 
     83    @Override 
     84    public String getReplay() { 
     85        StringBuilder builder = new StringBuilder(); 
     86        builder.append("curl"); 
     87        if (!postVars.isEmpty()) { 
     88            boolean isFirstPost = true; 
     89            for (String postVar : postVars) { 
     90                if (isFirstPost) { 
     91                    builder.append(" --data \""); 
     92                    isFirstPost = false; 
     93                } 
     94                else { 
     95                    builder.append('&'); 
     96                } 
     97                builder.append(postVar + "=DATA_" + postVar.toUpperCase() + "_DATA"); 
     98            } 
     99            builder.append('\"'); 
     100        } 
     101        builder.append(' '); 
     102        if (serverUrl != null) { 
     103            builder.append(serverUrl); 
     104        } 
     105        builder.append(targetUri); 
     106        if (!getVars.isEmpty()) { 
     107            boolean isFirstGet = true; 
     108            for (String getVar : getVars) { 
     109                if (isFirstGet) { 
     110                    builder.append('?'); 
     111                    isFirstGet = false; 
     112                } 
     113                else { 
     114                    builder.append('&'); 
     115                } 
     116                builder.append(getVar + "=DATA_" + getVar.toUpperCase() + "_DATA"); 
     117            } 
     118        } 
     119        return builder.toString(); 
     120    } 
    123121 
    124         /* 
    125          * (non-Javadoc) 
    126          *  
    127          * @see de.ugoe.cs.quest.eventcore.IReplayable#getTarget() 
    128          */ 
    129         @Override 
    130         public String getTarget() { 
    131                 return targetUri; 
    132         } 
     122    /** 
     123     * <p> 
     124     * Two {@link WebRequest}s are equal, if their {@link #targetUri}, {@link #postVars}, and 
     125     * {@link #getVars} are equal. 
     126     * </p> 
     127     *  
     128     * @see java.lang.Object#equals(java.lang.Object) 
     129     */ 
     130    @Override 
     131    public boolean equals(Object other) { 
     132        if (this == other) { 
     133            return true; 
     134        } 
     135        if (other instanceof WebRequest) { 
     136            return targetUri.equals(((WebRequest) other).targetUri) && 
     137                postVars.equals(((WebRequest) other).postVars) && 
     138                getVars.equals(((WebRequest) other).getVars); 
     139        } 
     140        return false; 
     141    } 
    133142 
    134         /** 
    135          * <p> 
    136          * Two {@link WebRequest}s are equal, if their {@link #targetUri}, 
    137          * {@link #postVars}, and {@link #getVars} are equal. 
    138          * </p> 
    139          *  
    140          * @see java.lang.Object#equals(java.lang.Object) 
    141          */ 
    142         @Override 
    143         public boolean equals(Object other) { 
    144                 if (this == other) { 
    145                         return true; 
    146                 } 
    147                 if (other instanceof WebRequest) { 
    148                         return targetUri.equals(((WebRequest) other).targetUri) 
    149                                         && postVars.equals(((WebRequest) other).postVars) 
    150                                         && getVars.equals(((WebRequest) other).getVars); 
    151                 } 
    152                 return false; 
    153         } 
     143    /* 
     144     * (non-Javadoc) 
     145     *  
     146     * @see java.lang.Object#hashCode() 
     147     */ 
     148    @Override 
     149    public int hashCode() { 
     150        int multiplier = 17; 
     151        int hash = 42; 
    154152 
    155         /* 
    156          * (non-Javadoc) 
    157          *  
    158          * @see java.lang.Object#hashCode() 
    159          */ 
    160         @Override 
    161         public int hashCode() { 
    162                 int multiplier = 17; 
    163                 int hash = 42; 
     153        hash = multiplier * hash + targetUri.hashCode(); 
     154        hash = multiplier * hash + postVars.hashCode(); 
     155        hash = multiplier * hash + getVars.hashCode(); 
    164156 
    165                 hash = multiplier * hash + targetUri.hashCode(); 
    166                 hash = multiplier * hash + postVars.hashCode(); 
    167                 hash = multiplier * hash + getVars.hashCode(); 
    168  
    169                 return hash; 
    170         } 
     157        return hash; 
     158    } 
    171159 
    172160} 
Note: See TracChangeset for help on using the changeset viewer.