Pergunta

Eu quero garantir que meu aplicativo não tem nenhum congela UI quando trabalhando em arquivos no sistema de arquivos lenta (por exemplo, rede, CD / DVD ou girados para baixo HDD).

Eu estou usando operações do sistema de arquivos de cacau diretamente. Eu tenho medo que seria muito esforço para zombar ou todos abstrata de apenas para testar, e além disso não poderia haver maneiras não-óbvias em que meu programa toca sistema de arquivos.

Eu tentei usar unidades de rede para testar, mas caching OS faz testes não-repetíveis e ... muito rápido:)

Existe algo parecido deliberadamente lento filesystem MacFuse? Algum outro método que deixe-me encontrar todos os soluços de interface do usuário e condições de corrida causados ??por atrasos inesperados?

Foi útil?

Solução

A resposta mais fácil é MacFUSE como observado em outros lugares; isso é muito fácil de simular. Você também pode tentar montar um compartilhamento via NFS e então usar pouco estrangulando-lo usando o built-in ipfw, como:

tubulação ipfw 1 configuração 1 KByte / s ipfw adicionar 1 tubo 1 src-port 2049

ou se você estiver usando WebDAV

ipfw adicionar 1 tubo 1 src-port 80

Este, então, conta-gotas os pedidos através de em qualquer nível da tubulação que você definiu. Você deve ser capaz de se livrar dele novamente depois com:

ipfw excluir 1

Outras dicas

Talvez comprar um pen drive lento? Eu encontrei alguns na Best Buy que foram glacial. Ligá-los através de vários hubs USB e talvez um teclado, bem, então eles estarão em uma conexão muito limitado.

-W

Escrevendo um sistema de arquivos MacFUSE com o seu quadro de cacau é absolutamente fácil. Na verdade eu acho que há ainda um sistema de exemplo incluído que apenas espelhos do sistema de arquivos local. Por que não se adaptar rapidamente que o código para que ele chama sleep () por um momento durante cada operação?

Dependendo de onde você está preocupado sobre ter problemas, o meu primeiro pensamento seria apenas para incluir uma camada extra de chamadas de funções entre o aplicativo eo arquivo i / o, e nesse construção camada em alguns sono (chamadas). Ou seja, qualquer linguagem que você está usando, substituir a chamada "ler" com "readDelegate", e deixe readDelegate sono por algum período de tempo especificado, em seguida, fazer a leitura real e retornar o valor. Quando estiver pronto para ir para produção, você nem sequer tem que retirar a camada extra, basta remover o sono.

Como cerca de uma unidade de disquete? Deve haver os externos que você pode simplesmente conectar via USB ou assim ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top