The Canadian Military has a merit based system with a number of years before you can qualify for promotion to the next rank.
As an example once enrolled a soldier has the rank of Private Recruit and progresses to in pay only for the next four years, when there is an automatic promotion to Corporal.
A Private, however can get promoted to Master Corporal prior to that with a recommendation by his Commanding Officer. The rank of Corporal/Mastercorporal must be held for four years before being eligible for promotion to Sergeant.
Then 3 years are needed before progression to Warrant Officer (Staff Sergeant in Britain).
It goes on like that to Master Warrant Officer and finally Chief Warrant Officer.
On the Officer side of things, an officer is commissioned in the rank of Lieutenant and promotion to Captain is almost automatic, with very few exceptions.
from Captain to Major requires a minimum of 4 years in the rank of Captain and the promotion is based on merit as are all promotions thereafter.
Within the infantry regiments there are regimental merit boards for Other ranks and Officers. These merit boards normally consist of the Regimental Executive Committee along with a member of National Defence Headquarters. Each performance evaluation report is reviewed and given a score of 1-10, including potential, which includes second language proficiency (French and English). Based on these scores a merit list is established for the following year and off which officers are promoted.
Depending on the vacancies people are then promoted to the next rank. If you miss out on that promotion year, you don't necessarily stay on top of the merit list, but the process starts again the following year.
Other rank promotions are handled in a similar process.
So the short answer to your question is, it is relatively difficult, but for the most part fair. The reason for this is that the Canadian Forces are small enough that members being reviewed by the boards are known to the Board members.