<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>app/models/snapshot.rb</filename>
    </added>
    <added>
      <filename>spec/config/single.conf</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -10,6 +10,8 @@ class Server
   
   include DataMapper::Resource
 
+  has n, :snapshots
+
   property :id,   Serial
   property :name, String, :key =&gt; true
   property :host, String
@@ -35,6 +37,19 @@ class Server
     end
   end
 
+  def write_statistics
+    if alive?
+      self.snapshots.create :alive  =&gt; true,
+        :used_memory                =&gt; used_memory.to_i,
+        :total_connections_received =&gt; total_connections_received.to_i,
+        :total_commands_processed   =&gt; total_commands_processed.to_i,
+        :connected_clients          =&gt; connected_clients.to_i,
+        :created_at                 =&gt; Time.now
+    else
+      self.snapshots.create :alive =&gt; false, :created_at =&gt; Time.now
+    end
+  end
+
   def alive?
     return true if stats
   rescue</diff>
      <filename>app/models/server.rb</filename>
    </modified>
    <modified>
      <diff>@@ -39,11 +39,23 @@ describe &quot;Server&quot; do
   end
 
   it &quot;should return a status&quot; do
-    server = Server.new attributes
-    server.should_not be_alive
+    server.should be_alive
+  end
+
+  it &quot;should write statistics for active server&quot; do
+    lambda { server.write_statistics }.should change { server.snapshots.size }.by(1)
+  end
+
+  it &quot;should write statistics for dead server&quot; do
+    server = Server.create attributes(:port =&gt; &quot;6380&quot;)
+    lambda { server.write_statistics }.should change { server.snapshots.size }.by(1)
   end
 
   private
+    def server
+      @server ||= Server.first
+    end
+
     def attributes(options = {})
       { :name =&gt; &quot;master&quot;, :host =&gt; &quot;127.0.0.1&quot;, :port =&gt; &quot;6379&quot; }.merge(options)
     end</diff>
      <filename>spec/app/models/server_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -9,5 +9,6 @@ require &quot;#{root}/memoria&quot;
 
 Memoria.new(File.join(File.dirname(__FILE__), '..', 'memoria.yml'))
 DataMapper.auto_migrate!
+Server.create! :name =&gt; &quot;single&quot;, :host =&gt; &quot;127.0.0.1&quot;, :port =&gt; &quot;6379&quot;
 
 set :views,  &quot;#{root}/views&quot;</diff>
      <filename>spec/env.rb</filename>
    </modified>
    <modified>
      <diff>@@ -14,3 +14,22 @@ task :files do
   puts &quot;Files:\n #{Dir['**/*'].reject {|f| File.directory?(f)}.sort.inspect}&quot;
   puts &quot;Test files:\n #{Dir['spec/**/*_spec.rb'].reject {|f| File.directory?(f)}.sort.inspect}&quot;
 end
+
+namespace :redis do
+  desc 'Start the Redis cluster'
+  task :start =&gt; :clean do
+    system &quot;redis-server spec/config/single.conf&quot;
+  end
+
+  desc 'Stop the Redis cluster'
+  task :stop do
+    # TODO replace with:
+    # system &quot;kill -9 `tmp/redis-single.pid`&quot;
+    system &quot;ps -eo pid,comm | grep redis | xargs kill -9&quot;
+  end
+
+  desc 'Clean the tmp/ directory'
+  task :clean do
+    system &quot;rm tmp/*&quot; rescue nil
+  end
+end</diff>
      <filename>tasks/gem.rake</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>8b03a868b47bee80b6b9fbf2c21ae239a7b07313</id>
    </parent>
  </parents>
  <author>
    <name>Luca Guidi</name>
    <email>guidi.luca@gmail.com</email>
  </author>
  <url>http://github.com/jodosha/memoria/commit/cbfea45ea07e9c94d80b126d8b23e5021d40e84c</url>
  <id>cbfea45ea07e9c94d80b126d8b23e5021d40e84c</id>
  <committed-date>2009-06-14T10:41:57-07:00</committed-date>
  <authored-date>2009-06-14T10:41:57-07:00</authored-date>
  <message>Write statistics on the database</message>
  <tree>9a380daba05064a5fc11a831c288a2bbdedfd807</tree>
  <committer>
    <name>Luca Guidi</name>
    <email>guidi.luca@gmail.com</email>
  </committer>
</commit>
