Решение на Concurrent Crawling от Илия Ячев
Резултати
- 8 точки от тестове
- 0 бонус точки
- 8 точки общо
- 9 успешни тест(а)
- 2 неуспешни тест(а)
Код
Лог от изпълнението
[/tmp/go-build810962746/_/tmp/d20150111-16649-147k0kc/_test/d20150111-16649-147k0kc.test -test.run=TestWithNegativeWorkersCount -test.timeout=120s] PASS ok _/tmp/d20150111-16649-147k0kc 0.008s [/tmp/go-build059095926/_/tmp/d20150111-16649-147k0kc/_test/d20150111-16649-147k0kc.test -test.run=TestWithZeroWorkersCount -test.timeout=120s] PASS ok _/tmp/d20150111-16649-147k0kc 0.008s [/tmp/go-build291736398/_/tmp/d20150111-16649-147k0kc/_test/d20150111-16649-147k0kc.test -test.run=TestWithInvalidCallback -test.timeout=120s] --- FAIL: TestWithInvalidCallback-2 (1.00 seconds) solution_test.go:43: Test exceeded allowed time of 1 seconds: parameter errors should be immediately returned (callback is nil) FAIL exit status 1 FAIL _/tmp/d20150111-16649-147k0kc 1.006s [/tmp/go-build842532904/_/tmp/d20150111-16649-147k0kc/_test/d20150111-16649-147k0kc.test -test.run=TestWithNilChannel -test.timeout=120s] --- FAIL: TestWithNilChannel-2 (1.00 seconds) solution_test.go:43: Test exceeded allowed time of 1 seconds: parameter errors should be immediately returned (channel is uninitialized) FAIL exit status 1 FAIL _/tmp/d20150111-16649-147k0kc 1.005s [/tmp/go-build008400866/_/tmp/d20150111-16649-147k0kc/_test/d20150111-16649-147k0kc.test -test.run=TestWithClosedChannelWhenStarting -test.timeout=120s] PASS ok _/tmp/d20150111-16649-147k0kc 0.008s [/tmp/go-build472705927/_/tmp/d20150111-16649-147k0kc/_test/d20150111-16649-147k0kc.test -test.run=TestWithClosedChannelMidway -test.timeout=120s] PASS ok _/tmp/d20150111-16649-147k0kc 5.006s [/tmp/go-build739952414/_/tmp/d20150111-16649-147k0kc/_test/d20150111-16649-147k0kc.test -test.run=TestWhetherGlobalTimeoutIsHandled -test.timeout=120s] PASS ok _/tmp/d20150111-16649-147k0kc 15.006s [/tmp/go-build633582201/_/tmp/d20150111-16649-147k0kc/_test/d20150111-16649-147k0kc.test -test.run=TestWithLoremIpsum -test.timeout=120s] PASS ok _/tmp/d20150111-16649-147k0kc 2.009s [/tmp/go-build873072232/_/tmp/d20150111-16649-147k0kc/_test/d20150111-16649-147k0kc.test -test.run=TestIfTimeoutAndErrorCodesAreHonoured -test.timeout=120s] PASS ok _/tmp/d20150111-16649-147k0kc 8.009s [/tmp/go-build352670434/_/tmp/d20150111-16649-147k0kc/_test/d20150111-16649-147k0kc.test -test.run=TestRaceCondition -test.timeout=120s] PASS ok _/tmp/d20150111-16649-147k0kc 1.007s [/tmp/go-build175133481/_/tmp/d20150111-16649-147k0kc/_test/d20150111-16649-147k0kc.test -test.run=TestCloseChannelBeforeFinish -test.timeout=120s] PASS ok _/tmp/d20150111-16649-147k0kc 1.006s
История (9 версии и 5 коментара)
Илия обнови решението на 05.12.2014 07:09 (преди над 3 години)
Илия обнови решението на 05.12.2014 07:10 (преди над 3 години)
Илия обнови решението на 05.12.2014 07:16 (преди над 3 години)
Илия обнови решението на 05.12.2014 07:21 (преди над 3 години)
Илия обнови решението на 05.12.2014 07:22 (преди над 3 години)
Забравил си да добавиш timout-а на http заявките - виждам го като коментар, но по някаква причина не си го добавил в опциите на http client-а :)
Бях го сложил в коментар, понеже когато го commit-вах Кирил още не беше ъпдейтнал go до 1.3 и evans ми казваше, че имам синтактична грешка. Понеже сегашната ми имплементация не убива горутините когато намери резултат планирах да си пренапиша задачата и затова не съм направил commit само с откоментирането на Timeout-a.
Ок, но ако не успееш да я пренапишеш, поне си добави обратно кода за timeout :)
ок :)
Илия обнови решението на 11.12.2014 15:22 (преди над 3 години)
Илия обнови решението на 11.12.2014 16:03 (преди над 3 години)
Илия обнови решението на 11.12.2014 16:07 (преди над 3 години)
Сега само се надявам новата имплементация да не е много бъгава.
Очевидно щеше да е по-добре да си направя wrapper на клиента, който се занимава с повечето работа, но пренаписването отново непосредствено преди крайния срок е опасно.
А 8ми декември не помогна да си пишем домашните навреме.