{"action":"closed","issue":{"url":"https://api.github.com/repos/PerfDotNet/BenchmarkDotNet/issues/57","repository_url":"https://api.github.com/repos/PerfDotNet/BenchmarkDotNet","labels_url":"https://api.github.com/repos/PerfDotNet/BenchmarkDotNet/issues/57/labels{/name}","comments_url":"https://api.github.com/repos/PerfDotNet/BenchmarkDotNet/issues/57/comments","events_url":"https://api.github.com/repos/PerfDotNet/BenchmarkDotNet/issues/57/events","html_url":"https://github.com/PerfDotNet/BenchmarkDotNet/issues/57","id":119702813,"number":57,"title":"Make Benchmark, Setup and Params attribute sealed in explicit way","user":{"login":"smudge202","id":2247869,"avatar_url":"https://avatars.githubusercontent.com/u/2247869?v=3","gravatar_id":"","url":"https://api.github.com/users/smudge202","html_url":"https://github.com/smudge202","followers_url":"https://api.github.com/users/smudge202/followers","following_url":"https://api.github.com/users/smudge202/following{/other_user}","gists_url":"https://api.github.com/users/smudge202/gists{/gist_id}","starred_url":"https://api.github.com/users/smudge202/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/smudge202/subscriptions","organizations_url":"https://api.github.com/users/smudge202/orgs","repos_url":"https://api.github.com/users/smudge202/repos","events_url":"https://api.github.com/users/smudge202/events{/privacy}","received_events_url":"https://api.github.com/users/smudge202/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/PerfDotNet/BenchmarkDotNet/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"closed","locked":false,"assignee":{"login":"adamsitnik","id":6011991,"avatar_url":"https://avatars.githubusercontent.com/u/6011991?v=3","gravatar_id":"","url":"https://api.github.com/users/adamsitnik","html_url":"https://github.com/adamsitnik","followers_url":"https://api.github.com/users/adamsitnik/followers","following_url":"https://api.github.com/users/adamsitnik/following{/other_user}","gists_url":"https://api.github.com/users/adamsitnik/gists{/gist_id}","starred_url":"https://api.github.com/users/adamsitnik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adamsitnik/subscriptions","organizations_url":"https://api.github.com/users/adamsitnik/orgs","repos_url":"https://api.github.com/users/adamsitnik/repos","events_url":"https://api.github.com/users/adamsitnik/events{/privacy}","received_events_url":"https://api.github.com/users/adamsitnik/received_events","type":"User","site_admin":false},"assignees":[{"login":"adamsitnik","id":6011991,"avatar_url":"https://avatars.githubusercontent.com/u/6011991?v=3","gravatar_id":"","url":"https://api.github.com/users/adamsitnik","html_url":"https://github.com/adamsitnik","followers_url":"https://api.github.com/users/adamsitnik/followers","following_url":"https://api.github.com/users/adamsitnik/following{/other_user}","gists_url":"https://api.github.com/users/adamsitnik/gists{/gist_id}","starred_url":"https://api.github.com/users/adamsitnik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adamsitnik/subscriptions","organizations_url":"https://api.github.com/users/adamsitnik/orgs","repos_url":"https://api.github.com/users/adamsitnik/repos","events_url":"https://api.github.com/users/adamsitnik/events{/privacy}","received_events_url":"https://api.github.com/users/adamsitnik/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/PerfDotNet/BenchmarkDotNet/milestones/9","html_url":"https://github.com/PerfDotNet/BenchmarkDotNet/milestones/v0.9.8","labels_url":"https://api.github.com/repos/PerfDotNet/BenchmarkDotNet/milestones/9/labels","id":1794775,"number":9,"title":"v0.9.8","description":"","creator":{"login":"AndreyAkinshin","id":2259237,"avatar_url":"https://avatars.githubusercontent.com/u/2259237?v=3","gravatar_id":"","url":"https://api.github.com/users/AndreyAkinshin","html_url":"https://github.com/AndreyAkinshin","followers_url":"https://api.github.com/users/AndreyAkinshin/followers","following_url":"https://api.github.com/users/AndreyAkinshin/following{/other_user}","gists_url":"https://api.github.com/users/AndreyAkinshin/gists{/gist_id}","starred_url":"https://api.github.com/users/AndreyAkinshin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AndreyAkinshin/subscriptions","organizations_url":"https://api.github.com/users/AndreyAkinshin/orgs","repos_url":"https://api.github.com/users/AndreyAkinshin/repos","events_url":"https://api.github.com/users/AndreyAkinshin/events{/privacy}","received_events_url":"https://api.github.com/users/AndreyAkinshin/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":22,"state":"open","created_at":"2016-05-29T20:45:16Z","updated_at":"2016-07-07T00:00:46Z","due_on":"2016-07-06T21:00:00Z","closed_at":null},"comments":1,"created_at":"2015-12-01T12:04:47Z","updated_at":"2016-07-07T00:00:45Z","closed_at":"2016-07-07T00:00:45Z","body":"In essence, the following two signatures are in contradiction with one another:\r\n\r\n`GetCustomAttributes`: https://github.com/PerfDotNet/BenchmarkDotNet/blob/a2338ce6d6b971e0e7599ffc178fb90f2db1dacd/BenchmarkDotNet/Tasks/BenchmarkTask.cs#L25 (and line 27)\r\n\r\n`BenchmarkTaskAttribute`:\r\nhttps://github.com/PerfDotNet/BenchmarkDotNet/blob/a2338ce6d6b971e0e7599ffc178fb90f2db1dacd/BenchmarkDotNet/Tasks/BenchmarkTaskAttribute.cs#L6\r\n\r\nThe attribute is not sealed (can be inherited) but discovery will not find inherited attributes. We should pick one way or t'other.\r\n\r\n@Metallium in gitter has been asking for a simple way to configure shorter/low load benchmarks, which @mattwarren suggest could be done as follows:\r\n\r\n```c#\r\n[BenchmarkTask(mode: BenchmarkMode.SingleRun, processCount: 1, warmupIterationCount: 1, targetIterationCount: 1)] \r\n\\\\i.e. \"SingleRun\"`\r\n```\r\n\r\nThis could be made simpler still by inheriting from `BenchmarkTask` and predefining the above settings in the base .ctor.\r\n\r\nTherefore, I recommend we go for keeping the attribute unsealed, and changing the `GetCustomAttribute` calls, as opposed to the other way around."}}
{"actor":{"display_login":"AndreyAkinshin"}}