Hiç boş disk alanı durumu simüle etmek kolay yolu?

12 Cevap php

Ben kalan hiçbir disk alanı var, bir senaryoda benim web uygulaması test etmek gerekir, yani ben artık dosyaları yazamıyor. Ama ben sadece sol boşluk orada gerçekten emin olmak için önemsiz benim sabit disk doldurmak istemiyorum. Ne istediğiniz belli bir süreci (aslında, bir PHP uygulaması) Withing bu durumu taklit etmektir.

Gerçekten de, geçici olarak disk bir işleme yazar yasaklayan yeterli olmalıdır.

Bunu yapmanın en kolay yolu nedir? Ben Mac OS X 10.6.2 kullanıyorum dahili Apache / PHP paket. Teşekkürler.

Edit: Disk boş alanı kontrol herhangi bir an değiştirebilir beri güvenilir olacak değildir. Birçok sayfa aynı anda servis ediliyor. Orada kontrol ederken yeterli boş alan olabilir, ama şu an tarafından hiçbiri aslında bir şey yazabilirsiniz. Benim app nasıl davranacaktır: Ayrıca, disk boş alanı kontrol ben Sonunda, bu çözüm ben test etmek için çalışıyorum ne tam tersidir :-) istediklerini olmayan bir dosyayı, yazmak her yerde kod değiştirme gerektirir bir daha yazamıyor.

12 Cevap

Ben de boy ... diyelim 2Mb dosya sistemi ile kendi. Dmg dosyasını oluşturmak ve buna yazabilirsiniz bahis. Bu çalışırsa, o test için süper-kolay - sadece montaj ve test için yolu açın. Dmg kadar küçük ise, büyük olasılıkla bile kaynak denetimi yükleyebilir.

Bunu yapmak için gereken zaman ben sanal diske ayrılan sınırlı alana sahip bir sanal makine yarattı.

No need to use a prefilled dummy filesystem.
Use disk_free_space() to mock the FileSystem

disk_free_space() - Given a string containing a directory, this function will return the number of bytes available on the corresponding filesystem or disk partition.

Simüle sadece bir FileSystem Sınıf içine işlevini sarın. Sonra bir bağımlılık olarak tasarruf yapıyor sınıfa enjekte ve gerçek tasarrufu yapmadan önce sürücü dolu olup olmadığını kontrol edin. Senin UnitTest yılında, sadece sınıf bir tam dosya sistemini alaycı ve bitirdiniz ile düzenli sınıf takas. Eğer tam disk sürücüsünü yeniden zorunda ya da proje ile sürücü tutmayın Bu şekilde sizin testini tekrar yapmak istediğinizde her zaman dosyaları, örneğin

class MyFileSystem
{
    public static function df($drive)
    {
        return disk_free_space($drive);
    }
}

ve tam FileSystem taklit yapmak

class MyFileSystemFull
{
    public static function df($drive)
    {
        return 0;
    }
}

Her zaman 0 dönmek için işlevi aşırı istiyorsanız, size runkit Pecl uzantısını kullanmak ve yapabilirdi:

runkit_function_redefine('disk_free_space','string','return 0;');

Içine bir alternatif görünüm olarak vfsStream:

vfsStream gerçek dosya sistemini taklit ünite testleri yararlı olabilir sanal bir dosya sistemi için bir akım sarıcı. Bu PHPUnit veya SimpleTest gibi herhangi bir birim test çerçeve ile kullanılabilir.

Ben süreci için hacim olarak, bir başparmak sürücü kullanılır.

Ben OSX ama Linux üzerinde bunu nasıl emin değilim, ben muhtemelen benim test kullanıcı disk kotası koymak ve daha sonra uygulamayı çalıştırmak istiyorum.

Ya da belki bir ext3 bölüm olarak biçimlendirmek, boş bir dosya (küçük bir) oluşturmak, loopback aygıtını kullanarak monte ve içindeki PHP uygulaması çalıştırmak. Bu alanı kısa olan bir fiziksel diske daha yakın olacaktır.

(Sınırlı boyutta) düzenli bir dosyada bir disk / dosya sistemi görüntüsü oluşturmak ve döngü monte.

Bunu yapıyor olacak ancak genellikle bunu yeniden kullanmak için bir sanal makine-You'Ll bulmak fırsatı yaratmak istiyorum.

Eğer bir Mock kullanmak, ve aslında görmeyi beklediğiniz istisna (ler) atmak bir sahte testi değiştirme ile, diske yazar kodunuzu bölümünü yerine değil mi?

recursively senin webfolder, klasörlerdeki tüm yazma izinlerini kaldıracak ve app yazmak için gidiyor dosyaları.

Alt satır; bunu yapmaz. Cidden - Bir birim alanı bittiğinde horribly terslik so many things o vardır. Hedeflenen hacmi not önyükleme birimi olduğunu ve not one other application writing to it olmadıkça, diski doldurur gibi davranış zaten sizin kontrolünüz dışında olacak.

Bu önyükleme sürücüsü ise, sistem zaten tam bir disk üzerine oldukça muhtemel panik veya kilitlenme olacak. Değilse ya, bu kararsız davranmasına olacak.

Bir veri hacmi hakkında konuşurken, sizin ona yazıyor only app? Herhangi başka bir uygulama yazıyor ise, know kesin onlar nasıl başarısız olabilir mi?

Disk alanı böylece kir ucuz Eğer out of disk space ne basitçe asla sağlamak çok daha iyi bu gün. Bir 2TB Sürücüyü düşürmeyin ve% 50 kapasiteye ulaştığında bir alarm koydu. (Zaman özgür olmadığı sürece) çok daha ucuz uygulamak ve çok daha güvenilir.

Sizinle-f mount-r denediniz mi? Gerçekten düşük disk alanı değil, ama aynı seviyede bir hata atmak gerekir.

Eğer kalan disk alanı elde olursanız olun, sadece açıklama ve böyle 0,1, 0, -1 gibi bir yedek değerleri ile uygulama çalıştırmak