|  | @@ -0,0 +1,80 @@
 | 
	
		
			
				|  |  | +from ...constants import *  # NOQA
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +from . import cmd, generate_archiver_tests, RK_ENCRYPTION
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +pytest_generate_tests = lambda metafunc: generate_archiver_tests(metafunc, kinds="local,remote")  # NOQA
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +def test_repo_space_basics(archivers, request):
 | 
	
		
			
				|  |  | +    archiver = request.getfixturevalue(archivers)
 | 
	
		
			
				|  |  | +    cmd(archiver, "repo-create", RK_ENCRYPTION)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    # Initially, no space should be reserved.
 | 
	
		
			
				|  |  | +    output = cmd(archiver, "repo-space")
 | 
	
		
			
				|  |  | +    assert "There is 0 B reserved space in this repository." in output
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    # Test reserving some space.
 | 
	
		
			
				|  |  | +    output = cmd(archiver, "repo-space", "--reserve", "100M")
 | 
	
		
			
				|  |  | +    # The actual size will be rounded up to a multiple of 64MiB blocks.
 | 
	
		
			
				|  |  | +    # For 100MB, it should be 128MiB (2 blocks) == 134.22MB.
 | 
	
		
			
				|  |  | +    assert "There is 134.22 MB reserved space in this repository now." in output
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    # Check that space is reserved.
 | 
	
		
			
				|  |  | +    output = cmd(archiver, "repo-space")
 | 
	
		
			
				|  |  | +    assert "There is 134.22 MB reserved space in this repository." in output
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    # Test freeing the space.
 | 
	
		
			
				|  |  | +    output = cmd(archiver, "repo-space", "--free")
 | 
	
		
			
				|  |  | +    assert "Freed 134.22 MB in repository." in output
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    # Check that no space is reserved.
 | 
	
		
			
				|  |  | +    output = cmd(archiver, "repo-space")
 | 
	
		
			
				|  |  | +    assert "There is 0 B reserved space in this repository." in output
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +def test_repo_space_modify_reservation(archivers, request):
 | 
	
		
			
				|  |  | +    archiver = request.getfixturevalue(archivers)
 | 
	
		
			
				|  |  | +    cmd(archiver, "repo-create", RK_ENCRYPTION)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    # Reserve some space.
 | 
	
		
			
				|  |  | +    output = cmd(archiver, "repo-space", "--reserve", "50M")
 | 
	
		
			
				|  |  | +    assert "There is 67.11 MB reserved space in this repository now." in output
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    # Check that space is reserved.
 | 
	
		
			
				|  |  | +    output = cmd(archiver, "repo-space")
 | 
	
		
			
				|  |  | +    assert "There is 67.11 MB reserved space in this repository." in output
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    # Reserve more space.
 | 
	
		
			
				|  |  | +    output = cmd(archiver, "repo-space", "--reserve", "100M")
 | 
	
		
			
				|  |  | +    assert "There is 134.22 MB reserved space in this repository now." in output
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    # Check that space is reserved.
 | 
	
		
			
				|  |  | +    output = cmd(archiver, "repo-space")
 | 
	
		
			
				|  |  | +    assert "There is 134.22 MB reserved space in this repository." in output
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    # note: --reserve can only INCREASE the amount of reserved space.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +def test_repo_space_edge_cases(archivers, request):
 | 
	
		
			
				|  |  | +    archiver = request.getfixturevalue(archivers)
 | 
	
		
			
				|  |  | +    cmd(archiver, "repo-create", RK_ENCRYPTION)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    # Test reserving 0 space (should not create any reservation).
 | 
	
		
			
				|  |  | +    output = cmd(archiver, "repo-space", "--reserve", "0")
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    # Check that no space is reserved.
 | 
	
		
			
				|  |  | +    output = cmd(archiver, "repo-space")
 | 
	
		
			
				|  |  | +    assert "There is 0 B reserved space in this repository." in output
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    # Test freeing when no space is reserved.
 | 
	
		
			
				|  |  | +    output = cmd(archiver, "repo-space", "--free")
 | 
	
		
			
				|  |  | +    assert "Freed 0 B in repository." in output
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    # Test reserving a very small amount of space (1KB).
 | 
	
		
			
				|  |  | +    # This should round up to at least one 64MiB block.
 | 
	
		
			
				|  |  | +    output = cmd(archiver, "repo-space", "--reserve", "1K")
 | 
	
		
			
				|  |  | +    assert "There is 67.11 MB reserved space in this repository now." in output
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    # Check that space is reserved (should be 64MiB).
 | 
	
		
			
				|  |  | +    output = cmd(archiver, "repo-space")
 | 
	
		
			
				|  |  | +    assert "There is 67.11 MB reserved space in this repository." in output
 |