summaryrefslogtreecommitdiffstats
path: root/tests/bugs/bug-1087203.t
blob: 585ecf440ac5309984af2db0ed3d06dc32f9e4bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#!/bin/bash

. $(dirname $0)/../include.rc
. $(dirname $0)/../volume.rc
. $(dirname $0)/../snapshot.rc
. $(dirname $0)/../cluster.rc

function config_validate ()
{
        local var=$1
        $CLI_1 snapshot config | grep "^$var" | sed 's/.*: //'
}

function snap_create ()
{
        local limit=$1;
        local i=0
        while [ $i -lt $limit ]
        do
                $CLI_1 snapshot create snap$i ${V0}
                i=$[$i+1]
        done
}

function snap_delete ()
{
        local limit=$1;
        local i=0
        while [ $i -lt $limit ]
        do
                $CLI_1 snapshot delete snap$i
                i=$[$i+1]
        done
}

function get_snap_count ()
{
        $CLI_1 snapshot list | wc -l
}

function get_volume_info ()
{
        local var=$1
        $CLI_1 volume info $V0 | grep "^$var" | sed 's/.*: //'
}

function is_snapshot_present ()
{
        $CLI_1 snapshot list
}

cleanup;

TEST verify_lvm_version
TEST launch_cluster 2
TEST setup_lvm 2

TEST $CLI_1 peer probe $H2;
EXPECT_WITHIN $PROBE_TIMEOUT 1 peer_count;

TEST $CLI_1 volume create $V0 $H1:$L1 $H2:$L2
EXPECT "$V0" get_volume_info 'Volume Name';
EXPECT 'Created' get_volume_info 'Status';

TEST $CLI_1 volume start $V0
EXPECT 'Started' get_volume_info 'Status';


# Setting system limit
TEST $CLI_1 snapshot config snap-max-hard-limit 100

# Volume limit cannot exceed system limit, as limit is set to 100,
# this should fail.
TEST ! $CLI_1 snapshot config $V0 snap-max-hard-limit 101

# Following are the invalid cases
TEST ! $CLI_1 snapshot config $V0 snap-max-hard-limit a10
TEST ! $CLI_1 snapshot config snap-max-hard-limit 10a
TEST ! $CLI_1 snapshot config snap-max-hard-limit 10%
TEST ! $CLI_1 snapshot config snap-max-soft-limit 50%1
TEST ! $CLI_1 snapshot config snap-max-soft-limit 0111
TEST ! $CLI_1 snapshot config snap-max-hard-limit OXA
TEST ! $CLI_1 snapshot config snap-max-hard-limit 11.11
TEST ! $CLI_1 snapshot config snap-max-soft-limit 50%
TEST ! $CLI_1 snapshot config snap-max-hard-limit -100
TEST ! $CLI_1 snapshot config snap-max-soft-limit -90

# Soft limit cannot be assigned to volume
TEST ! $CLI_1 snapshot config $V0 snap-max-soft-limit 10

# Valid case
TEST $CLI_1 snapshot config snap-max-soft-limit 50
TEST $CLI_1 snapshot config $V0 snap-max-hard-limit 10

# Validating auto-delete feature
# Make sure auto-delete is disabled by default
EXPECT 'disable' config_validate 'auto-delete'

# Test for invalid value for auto-delete
TEST ! $CLI_1 snapshot config auto-delete test

TEST $CLI_1 snapshot config snap-max-hard-limit 6
TEST $CLI_1 snapshot config snap-max-soft-limit 50

# Create 4 snapshots
TEST snap_create 4;

# If auto-delete is disabled then oldest snapshot
# should not be deleted automatically.
EXPECT '4' get_snap_count;

TEST snap_delete 4;

# After all those 4 snaps are deleted, There will not be any snaps present
EXPECT 'No snapshots present' is_snapshot_present;

TEST $CLI_1 snapshot config auto-delete enable
# auto-delete is already enabled, Hence expect a failure.
TEST ! $CLI_1 snapshot config auto-delete on

# Testing other boolean values with auto-delete
TEST $CLI_1 snapshot config auto-delete off
EXPECT 'off' config_validate 'auto-delete'

TEST $CLI_1 snapshot config auto-delete true
EXPECT 'true' config_validate 'auto-delete'

# Try to create 4 snaps again, As auto-delete is enabled
# oldest snap should be deleted and snapcount should be 3

TEST snap_create 4;
EXPECT '3' get_snap_count;

TEST $CLI_1 snapshot config auto-delete disable
EXPECT 'disable' config_validate 'auto-delete'

cleanup;