2009-02-09 6 views
17

Tôi phải viết một kịch bản dơi cho một kịch bản thử nghiệm nơi phần mềm mà chúng tôi đang thử nghiệm không ghi vào tập tin do một lỗi đầy đủ đĩa. Kịch bản thử nghiệm phải được tự động hóa, để chúng tôi có thể chạy nó trên các bài kiểm tra qua đêm, ví dụ. Kịch bản thử nghiệm cũng phải hoạt động ở các máy tính khác nhau, vì vậy việc cài đặt một phần mềm như máy ảo sẽ không phải là giải pháp tốt nhất trong trường hợp này.Làm thế nào tôi có thể mô phỏng một lỗi đầy đĩa trong môi trường Windows?

Làm cách nào để mô phỏng lỗi đó trong môi trường Windows?

+0

Mọi người dường như bỏ qua việc bạn đã viết "kịch bản thử nghiệm". Điều đó có nghĩa với tôi, rằng bạn tìm kiếm một giải pháp hoạt động bất kể môi trường (thử nghiệm được thực hiện trên một máy tính khác). – Leonidas

+0

Leonidas: Cảm ơn các ý kiến. Tôi đã cập nhật câu hỏi. –

+0

Liên quan: [Cách dễ nhất để mô phỏng không có tình trạng không gian đĩa trống?] (Http://stackoverflow.com/q/2043999) – tchrist

Trả lời

11

Bạn có thể thử ghi vào đĩa mềm đầy đủ.

Edit:

Trong ánh sáng của câu hỏi đã chỉnh sửa của bạn, bạn có thể thiết lập một mạng chia sẻ không có hạn ngạch không gian đĩa và ghi vào đó. Lỗi sau đó sẽ được tạo ra bất kể người dùng hoặc máy đã đăng nhập.

+5

Hoặc, từ thế kỷ này, một đĩa USB đầy đủ. Phân vùng lại nếu cần. – gregmac

+1

+1 cho USB-disk/stick/bất cứ điều gì. Ai sẽ dành hàng giờ để đợi đĩa mềm phản ứng trong năm 2009? –

+4

Ai thậm chí còn có đĩa mềm nữa? Ý định là tốt, mặc dù xin lỗi vì đã sống vào năm 1990! :) –

6

Có vẻ như hơi nhiều, nhưng một điều tôi có thể nghĩ là sử dụng máy ảo và đặt đĩa ảo của nó thành đủ lớn để vừa với hệ điều hành. Điền nó với một số tập tin rác để lật nó qua cạnh, sau đó chạy chương trình của bạn.

5

Tạo phân vùng phụ, điền phân đoạn đó bằng rác và sau đó chạy chương trình của bạn tại đó.

+0

Có cách nào để viết một tập lệnh tự động hóa việc tạo phân vùng cấu hình không? –

+0

Alceu: nhiều phiên bản fdisk chấp nhận tham số dòng lệnh. –

2

Điều tốt nhất hoạt động trên mọi máy tính (khi thử nghiệm không được thực hiện trên máy chuyên dụng) sẽ là một đĩa RAM/ramdisk có thể được thiết lập khi đang di chuyển.

Chỉ tìm thấy một SDK đĩa ảo cho đến nay see here có thể có thể được bao gồm trong quá trình buzild của bạn.

Ý tưởng khác nhau: có thể máy tính thử nghiệm của bạn có thể được thiết lập để ghi vào một thư mục mạng chia sẻ (có đầy đủ) gắn kết làm ổ đĩa không?

2

Tạo tài khoản người dùng mới, đặt hạn ngạch cho nó và sử dụng runas để chạy ứng dụng của bạn với tư cách người dùng đó. (không chính xác giống như đĩa đầy đủ, nhưng cần phải có hậu quả tương tự.)

10

Tải xuống và cài đặt TrueCrypt. Sau đó bạn có thể tạo một phân vùng ảo có kích thước bất kỳ mà bạn muốn (một vài megabyte), gắn nó và sau đó điền nó với một vài tài liệu.

2

Hệ điều hành sẽ phản ứng khác với quá trình nạp ổ đĩa hệ thống của nó so với các ổ đĩa khác và vì vậy ứng dụng của bạn cũng sẽ làm như vậy, chắc chắn? Đơn giản chỉ cần điền vào một ổ đĩa không phân biệt những gì các phương tiện vật lý được sử dụng sẽ không phải là một thử nghiệm chính xác.

Bạn không thể giả lập sự kiện hệ thống tệp cho toàn bộ đĩa? Tại sao bạn muốn đợi cho đến khi đĩa đầy? Bạn sẽ không muốn theo dõi định kỳ không gian đĩa và cảnh báo người dùng khi đĩa có tỷ lệ phần trăm lấp đầy? Thay vì chờ cho đến khi không gian đĩa là thiết bị đầu cuối chỉ đơn giản là ngăn chặn ứng dụng của bạn làm việc cho đến khi vấn đề được giải quyết, không làm như vậy có thể ảnh hưởng đến bất kỳ dữ liệu IO và không thể phục hồi!

Nếu thử nghiệm là thử nghiệm tích hợp cứng, sau đó tự động hóa máy ảo, triển khai ứng dụng và sau đó lấp đầy không gian còn lại bằng tập lệnh đệ quy là khả thi.

4

Bạn có thể thiết lập một đĩa RAM nhỏ và ghi vào đó. Xem trang này cho một số free ramdisk products.

10

Đối với Windows XP trở lên:

Lệnh này có thể nhận được dung lượng miễn phí cho c: \ ổ đĩa:

for /f "usebackq tokens=1-5" %%A in (`dir c:\ ^| find "bytes free"`) do (
    set FREE_SPACE=%%C 
) 

Thay c: \ với ổ đĩa của bạn, khi cần thiết.

Sau đó bạn có thể mất một số không gian đi từ giá trị này để bạn có một căn phòng nhỏ để làm việc với:

set /a FREE_SPACE=FREE_SPACE-1024 

hay tuy nhiên nhiều không gian bạn muốn giữ lại miễn phí.

Bạn có thể sử dụng lệnh fsutil để tạo ra một tập tin để lấp đầy không gian trống trên đĩa:

fsutil file createnew c:\spacehog.dat %FREE_SPACE% 

Chạy thử nghiệm của bạn, bằng văn bản cho ổ đĩa. Sau khi bạn viết 1024 byte, bạn nên hết dung lượng.

+0

Đây là những gì tôi đã sử dụng và nó hoạt động rất tốt. XP của tôi cài đặt là một máy ảo, vì vậy tôi đã làm một ảnh chụp trước, fsutil, và thực hiện thử nghiệm của tôi. –

+0

Điều này sẽ chỉ wok nếu không gian miễn phí là ít hơn 2 GiB, mặc dù. Số học của 'cmd' bị hạn chế đối với các số nguyên đã ký 32 bit. Tôi đoán trong thập kỷ qua nó sẽ là kinda khó để tìm thấy rằng ít không gian miễn phí cho việc này để làm việc. – Joey

1

sử dụng một mục tiêu iSCSI rất nhỏ

2

Tôi đã thực hiện một sửa đổi để kịch bản ở trên để làm cho nó tương thích với Windows 7 ... Về cơ bản thêm công tắc "/ -c" để cho tuyên bố. Điều này loại bỏ các seperator hàng ngàn như fsutil không thích nó trong tuyên bố.

for /f "usebackq tokens=1-5" %%A in (`dir /-c d:\ ^| find "bytes free"`) do (set FREE_SPACE=%%C) 
fsutil file createnew d:\largefile.txt %FREE_SPACE% 
6

lựa chọn tốt nhất: Microsoft của tiêu thụ chương trình

Lý do:

  • kiểm tra đĩa hệ thống (vs một ổ đĩa riêng biệt)
  • Đó là nhanh - chạy chương trình để điền vào đĩa ngay lập tức, dừng khi không còn cần thiết
  • Thật dễ dàng - Không tạo và xóa tệp. Không có phân vùng thử nghiệm phụ nào được treo xung quanh. Cài đặt là bắt buộc, nhưng bạn có thể sử dụng một lệnh đơn giản sau đó.
  • Đó là kịch bản

bước:

  1. Cài đặt Windows Server 2003 Resource Kit Tools (Hoạt động tốt trên Windows 7)
  2. cd "%ProgramFiles(x86)%\Windows Resource Kits\Tools" (hoặc bất cứ nơi nào nó được cài đặt)
  3. consume.exe -disk-space

lệnh đầu ra:

C:\Program Files (x86)\Windows Resource Kits\Tools>consume.exe 
Universal Resource Consumer - Just an innocent stress program, v 0.1.0 
Copyright (c) 1998, 1999, Microsoft Corporation 

    consume RESOURCE [-time SECONDS] 

RESOURCE can be one of the following: 

    -physical-memory 
    -page-file 
    -disk-space 
    -cpu-time 
    -kernel-pool 


C:\Program Files (x86)\Windows Resource Kits\Tools>consume.exe -disk-space 
Consume: Message: Total disk space:   96049 Mb 
Consume: Message: Free disk space:   14705 Mb 
Consume: Message: Free per user space:  14705 Mb 
Consume: Message: Attempting to use:  14705 Mb 
Consume: Message: Reattempting to use:  14705 Mb 
Consume: Message: Sleeping ... 

Tùy chọn khác:

  • Windows 7 có một virtual hard drive feature.Về cơ bản thực hiện như sau: Quản lý máy tính> Quản lý đĩa> Menu tác vụ> Tạo VHD> Nhấp chuột phải vào đĩa và Khởi tạo> Nhấp chuột phải
  • Tạo tệp lớn (phải là tức thì) cho đến khi đĩa của bạn đầy bằng lệnh vỏ hoặc chương trình Dummy File Generator. Một sơ đồ khác: SpaceHog.
+1

Tính năng ổ cứng ảo trong Windows 7 đã thực hiện thủ thuật cho tôi. Tôi chỉ cần kiểm tra lỗi để tạo logic xử lý thích hợp. Tôi đã tạo VHD 10 MB. WIndows sổ sách kế toán mất khoảng 7 MB trên VHD, vì vậy khi tôi cố gắng để viết bất cứ điều gì lớn hơn 3 MB tập tin vào đĩa, nó spits ra lỗi. – Snapman