norikra 0.1.3-java → 0.1.4-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.ruby-version +1 -1
- data/README.md +11 -123
- data/lib/norikra/cli.rb +3 -1
- data/lib/norikra/engine.rb +1 -0
- data/lib/norikra/rpc/handler.rb +6 -0
- data/lib/norikra/server.rb +50 -28
- data/lib/norikra/target.rb +6 -1
- data/lib/norikra/version.rb +1 -1
- data/lib/norikra/webui/handler.rb +8 -1
- data/norikra.gemspec +2 -2
- data/views/base.erb +1 -1
- data/views/index.erb +6 -5
- metadata +11 -45
    
        checksums.yaml
    ADDED
    
    | @@ -0,0 +1,7 @@ | |
| 1 | 
            +
            ---
         | 
| 2 | 
            +
            SHA1:
         | 
| 3 | 
            +
              metadata.gz: 6d5ba6d34ed7bba46947b8434b0ac32b8cb7ba2d
         | 
| 4 | 
            +
              data.tar.gz: 2c6a5434cfc175aab9de2f89d3ab10198a75a06f
         | 
| 5 | 
            +
            SHA512:
         | 
| 6 | 
            +
              metadata.gz: 48a696a0f5611dc7657c82e1e119a10355da055eadfd4417b0456508a345ce4a18bc8617bd4aa46435cf49c85c7e0863ef42e01747923de89a0695e9ea7a86db
         | 
| 7 | 
            +
              data.tar.gz: 9b04d5197dd10a38c6d66dd09ae580509f2469c1d6727f774e203e61400796accc5c3de164df2262b0d0521959c49bb80bd8241648e339f234d75881b8994a71
         | 
    
        data/.ruby-version
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            jruby-1.7. | 
| 1 | 
            +
            jruby-1.7.11
         | 
    
        data/README.md
    CHANGED
    
    | @@ -24,35 +24,9 @@ For JRuby installation, you can use `rbenv`, `rvm` and `xbuild`, or install JRub | |
| 24 24 | 
             
            * rbenv: https://github.com/sstephenson/rbenv/
         | 
| 25 25 | 
             
            * xbuild: https://github.com/tagomoris/xbuild
         | 
| 26 26 |  | 
| 27 | 
            -
            ###  | 
| 27 | 
            +
            ### Install and launch
         | 
| 28 28 |  | 
| 29 | 
            -
             | 
| 30 | 
            -
             | 
| 31 | 
            -
                norikra start
         | 
| 32 | 
            -
             | 
| 33 | 
            -
            Norikra server doesn't save targets/queries in default.
         | 
| 34 | 
            -
            Specify `--stats STATS_FILE_PATH` option to save these runtime configuration automatically.
         | 
| 35 | 
            -
             | 
| 36 | 
            -
                norikra start --stats /path/to/data/norikra.stats.json
         | 
| 37 | 
            -
             | 
| 38 | 
            -
            JVM options like `-Xmx` are available:
         | 
| 39 | 
            -
             | 
| 40 | 
            -
                norikra start -Xmx2g
         | 
| 41 | 
            -
             | 
| 42 | 
            -
            To daemonize:
         | 
| 43 | 
            -
             | 
| 44 | 
            -
                norikra start -Xmx2g --daemonize --logdir=/var/log/norikra
         | 
| 45 | 
            -
                norikra start -Xmx2g --daemonize --pidfile /var/run/norikra.pid --logdir=/var/log/norikra
         | 
| 46 | 
            -
                # To stop
         | 
| 47 | 
            -
                norikra stop
         | 
| 48 | 
            -
             | 
| 49 | 
            -
            Performance options about threadings:
         | 
| 50 | 
            -
             | 
| 51 | 
            -
                norikra start --micro     # or --small, --middle, --large
         | 
| 52 | 
            -
             | 
| 53 | 
            -
            For other options, see help:
         | 
| 54 | 
            -
             | 
| 55 | 
            -
                norikra help start
         | 
| 29 | 
            +
            See: http://norikra.github.io/
         | 
| 56 30 |  | 
| 57 31 | 
             
            ### How to execute norikra server and tests in development
         | 
| 58 32 |  | 
| @@ -77,7 +51,12 @@ Execute norikra server with target/query continuation: | |
| 77 51 |  | 
| 78 52 | 
             
            ## Clients
         | 
| 79 53 |  | 
| 80 | 
            -
            Use ` | 
| 54 | 
            +
            Use `norikra-client` cli command. These are available on both of JRuby and CRuby.
         | 
| 55 | 
            +
             | 
| 56 | 
            +
            https://rubygems.org/gems/norikra-client
         | 
| 57 | 
            +
            https://rubygems.org/gems/norikra-client-jruby
         | 
| 58 | 
            +
             | 
| 59 | 
            +
            And the client library for application developers are also included in these gems.
         | 
| 81 60 |  | 
| 82 61 | 
             
            https://github.com/norikra/norikra-client-ruby
         | 
| 83 62 |  | 
| @@ -86,103 +65,12 @@ For other languages: | |
| 86 65 |  | 
| 87 66 | 
             
            ## Events and Queries
         | 
| 88 67 |  | 
| 89 | 
            -
             | 
| 90 | 
            -
             | 
| 91 | 
            -
                norikra-client target open www path:string status:integer referer:string agent:string userid:integer
         | 
| 92 | 
            -
                norikra-client target list
         | 
| 93 | 
            -
             | 
| 94 | 
            -
            Supported types are `string`, `boolean`, `integer`, `float` and `hash`, `array`.
         | 
| 95 | 
            -
             | 
| 96 | 
            -
            You can register queries when you want.
         | 
| 97 | 
            -
             | 
| 98 | 
            -
                # norikra-client query add QUERY_NAME  QUERY_EXPRESSION
         | 
| 99 | 
            -
                norikra-client query add www.toppageviews 'SELECT count(*) AS cnt FROM www.win:time_batch(10 sec) WHERE path="/" AND status=200'
         | 
| 100 | 
            -
             | 
| 101 | 
            -
            And send events into norikra (multi line events [json-per-line] and LTSV events are also allowed).
         | 
| 102 | 
            -
             | 
| 103 | 
            -
                echo '{"path":"/", "status":200, "referer":"", "agent":"MSIE", "userid":3}' | norikra-client event send www
         | 
| 104 | 
            -
                echo '{"path":"/login", "status":301, "referer":"/", "agent":"MSIE", "userid":3}' | norikra-client event send www
         | 
| 105 | 
            -
                echo '{"path":"/content", "status":200, "referer":"/login", "agent":"MSIE", "userid":3}' | norikra-client event send www
         | 
| 106 | 
            -
                echo '{"path":"/page/1", "status":200, "referer":"/content", "agent":"MSIE", "userid":3}' | norikra-client event send www
         | 
| 107 | 
            -
             | 
| 108 | 
            -
            Finally, you can get query outputs:
         | 
| 109 | 
            -
             | 
| 110 | 
            -
                norikra-client event fetch www.toppageviews
         | 
| 111 | 
            -
            	{"time":"2013/05/15 15:10:35","cnt":1}
         | 
| 112 | 
            -
            	{"time":"2013/05/15 15:10:45","cnt":0}
         | 
| 113 | 
            -
             | 
| 114 | 
            -
            You can just add queries with optional fields:
         | 
| 115 | 
            -
             | 
| 116 | 
            -
                norikra-client query add www.search 'SELECT count(*) AS cnt FROM www.win:time_batch(10 sec) WHERE path="/content" AND search_param.length() > 0'
         | 
| 117 | 
            -
             | 
| 118 | 
            -
            And send more events:
         | 
| 119 | 
            -
             | 
| 120 | 
            -
                echo '{"path":"/", "status":200, "referer":"", "agent":"MSIE", "userid":3}' | norikra-client event send www
         | 
| 121 | 
            -
                echo '{"path":"/", "status":200, "referer":"", "agent":"Firefox", "userid":4}' | norikra-client event send www
         | 
| 122 | 
            -
                echo '{"path":"/content", "status":200, "referer":"/login", "agent":"MSIE", "userid":3}' | norikra-client event send www
         | 
| 123 | 
            -
                echo '{"path":"/content", "status":200, "referer":"/login", "agent":"Firefox", "userid":4, "search_param":"news worldwide"}' | norikra-client event send www
         | 
| 124 | 
            -
             | 
| 125 | 
            -
            Query 'www.search' matches the last event automatically.
         | 
| 126 | 
            -
             | 
| 127 | 
            -
            ## Performance
         | 
| 128 | 
            -
             | 
| 129 | 
            -
            Threads option available with `norikra start`. Simple specifiers for performance with threadings:
         | 
| 130 | 
            -
             | 
| 131 | 
            -
                norikra start --micro     # or --small, --middle, --large (default: 'micro')
         | 
| 132 | 
            -
             | 
| 133 | 
            -
            Norikra server has 3 types of threads:
         | 
| 134 | 
            -
             | 
| 135 | 
            -
            * engine: 4 query engine thread types on Esper
         | 
| 136 | 
            -
              * inbound: input data handler for queries
         | 
| 137 | 
            -
              * outbound: output data handler for queries
         | 
| 138 | 
            -
              * router: event handler which decides which query needs that events
         | 
| 139 | 
            -
              * timer: executer for queries with time_batches and other timing events
         | 
| 140 | 
            -
            * rpc: data input/output rpc handler threads on Jetty
         | 
| 141 | 
            -
            * web: web ui request handler threads on Jetty
         | 
| 142 | 
            -
             | 
| 143 | 
            -
            In many cases, norikra server handling high rate events needs large number of rpc threads to handle input/output rpc requests. WebUI don't need threads rather than default in almost all of cases.
         | 
| 144 | 
            -
             | 
| 145 | 
            -
            Engine threads depends on queries running on norikra, input/output event data rate and target numbers. For more details, see Esper's API Documents: http://esper.codehaus.org/esper-4.10.0/doc/reference/en-US/html/api.html#api-threading
         | 
| 146 | 
            -
             | 
| 147 | 
            -
            Norikra's simple specifiers details of threadings are:
         | 
| 148 | 
            -
             | 
| 149 | 
            -
            * micro: development and testing
         | 
| 150 | 
            -
              * engine: all processings on single threads
         | 
| 151 | 
            -
              * rpc: 2 threads
         | 
| 152 | 
            -
              * web: 2 threads
         | 
| 153 | 
            -
            * small: low rate events on virtual servers
         | 
| 154 | 
            -
              * engine: inbound 1, outbound 1, route 1, timer 1 threads
         | 
| 155 | 
            -
              * rpc: 2 threads
         | 
| 156 | 
            -
              * web: 2 threads
         | 
| 157 | 
            -
            * middle: high rate events on physical servers
         | 
| 158 | 
            -
              * engine: inbound 4, outbound 2, route 2, timer 2 threads
         | 
| 159 | 
            -
              * rpc: 4 threads
         | 
| 160 | 
            -
              * web: 2 threads
         | 
| 161 | 
            -
            * large: inbound heavy traffic and huge amount of queries
         | 
| 162 | 
            -
              * engine: inbound 6, outbound 6, route 4, timer 4 threads
         | 
| 163 | 
            -
              * rpc: 8 threads
         | 
| 164 | 
            -
              * web: 2 threads
         | 
| 165 | 
            -
             | 
| 166 | 
            -
            To specify sizes of each threads, use `--*-threads=NUM` options. For more details, see: `norikra help start`.
         | 
| 167 | 
            -
             | 
| 168 | 
            -
            ## User Defined Functions
         | 
| 169 | 
            -
             | 
| 170 | 
            -
            UDFs/UDAFs can be loaded as plugin gems over rubygems or as private plugins.
         | 
| 171 | 
            -
            In fact, Norikra's UDFs/UDAFs are Esper's plugin with a JRuby class to indicate plugin metadata.
         | 
| 172 | 
            -
             | 
| 173 | 
            -
            For details how to write your own UDF/UDAF for norikra and to release it as gem, see README of `norikra-udf-mock`.
         | 
| 174 | 
            -
            https://github.com/norikra/norikra-udf-mock
         | 
| 175 | 
            -
             | 
| 176 | 
            -
            ## Tips
         | 
| 177 | 
            -
             | 
| 178 | 
            -
            We need to write this document on http://norikra.github.io
         | 
| 179 | 
            -
             | 
| 180 | 
            -
            ### Esper query syntax
         | 
| 181 | 
            -
             | 
| 182 | 
            -
            * String concatination operator: `||`
         | 
| 68 | 
            +
            See: http://norikra.github.io/
         | 
| 183 69 |  | 
| 184 70 | 
             
            ## Changes
         | 
| 185 71 |  | 
| 72 | 
            +
            * v0.1.3:
         | 
| 73 | 
            +
             * Fix critical bug about query de-registration
         | 
| 186 74 | 
             
            * v0.1.2:
         | 
| 187 75 | 
             
             * Fix CLI start command to detect jruby path collectly (behind rbenv/rvm and others)
         | 
| 188 76 | 
             
            * v0.1.1:
         | 
    
        data/lib/norikra/cli.rb
    CHANGED
    
    | @@ -18,6 +18,8 @@ module Norikra | |
| 18 18 | 
             
                                   :desc => 'status file path to load/dump targets, queries and server configurations [none]'
         | 
| 19 19 | 
             
                    option :'suppress-dump-stat', :type => :boolean, :default => false, \
         | 
| 20 20 | 
             
                                   :desc => 'specify not to update stat file with updated targets/queries/configurations on runtime [false]'
         | 
| 21 | 
            +
                    option :'dump-stat-interval', :type => :numeric, :default => nil, \
         | 
| 22 | 
            +
                                   :desc => 'interval(seconds) of status file dumps on runtime [none (on shutdown only)]'
         | 
| 21 23 |  | 
| 22 24 | 
             
                    ### Daemonize options
         | 
| 23 25 | 
             
                    option :daemonize, :type => :boolean, :default => false, :aliases => "-d", \
         | 
| @@ -135,7 +137,7 @@ module Norikra | |
| 135 137 |  | 
| 136 138 | 
             
                  ### stat file
         | 
| 137 139 | 
             
                  conf[:stats] = {
         | 
| 138 | 
            -
                    path: options[:stats], suppress: options[:'suppress-dump-stat'],
         | 
| 140 | 
            +
                    path: options[:stats], suppress: options[:'suppress-dump-stat'], interval: options[:'dump-stat-interval'],
         | 
| 139 141 | 
             
                  }
         | 
| 140 142 |  | 
| 141 143 | 
             
                  ### threads
         | 
    
        data/lib/norikra/engine.rb
    CHANGED
    
    
    
        data/lib/norikra/rpc/handler.rb
    CHANGED
    
    | @@ -103,6 +103,12 @@ class Norikra::RPC::Handler | |
| 103 103 | 
             
                }
         | 
| 104 104 | 
             
              end
         | 
| 105 105 |  | 
| 106 | 
            +
              def see(query_name)
         | 
| 107 | 
            +
                logging(:show, :see, [query_name]){
         | 
| 108 | 
            +
                  @engine.output_pool.fetch(query_name)
         | 
| 109 | 
            +
                }
         | 
| 110 | 
            +
              end
         | 
| 111 | 
            +
             | 
| 106 112 | 
             
              def sweep(query_group=nil)
         | 
| 107 113 | 
             
                logging(:show, :sweep){
         | 
| 108 114 | 
             
                  @engine.output_pool.sweep(query_group)
         | 
    
        data/lib/norikra/server.rb
    CHANGED
    
    | @@ -82,6 +82,7 @@ module Norikra | |
| 82 82 |  | 
| 83 83 | 
             
                  @stats_path = conf[:stats][:path]
         | 
| 84 84 | 
             
                  @stats_suppress_dump = conf[:stats][:suppress]
         | 
| 85 | 
            +
                  @stats_dump_interval = conf[:stats][:interval]
         | 
| 85 86 | 
             
                  @stats = if @stats_path && test(?r, @stats_path)
         | 
| 86 87 | 
             
                             Norikra::Stats.load(@stats_path)
         | 
| 87 88 | 
             
                           else
         | 
| @@ -147,11 +148,42 @@ module Norikra | |
| 147 148 | 
             
                  [:INT, :TERM].each do |s|
         | 
| 148 149 | 
             
                    Signal.trap(s, shutdown_proc)
         | 
| 149 150 | 
             
                  end
         | 
| 150 | 
            -
             | 
| 151 | 
            +
             | 
| 152 | 
            +
                  @dump_stats = false
         | 
| 153 | 
            +
                  @dump_next_time = if @stats_dump_interval
         | 
| 154 | 
            +
                                      Time.now + @stats_dump_interval
         | 
| 155 | 
            +
                                    else
         | 
| 156 | 
            +
                                      nil
         | 
| 157 | 
            +
                                    end
         | 
| 158 | 
            +
                  Signal.trap(:USR1, ->{ @dump_stats = true })
         | 
| 159 | 
            +
             | 
| 160 | 
            +
                  #TODO: SIGHUP?(dynamic plugin loading?) SIGUSR2?
         | 
| 151 161 |  | 
| 152 162 | 
             
                  while @running
         | 
| 153 163 | 
             
                    sleep 0.3
         | 
| 164 | 
            +
             | 
| 165 | 
            +
                    if @stats && !@stats_suppress_dump
         | 
| 166 | 
            +
                      if @dump_stats || (@dump_next_time && Time.now > @dump_next_time)
         | 
| 167 | 
            +
                        dump_stats
         | 
| 168 | 
            +
                        @dump_stats = false
         | 
| 169 | 
            +
                        @dump_next_time = Time.now + @stats_dump_interval if @dump_next_time
         | 
| 170 | 
            +
                      end
         | 
| 171 | 
            +
                    end
         | 
| 172 | 
            +
                  end
         | 
| 173 | 
            +
                end
         | 
| 174 | 
            +
             | 
| 175 | 
            +
                def shutdown
         | 
| 176 | 
            +
                  info "Norikra server shutting down."
         | 
| 177 | 
            +
                  @webserver.stop
         | 
| 178 | 
            +
                  @rpcserver.stop
         | 
| 179 | 
            +
                  @engine.stop
         | 
| 180 | 
            +
                  info "Norikra server stopped."
         | 
| 181 | 
            +
             | 
| 182 | 
            +
                  if @stats_path && !@stats_suppress_dump
         | 
| 183 | 
            +
                    dump_stats
         | 
| 154 184 | 
             
                  end
         | 
| 185 | 
            +
             | 
| 186 | 
            +
                  info "Norikra server shutdown complete."
         | 
| 155 187 | 
             
                end
         | 
| 156 188 |  | 
| 157 189 | 
             
                def load_plugins
         | 
| @@ -170,33 +202,23 @@ module Norikra | |
| 170 202 | 
             
                  end
         | 
| 171 203 | 
             
                end
         | 
| 172 204 |  | 
| 173 | 
            -
                def  | 
| 174 | 
            -
                   | 
| 175 | 
            -
             | 
| 176 | 
            -
             | 
| 177 | 
            -
             | 
| 178 | 
            -
             | 
| 179 | 
            -
             | 
| 180 | 
            -
             | 
| 181 | 
            -
             | 
| 182 | 
            -
             | 
| 183 | 
            -
             | 
| 184 | 
            -
                       | 
| 185 | 
            -
             | 
| 186 | 
            -
             | 
| 187 | 
            -
             | 
| 188 | 
            -
             | 
| 189 | 
            -
             | 
| 190 | 
            -
                          :auto_field => t.auto_field
         | 
| 191 | 
            -
                        }
         | 
| 192 | 
            -
                      },
         | 
| 193 | 
            -
                      queries: @engine.queries.map(&:dump)
         | 
| 194 | 
            -
                    )
         | 
| 195 | 
            -
                    stats.dump(@stats_path)
         | 
| 196 | 
            -
                    info "Current status saved", :path => @stats_path
         | 
| 197 | 
            -
                  end
         | 
| 198 | 
            -
             | 
| 199 | 
            -
                  info "Norikra server shutdown complete."
         | 
| 205 | 
            +
                def dump_stats
         | 
| 206 | 
            +
                  stats = Norikra::Stats.new(
         | 
| 207 | 
            +
                    host: @host,
         | 
| 208 | 
            +
                    port: @port,
         | 
| 209 | 
            +
                    threads: @thread_conf,
         | 
| 210 | 
            +
                    log: @log_conf,
         | 
| 211 | 
            +
                    targets: @engine.targets.map{|t|
         | 
| 212 | 
            +
                      {
         | 
| 213 | 
            +
                        :name => t.name,
         | 
| 214 | 
            +
                        :fields => @engine.typedef_manager.dump_target(t.name),
         | 
| 215 | 
            +
                        :auto_field => t.auto_field
         | 
| 216 | 
            +
                      }
         | 
| 217 | 
            +
                    },
         | 
| 218 | 
            +
                    queries: @engine.queries.map(&:dump)
         | 
| 219 | 
            +
                  )
         | 
| 220 | 
            +
                  stats.dump(@stats_path)
         | 
| 221 | 
            +
                  info "Current status saved", :path => @stats_path
         | 
| 200 222 | 
             
                end
         | 
| 201 223 | 
             
              end
         | 
| 202 224 | 
             
            end
         | 
    
        data/lib/norikra/target.rb
    CHANGED
    
    | @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            module Norikra
         | 
| 2 2 | 
             
              class Target
         | 
| 3 | 
            -
                attr_accessor :name, :fields, :auto_field
         | 
| 3 | 
            +
                attr_accessor :name, :fields, :auto_field, :last_modified
         | 
| 4 4 |  | 
| 5 5 | 
             
                def self.valid?(target_name)
         | 
| 6 6 | 
             
                  target_name =~ /^[a-zA-Z]([_a-zA-Z0-9]*[a-zA-Z0-9])?$/
         | 
| @@ -10,6 +10,7 @@ module Norikra | |
| 10 10 | 
             
                  @name = name
         | 
| 11 11 | 
             
                  @fields = fields
         | 
| 12 12 | 
             
                  @auto_field = !!auto_field
         | 
| 13 | 
            +
                  @last_modified = nil
         | 
| 13 14 | 
             
                end
         | 
| 14 15 |  | 
| 15 16 | 
             
                def <=>(other)
         | 
| @@ -27,5 +28,9 @@ module Norikra | |
| 27 28 | 
             
                def auto_field?
         | 
| 28 29 | 
             
                  @auto_field
         | 
| 29 30 | 
             
                end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                def update!
         | 
| 33 | 
            +
                  @last_modified = Time.now
         | 
| 34 | 
            +
                end
         | 
| 30 35 | 
             
              end
         | 
| 31 36 | 
             
            end
         | 
    
        data/lib/norikra/version.rb
    CHANGED
    
    
| @@ -68,7 +68,14 @@ class Norikra::WebUI::Handler < Sinatra::Base | |
| 68 68 | 
             
                  pooled_events = Hash[* queries.map{|q| [q.name, engine.output_pool.pool.fetch(q.name, []).size.to_s]}.flatten]
         | 
| 69 69 |  | 
| 70 70 | 
             
                  engine_targets = engine.targets.sort
         | 
| 71 | 
            -
                  targets = engine_targets.map{|t| | 
| 71 | 
            +
                  targets = engine_targets.map{|t|
         | 
| 72 | 
            +
                    {
         | 
| 73 | 
            +
                      name: t.name,
         | 
| 74 | 
            +
                      auto_field: t.auto_field,
         | 
| 75 | 
            +
                      fields: engine.typedef_manager.field_list(t.name),
         | 
| 76 | 
            +
                      modified: t.last_modified.to_s,
         | 
| 77 | 
            +
                    }
         | 
| 78 | 
            +
                  }
         | 
| 72 79 |  | 
| 73 80 | 
             
                  erb :index, :layout => :base, :locals => {
         | 
| 74 81 | 
             
                    input_data: input_data,
         | 
    
        data/norikra.gemspec
    CHANGED
    
    | @@ -22,8 +22,8 @@ Gem::Specification.new do |spec| | |
| 22 22 | 
             
              spec.add_runtime_dependency "mizuno", "~> 0.6"
         | 
| 23 23 | 
             
              spec.add_runtime_dependency "rack"
         | 
| 24 24 | 
             
              spec.add_runtime_dependency "thor"
         | 
| 25 | 
            -
              spec.add_runtime_dependency "msgpack-rpc-over-http-jruby", ">= 0.0. | 
| 26 | 
            -
              spec.add_runtime_dependency "norikra-client-jruby", " | 
| 25 | 
            +
              spec.add_runtime_dependency "msgpack-rpc-over-http-jruby", ">= 0.0.6"
         | 
| 26 | 
            +
              spec.add_runtime_dependency "norikra-client-jruby", ">= 0.1.4"
         | 
| 27 27 | 
             
              spec.add_runtime_dependency "sinatra"
         | 
| 28 28 | 
             
              spec.add_runtime_dependency "sinatra-contrib"
         | 
| 29 29 | 
             
              spec.add_runtime_dependency "erubis"
         | 
    
        data/views/base.erb
    CHANGED
    
    | @@ -45,7 +45,7 @@ | |
| 45 45 | 
             
                        <li <%= @page == "queries" ? 'class="active"' : '' %>><a href="#targets">Targets</a></li>
         | 
| 46 46 | 
             
                      </ul>
         | 
| 47 47 | 
             
                      <ul class="nav navbar-nav navbar-right">
         | 
| 48 | 
            -
                        <li><a href="https://github.com/ | 
| 48 | 
            +
                        <li><a href="https://github.com/norikra/norikra">Webpage</a></li>
         | 
| 49 49 | 
             
                      </ul>
         | 
| 50 50 | 
             
                    </div><!--/.nav-collapse -->
         | 
| 51 51 | 
             
                  </div>
         | 
    
        data/views/index.erb
    CHANGED
    
    | @@ -66,7 +66,7 @@ | |
| 66 66 | 
             
            <% if queries.size > 0 %>
         | 
| 67 67 | 
             
            <table class="table">
         | 
| 68 68 | 
             
              <tr><th>Group</th><th>Query name</th><th>Targets</th><th>Query</th><th style="text-align:right;">Events</th><th></th><th></th></tr>
         | 
| 69 | 
            -
              <% queries. | 
| 69 | 
            +
              <% queries.each_with_index do |query, index| %>
         | 
| 70 70 | 
             
              <tr>
         | 
| 71 71 | 
             
                <td><%= query.group || "(default)" %></td>
         | 
| 72 72 | 
             
                <td><%= query.name %></td>
         | 
| @@ -83,12 +83,12 @@ | |
| 83 83 | 
             
                  <% end %>
         | 
| 84 84 | 
             
                </td>
         | 
| 85 85 | 
             
                <td>
         | 
| 86 | 
            -
                  <a class="btn btn-danger btn-xs" data-toggle="modal" href="#removeQuery<%=  | 
| 86 | 
            +
                  <a class="btn btn-danger btn-xs" data-toggle="modal" href="#removeQuery<%= index %>">
         | 
| 87 87 | 
             
                    <span class="glyphicon glyphicon-trash"></span>
         | 
| 88 88 | 
             
                  </a>
         | 
| 89 89 | 
             
                  <div class="modal fade"
         | 
| 90 | 
            -
                    id="removeQuery<%=  | 
| 91 | 
            -
                    tabindex="-1" role="dialog" aria-labelledby="removeQueryLabel<%=  | 
| 90 | 
            +
                    id="removeQuery<%= index %>"
         | 
| 91 | 
            +
                    tabindex="-1" role="dialog" aria-labelledby="removeQueryLabel<%= index %>" aria-hidden="true">
         | 
| 92 92 | 
             
                    <div class="modal-dialog">
         | 
| 93 93 | 
             
                      <div class="modal-content">
         | 
| 94 94 | 
             
                        <div class="modal-header">
         | 
| @@ -151,7 +151,7 @@ | |
| 151 151 |  | 
| 152 152 | 
             
            <% if targets.size > 0 %>
         | 
| 153 153 | 
             
            <table class="table">
         | 
| 154 | 
            -
              <tr><th>Target</th><th>Auto field</th><th>Fields</th><th></th></tr>
         | 
| 154 | 
            +
              <tr><th>Target</th><th>Auto field</th><th>Fields</th><th></th><th>modified</th></tr>
         | 
| 155 155 | 
             
              <% targets.each do |target| %>
         | 
| 156 156 | 
             
              <tr>
         | 
| 157 157 | 
             
                <td><%= target[:name] %></td>
         | 
| @@ -164,6 +164,7 @@ | |
| 164 164 | 
             
                  <% end %>
         | 
| 165 165 | 
             
                </td>
         | 
| 166 166 | 
             
                <td style="font-size: small; color: #c0c0c0;">TODO: change auto_fields, reserve fields, remove targets</td>
         | 
| 167 | 
            +
                <td style="text-align: right;"><%= target[:modified] %></td>
         | 
| 167 168 | 
             
              </tr>
         | 
| 168 169 | 
             
              <% end %>
         | 
| 169 170 | 
             
            </table>
         | 
    
        metadata
    CHANGED
    
    | @@ -1,15 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: norikra
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
               | 
| 5 | 
            -
              version: 0.1.3
         | 
| 4 | 
            +
              version: 0.1.4
         | 
| 6 5 | 
             
            platform: java
         | 
| 7 6 | 
             
            authors:
         | 
| 8 7 | 
             
            - TAGOMORI Satoshi
         | 
| 9 8 | 
             
            autorequire:
         | 
| 10 9 | 
             
            bindir: bin
         | 
| 11 10 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date:  | 
| 11 | 
            +
            date: 2014-03-07 00:00:00.000000000 Z
         | 
| 13 12 | 
             
            dependencies:
         | 
| 14 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 14 | 
             
              name: mizuno
         | 
| @@ -18,13 +17,11 @@ dependencies: | |
| 18 17 | 
             
                - - ~>
         | 
| 19 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 20 19 | 
             
                    version: '0.6'
         | 
| 21 | 
            -
                none: false
         | 
| 22 20 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 23 21 | 
             
                requirements:
         | 
| 24 22 | 
             
                - - ~>
         | 
| 25 23 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 24 | 
             
                    version: '0.6'
         | 
| 27 | 
            -
                none: false
         | 
| 28 25 | 
             
              prerelease: false
         | 
| 29 26 | 
             
              type: :runtime
         | 
| 30 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| @@ -34,13 +31,11 @@ dependencies: | |
| 34 31 | 
             
                - - '>='
         | 
| 35 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 36 33 | 
             
                    version: '0'
         | 
| 37 | 
            -
                none: false
         | 
| 38 34 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 39 35 | 
             
                requirements:
         | 
| 40 36 | 
             
                - - '>='
         | 
| 41 37 | 
             
                  - !ruby/object:Gem::Version
         | 
| 42 38 | 
             
                    version: '0'
         | 
| 43 | 
            -
                none: false
         | 
| 44 39 | 
             
              prerelease: false
         | 
| 45 40 | 
             
              type: :runtime
         | 
| 46 41 | 
             
            - !ruby/object:Gem::Dependency
         | 
| @@ -50,13 +45,11 @@ dependencies: | |
| 50 45 | 
             
                - - '>='
         | 
| 51 46 | 
             
                  - !ruby/object:Gem::Version
         | 
| 52 47 | 
             
                    version: '0'
         | 
| 53 | 
            -
                none: false
         | 
| 54 48 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 55 49 | 
             
                requirements:
         | 
| 56 50 | 
             
                - - '>='
         | 
| 57 51 | 
             
                  - !ruby/object:Gem::Version
         | 
| 58 52 | 
             
                    version: '0'
         | 
| 59 | 
            -
                none: false
         | 
| 60 53 | 
             
              prerelease: false
         | 
| 61 54 | 
             
              type: :runtime
         | 
| 62 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| @@ -65,30 +58,26 @@ dependencies: | |
| 65 58 | 
             
                requirements:
         | 
| 66 59 | 
             
                - - '>='
         | 
| 67 60 | 
             
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            -
                    version: 0.0. | 
| 69 | 
            -
                none: false
         | 
| 61 | 
            +
                    version: 0.0.6
         | 
| 70 62 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 71 63 | 
             
                requirements:
         | 
| 72 64 | 
             
                - - '>='
         | 
| 73 65 | 
             
                  - !ruby/object:Gem::Version
         | 
| 74 | 
            -
                    version: 0.0. | 
| 75 | 
            -
                none: false
         | 
| 66 | 
            +
                    version: 0.0.6
         | 
| 76 67 | 
             
              prerelease: false
         | 
| 77 68 | 
             
              type: :runtime
         | 
| 78 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 79 70 | 
             
              name: norikra-client-jruby
         | 
| 80 71 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 81 72 | 
             
                requirements:
         | 
| 82 | 
            -
                - -  | 
| 73 | 
            +
                - - '>='
         | 
| 83 74 | 
             
                  - !ruby/object:Gem::Version
         | 
| 84 | 
            -
                    version: 0.1. | 
| 85 | 
            -
                none: false
         | 
| 75 | 
            +
                    version: 0.1.4
         | 
| 86 76 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 87 77 | 
             
                requirements:
         | 
| 88 | 
            -
                - -  | 
| 78 | 
            +
                - - '>='
         | 
| 89 79 | 
             
                  - !ruby/object:Gem::Version
         | 
| 90 | 
            -
                    version: 0.1. | 
| 91 | 
            -
                none: false
         | 
| 80 | 
            +
                    version: 0.1.4
         | 
| 92 81 | 
             
              prerelease: false
         | 
| 93 82 | 
             
              type: :runtime
         | 
| 94 83 | 
             
            - !ruby/object:Gem::Dependency
         | 
| @@ -98,13 +87,11 @@ dependencies: | |
| 98 87 | 
             
                - - '>='
         | 
| 99 88 | 
             
                  - !ruby/object:Gem::Version
         | 
| 100 89 | 
             
                    version: '0'
         | 
| 101 | 
            -
                none: false
         | 
| 102 90 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 103 91 | 
             
                requirements:
         | 
| 104 92 | 
             
                - - '>='
         | 
| 105 93 | 
             
                  - !ruby/object:Gem::Version
         | 
| 106 94 | 
             
                    version: '0'
         | 
| 107 | 
            -
                none: false
         | 
| 108 95 | 
             
              prerelease: false
         | 
| 109 96 | 
             
              type: :runtime
         | 
| 110 97 | 
             
            - !ruby/object:Gem::Dependency
         | 
| @@ -114,13 +101,11 @@ dependencies: | |
| 114 101 | 
             
                - - '>='
         | 
| 115 102 | 
             
                  - !ruby/object:Gem::Version
         | 
| 116 103 | 
             
                    version: '0'
         | 
| 117 | 
            -
                none: false
         | 
| 118 104 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 119 105 | 
             
                requirements:
         | 
| 120 106 | 
             
                - - '>='
         | 
| 121 107 | 
             
                  - !ruby/object:Gem::Version
         | 
| 122 108 | 
             
                    version: '0'
         | 
| 123 | 
            -
                none: false
         | 
| 124 109 | 
             
              prerelease: false
         | 
| 125 110 | 
             
              type: :runtime
         | 
| 126 111 | 
             
            - !ruby/object:Gem::Dependency
         | 
| @@ -130,13 +115,11 @@ dependencies: | |
| 130 115 | 
             
                - - '>='
         | 
| 131 116 | 
             
                  - !ruby/object:Gem::Version
         | 
| 132 117 | 
             
                    version: '0'
         | 
| 133 | 
            -
                none: false
         | 
| 134 118 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 135 119 | 
             
                requirements:
         | 
| 136 120 | 
             
                - - '>='
         | 
| 137 121 | 
             
                  - !ruby/object:Gem::Version
         | 
| 138 122 | 
             
                    version: '0'
         | 
| 139 | 
            -
                none: false
         | 
| 140 123 | 
             
              prerelease: false
         | 
| 141 124 | 
             
              type: :runtime
         | 
| 142 125 | 
             
            - !ruby/object:Gem::Dependency
         | 
| @@ -146,13 +129,11 @@ dependencies: | |
| 146 129 | 
             
                - - ~>
         | 
| 147 130 | 
             
                  - !ruby/object:Gem::Version
         | 
| 148 131 | 
             
                    version: '1.3'
         | 
| 149 | 
            -
                none: false
         | 
| 150 132 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 151 133 | 
             
                requirements:
         | 
| 152 134 | 
             
                - - ~>
         | 
| 153 135 | 
             
                  - !ruby/object:Gem::Version
         | 
| 154 136 | 
             
                    version: '1.3'
         | 
| 155 | 
            -
                none: false
         | 
| 156 137 | 
             
              prerelease: false
         | 
| 157 138 | 
             
              type: :development
         | 
| 158 139 | 
             
            - !ruby/object:Gem::Dependency
         | 
| @@ -162,13 +143,11 @@ dependencies: | |
| 162 143 | 
             
                - - '>='
         | 
| 163 144 | 
             
                  - !ruby/object:Gem::Version
         | 
| 164 145 | 
             
                    version: '0'
         | 
| 165 | 
            -
                none: false
         | 
| 166 146 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 167 147 | 
             
                requirements:
         | 
| 168 148 | 
             
                - - '>='
         | 
| 169 149 | 
             
                  - !ruby/object:Gem::Version
         | 
| 170 150 | 
             
                    version: '0'
         | 
| 171 | 
            -
                none: false
         | 
| 172 151 | 
             
              prerelease: false
         | 
| 173 152 | 
             
              type: :development
         | 
| 174 153 | 
             
            - !ruby/object:Gem::Dependency
         | 
| @@ -178,13 +157,11 @@ dependencies: | |
| 178 157 | 
             
                - - ~>
         | 
| 179 158 | 
             
                  - !ruby/object:Gem::Version
         | 
| 180 159 | 
             
                    version: '2.0'
         | 
| 181 | 
            -
                none: false
         | 
| 182 160 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 183 161 | 
             
                requirements:
         | 
| 184 162 | 
             
                - - ~>
         | 
| 185 163 | 
             
                  - !ruby/object:Gem::Version
         | 
| 186 164 | 
             
                    version: '2.0'
         | 
| 187 | 
            -
                none: false
         | 
| 188 165 | 
             
              prerelease: false
         | 
| 189 166 | 
             
              type: :development
         | 
| 190 167 | 
             
            - !ruby/object:Gem::Dependency
         | 
| @@ -194,13 +171,11 @@ dependencies: | |
| 194 171 | 
             
                - - '>='
         | 
| 195 172 | 
             
                  - !ruby/object:Gem::Version
         | 
| 196 173 | 
             
                    version: '0'
         | 
| 197 | 
            -
                none: false
         | 
| 198 174 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 199 175 | 
             
                requirements:
         | 
| 200 176 | 
             
                - - '>='
         | 
| 201 177 | 
             
                  - !ruby/object:Gem::Version
         | 
| 202 178 | 
             
                    version: '0'
         | 
| 203 | 
            -
                none: false
         | 
| 204 179 | 
             
              prerelease: false
         | 
| 205 180 | 
             
              type: :development
         | 
| 206 181 | 
             
            - !ruby/object:Gem::Dependency
         | 
| @@ -210,13 +185,11 @@ dependencies: | |
| 210 185 | 
             
                - - '>='
         | 
| 211 186 | 
             
                  - !ruby/object:Gem::Version
         | 
| 212 187 | 
             
                    version: '0'
         | 
| 213 | 
            -
                none: false
         | 
| 214 188 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 215 189 | 
             
                requirements:
         | 
| 216 190 | 
             
                - - '>='
         | 
| 217 191 | 
             
                  - !ruby/object:Gem::Version
         | 
| 218 192 | 
             
                    version: '0'
         | 
| 219 | 
            -
                none: false
         | 
| 220 193 | 
             
              prerelease: false
         | 
| 221 194 | 
             
              type: :development
         | 
| 222 195 | 
             
            description: 'CEP: Complex Event Processor with Esper EPL qeury language, messagepack
         | 
| @@ -361,6 +334,7 @@ files: | |
| 361 334 | 
             
            homepage: http://norikra.github.io/
         | 
| 362 335 | 
             
            licenses:
         | 
| 363 336 | 
             
            - GPLv2
         | 
| 337 | 
            +
            metadata: {}
         | 
| 364 338 | 
             
            post_install_message:
         | 
| 365 339 | 
             
            rdoc_options: []
         | 
| 366 340 | 
             
            require_paths:
         | 
| @@ -370,25 +344,17 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 370 344 | 
             
              requirements:
         | 
| 371 345 | 
             
              - - '>='
         | 
| 372 346 | 
             
                - !ruby/object:Gem::Version
         | 
| 373 | 
            -
                  segments:
         | 
| 374 | 
            -
                  - 0
         | 
| 375 | 
            -
                  hash: 2
         | 
| 376 347 | 
             
                  version: '0'
         | 
| 377 | 
            -
              none: false
         | 
| 378 348 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 379 349 | 
             
              requirements:
         | 
| 380 350 | 
             
              - - '>='
         | 
| 381 351 | 
             
                - !ruby/object:Gem::Version
         | 
| 382 | 
            -
                  segments:
         | 
| 383 | 
            -
                  - 0
         | 
| 384 | 
            -
                  hash: 2
         | 
| 385 352 | 
             
                  version: '0'
         | 
| 386 | 
            -
              none: false
         | 
| 387 353 | 
             
            requirements: []
         | 
| 388 354 | 
             
            rubyforge_project:
         | 
| 389 | 
            -
            rubygems_version: 1. | 
| 355 | 
            +
            rubygems_version: 2.1.9
         | 
| 390 356 | 
             
            signing_key:
         | 
| 391 | 
            -
            specification_version:  | 
| 357 | 
            +
            specification_version: 4
         | 
| 392 358 | 
             
            summary: CEP engine/server with Esper and JRuby
         | 
| 393 359 | 
             
            test_files:
         | 
| 394 360 | 
             
            - spec/field_spec.rb
         |