membase server-list
membase server-info
+membase bucket-list | grep users && membase bucket-flush --bucket=users && membase bucket-delete --bucket=users
membase bucket-list | grep files && membase bucket-flush --bucket=files && membase bucket-delete --bucket=files
membase bucket-list | grep session && membase bucket-flush --bucket=session && membase bucket-delete --bucket=session
membase bucket-list
-membase bucket-create --bucket=files \
+membase bucket-create --bucket=users \
--bucket-type=membase \
--bucket-port=5800 \
--bucket-ramsize=100 \
--bucket-replica=1
+membase bucket-create --bucket=files \
+ --bucket-type=membase \
+ --bucket-port=5801 \
+ --bucket-ramsize=100 \
+ --bucket-replica=1
+
membase bucket-create --bucket=session \
--bucket-type=memcached \
- --bucket-port=5801 \
+ --bucket-port=5802 \
--bucket-ramsize=100
membase bucket-flush --bucket=files
use Digest::MD5 qw(md5_base64);
use Data::Dump qw(dump);
use LWP::Simple;
+use Carp qw(confess);
my $buckets = {
- files => 5800,
- session => 5801,
+ users => 5800,
+ files => 5801,
+ session => 5802,
};
sub new {
}
- warn "# new ",dump $self;
+ warn "# new ",dump $self if $ENV{DEBUG};
return $self;
}
+sub json_set {
+ my ($self,$bucket,$key,$data) = @_;
+ confess "data not ref ",dump($data) unless ref $data;
+ my $json = encode_json $data;
+ $self->{$bucket}->set( $key => $json );
+ warn "## $bucket set $key $json\n";
+ return $json;
+}
+
+sub json_get {
+ my ($self,$bucket,$key,$data) = @_;
+ if ( my $json = $self->{$bucket}->get($key) ) {
+ warn "## $bucket get $key $json\n";
+ return decode_json $json;
+ }
+}
+
+sub user_set {
+ my ($self,$data) = @_;
+ $self->json_set( 'users', $data->{login}, $data );
+}
+
+sub user_get {
+ my ($self,$login) = @_;
+ $self->json_get( 'users', $login );
+}
+
sub usage_decr {
my ($self,$data) = @_;
$self->{session}->decr( $data->{login} . ':usage' => $data->{size} );
$self->{session}->set( $data->{login} . ':usage' => $usage );
}
-sub _key {
+sub _file_key {
my $data = shift;
#md5_base64( $data->{login} . '/' . $data->{file} );
$data->{login} . ':' . $data->{file};
sub file_set {
my ($self,$data) = @_;
- my $k = _key $data;
- my $json = encode_json $data;
- $self->{files}->set( $k => $json );
- return $json;
+ $self->json_set( 'files', _file_key($data), $data );
}
sub file_get {
my ($self,$data) = @_;
- my $k = _key $data;
- if ( my $json = $self->{files}->get($k) ) {
- return decode_json $json;
- }
+ $self->json_get( 'files', _file_key($data) );
}
sub modify_file {
sub remove_file {
my ( $self, $data ) = @_;
$self->usage_decr( $data );
- my $k = _key $data;
+ my $k = _file_key $data;
$self->{files}->delete( $k );
}
use strict;
use warnings;
-use Test::More tests => 11;
+use Test::More tests => 15;
use Data::Dump qw(dump);
use lib 'lib';
transfered => 10064,
};
+my $user =
+{ login => 'test', quota => 12000 };
+
ok my $r = CloudStore::Couchbase->new, 'new';
+ok $r->user_set($user), 'user_set';
+is_deeply $r->user_get($user->{login}), $user, 'user_get';
+
ok($r->usage_init({ login => 'test' }), 'usage_init' );
cmp_ok($r->{session}->get('test:usage'), '==',0, 'usage');
ok my $j = $r->file_set($data), 'file_set';
ok( my $f = $r->file_get($data), 'file_get' );
-diag 'file ',dump $f;
+diag 'file ',dump $f, $data;
+is_deeply $f, $data, 'same';
ok( my $u = $r->usage_incr($data), 'usage_incr' );
diag $u;
ok my $d = $r->transfer($data), 'transfer';
diag dump($d);
+ok($r->remove_file($data), 'remove_file');